LICENCIATURA EM ENGENHARIA ELECTROTÉCNICA E DE COMPUTADORES TELEVISÃO DIGITAL 2005/06 Influência do Tamanho do Bloco na DCT Autores: Carlos Graf Nuno Lima Grupo 4 Novembro de 2005
ÍNDICE 1. INTRODUÇÃO... 3 2. ALGORITMO... 3 3. RESULTADOS... 4 Interface Gráfica... 4 Variação do tamanho do bloco... 5 Imagem: russell_crowe03.jpg (376x220)... 5 Imagem: bridge512x512.tif (512x512)... 6 Variação da Matriz de Quantização para o mesmo tamanho de bloco... 8 Imagem: gray_scale_01.gif (800x600)... 8 Imagem: SpaceJam_michael.jpg (720x540)... 9 4. CONCLUSÕES... 10 Variação do tamanho do bloco... 10 Variação da Matriz de Quantização... 10 ANEXO... 11 2
1. INTRODUÇÃO O objectivo principal deste trabalho consiste no estudo da influência do tamanho do bloco da DCT utilizado na compressão de imagens. A DCT (Discrete Cosine Transform) é a responsável pelo início dos estudos de compressão de imagem, através da perda de qualidade, tirando partido das limitações do olho humano. O JPEG (Joint Photographic Expert Group) foi o grande responsável pelo início da utilização desta poderosa ferramenta na década de oitenta, dando origem ao formato actualmente mais utilizado na compressão de imagens fotográficas. A DCT pertence à mesma família de operações matemáticas que a FFT (Fast Fourier Transform) e consiste na conversão de um sinal com representação espacial numa representação nas frequências. Através desta representação podemos tirar partido da menor sensibilidade do olho humano às variações nas altas frequências (reduzindo resolução a estes valores) e mantendo (ou reduzindo em menor ordem) a resolução às baixas frequências onde o olho é mais sensível). Por questões de eficiência e de facilidade de utilização, a DCT não é aplicada por inteiro à imagem mas sim em pequenos blocos de tamanho fixo resultantes da divisão da imagem nestes mesmos blocos. Em certos formatos de compressão são utilizados, também, blocos variáveis baseados nas estatísticas da imagem. O facto de todos os valores da DCT não serem correlacionados torna esta ferramenta bastante eficaz pois permite analisar cada um dos parâmetros independentemente. O facto de ser efectuada uma quantização nos blocos da DCT vai originar a perda de parte dos seus coeficientes. Daí o interesse e a necessidade de se estudar a aplicação da DCT com diferentes tamanhos de bloco em diferentes tipos de imagens de forma a determinar as vantagens e inconvenientes de cada tamanho. O aumento do tamanho do bloco da imagem aumenta o detalhe desta mas apresenta efeito de blocking em que a imagem apresenta-se construída por ladrilhos perceptíveis facilmente. Ao serem utilizados blocos pequenos a imagem perde detalhe mas não se tem a percepção visual dos blocos. O bloco a utilizar em relação ao tipo de imagem é o objectivo deste trabalho. 2. ALGORITMO O algoritmo utilizado neste trabalho foi desenvolvido numa plataforma Matlab. O algoritmo é baseado em trabalho desenvolvidos em anos anteriores e é descrito de seguida: 1. Importar a imagem para uma variável Matlab; 2. Alterar o tamanho da matriz de quantização de forma a corresponder ao tamanho escolhido; 3. Se a imagem for a preto e branco: a. dividir a imagem em blocos com o tamanho desejado; b. obter a imagem compactada; 3
c. calcular a DCT de cada bloco e dividir cada termo pelo valor da mesma posição da matriz de quantização e obter o inteiro mais próximo; d. obter a imagem reconstruída com base na compactada; e. multiplicar cada valor do bloco pelo valor da matriz de quantização correspondente; f. realizar a IDCT (DCT inversa); 4. Se a imagem for a cores: a. Converter a imagem RGB em YCrCb luminância e crominância; b. obter uma matriz para cada componente da imagem; c. alterar a matriz de quantização para crominâncias (em JPEG); d. dividir cada matriz em blocos com o tamanho desejado; e. obter a imagem compactada e calcular a DCT de cada bloco em todas as componentes; f. dividir cada termos da DCT pelo valor correspondente na matriz de quantização e obter o inteiro mais próximo. No caso do JPEG a matriz de quantização é diferente para as crominâncias e as luminâncias. g. obter a imagem reconstruída com base na imagem compactada; h. multiplicação de cada valor pelo valor da matriz correspondente; i. realizar a IDCT; j. juntar as matrizes (Y, Cb e Cr) numa só imagem; 5. produzir os gráficos de energia cumulativa. 3. RESULTADOS Interface Gráfica Para realizar este trabalho foi reconstruída uma interface gráfica através da ferramenta GUI presente no Matlab. A interface no módulo GUI está representada de seguida. 4
Variação do tamanho do bloco Imagem: russell_crowe03.jpg (376x220) Imagem Original DC JPEG 5
MPEG Uniforme Imagem: bridge512x512.tif (512x512) Imagem Original 6
DC JPEG MPEG 7
Uniforme Variação da Matriz de Quantização para o mesmo tamanho de bloco Imagem: gray_scale_01.gif (800x600) Original DC 2x2 JPEG 2x2 8
MPEG 2x2 Uniforme 2x2 Imagem: SpaceJam_michael.jpg (720x540) Original DC 2x2 JPEG 2x2 MPEG 2x2 Uniforme 2x2 9
4. CONCLUSÕES Variação do tamanho do bloco Tal como o previsto inicialmente, o aumento do tamanho do bloco aumenta o detalhe da imagem mas visualiza-se o efeito de blocking realçando as transições entre blocos. Na imagem a preto e branco escolhida este efeito não é tão notório nos formatos MPEG e JPEG o que nos leva a concluir que estas normas de compressão têm um comportamento aceitável no que diz respeito a imagens preto e branco. Na imagem a cores escolhida para este teste é bem visível o efeito de blocking em especial nas zonas onde há transições de cor bem acentuadas. Com os blocos de 2x2 e 4x4 os resultados obtidos não são satisfatórios na grande maioria dos casos evidenciando a necessidade da utilização de blocos de tamanho superior. O bloco 8x8 é aquele onde se obtêm resultados melhores de forma geral, porém a utilização de blocos de 64x64 deverá ser utilizada quando tratamos imagens de grande resolução, onde o efeito de blocking não é facilmente perceptível. Verificou-se que blocos muito pequenos aumentam a definição em zonas de transição, mas são prejudicais em zonas mais homogéneas. Por sua vez, os blocos de maiores dimensões têm melhor desempenho em áreas mais homogéneas, mas as transições ficam esbatidas perdendo-se detalhes da imagem. Os blocos mais pequenos (ex: 4x4) em zonas de alto detalhe e grandes variações de contraste, aumentam a qualidade visual. Os blocos maiores (ex: 16x16) são aconselhados em zonas mais uniformes com pouca variação de contraste e pouco detalhe. Para obter o maior rendimento de compressão sem prejudicar muito a qualidade de imagem deve-se utilizar um algoritmo que identifique as zonas da imagem que contêm mais ou menos variação de contrastes, aplicando as zonas de maior variação blocos pequenos (ex: 4x4 ou 8x8) e nas zonas mais homogéneas, blocos maiores (ex:16x16 ou 32x32), conseguindo assim uma compressão da imagem sem prejudicar a qualidade. Variação da Matriz de Quantização Nos testes de variação da matriz de quantização verificou-se o melhor comportamento em todos os casos da matriz JPEG. A matriz MPEG produz bons resultados de definição mas apresenta, de uma forma geral, uma alteração das cores originais da imagem e um efeito de granularidade mais evidente nas zonas de grande transição de tonalidades. Nas matrizes DC e Uniforme é visível o efeito de bloco em especial no caso de DC. No caso da matriz Uniforme há uma elevada granularidade nos blocos que contêm transições significativas nas cores. De uma forma geral a matriz JPEG com um bloco de 8x8 é aquela que produz melhores resultados. Para se obterem resultados melhores do que os obtidos pode sempre optar-se pela utilização de uma matriz de tamanho variável consoante a zona da imagem a tratar. 10
ANEXO Matrizes de Quantização utilizadas (8x8) JPEG [16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99] Uniforme [ ] MPEG [ 8 16 19 22 26 27 29 34 16 16 22 24 27 29 34 37 19 22 26 27 29 34 34 38 22 22 26 27 29 34 37 40 22 26 27 29 32 35 40 48 26 27 29 32 35 40 48 58 26 27 29 34 38 46 56 69 27 29 35 38 46 56 69 83] DC [1 10000000 10000000 10000000 10000000 10000000 10000000 10000000 ] 11