Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Curso de Bacharelado de Ciência da Computação
JONAS FRIEDRICH
UM MÉTODO DE COMPACTAÇÃO DE IMAGENS ATRAVÉS DE BUSCA POR BLOCOS SEMELHANTES
Canoas, 2009
2
JONAS FRIEDRICH
UM MÉTODO DE COMPACTAÇÃO DE IMAGENS ATRAVÉS DE BUSCA POR BLOCOS SEMELHANTES
Trabalho de conclusão de curso apresentado para a banca examinadora do curso de Ciência da Computação do Centro Universitário La Salle – Unilasalle, como exigência parcial para obtenção do grau de Bacharel em Ciência da Computação, sob orientação do Prof. Me. Mozart Lemos Siqueira.
CANOAS, 2009
3
TERMO DE APROVAÇÃO
JONAS FRIEDRICH
UM MÉTODO DE COMPACTAÇÃO DE IMAGENS ATRAVÉS DE BUSCA POR BLOCOS SEMELHANTES
Trabalho de conclusão aprovado como requisito parcial para obtenção do grau de Bacharel do curso de Ciência da Computação do Centro Universitário LaSalle -
Unilasalle, pela seguinte banca examinadora:
__________________________________ Prof. Me. Neide Pizzolato Ângelo
Unilasalle
__________________________________ Prof. Dra. Márcia Häfele Islabão Franco
Unilasalle
Canoas, 05 de novembro de 2007.
4
DEDICATÓRIA
Dedico este trabalho de Conclusão:
Aos meus Pais, João e Denise por toda confiança e dedicação que deram para mim.
Ao meu Irmão Vitor, pelo apoio e toda amizade que me propiciou.
À minha Vó Tereza, por toda ajuda e suporte.
À minha Vó Irene.
Aos meus Tios, Tias, primos e primas
E aos amigos
5
AGRADECIMENTOS
Agradeço aos meus Pais, João e Denise pela inigualável ajuda, incentivo, confiança,
atenção, compreensão, carinho e Amor. Por serem a minha base e por sempre
tentarem mostrar o caminho certo, para que seu filho pudesse trilhar boas estradas.
Sem dúvida, foram fundamentais para que eu pudesse chegar até aqui, pois foram a
base da minha educação.
Agradeço ao meu Irmão Vitor, pela parceria, amizade, Amor e por ser um irmão tão
bom.
Agradeço a minha Vó Tereza, pelo carinho, atenção e Amor. Por sempre se
prontificar e fazer coisas boas para mim.
Agradeço ao meu professor orientador Mozart, pela ajuda e apoio durante o
desenvolvimento deste trabalho.
6
RESUMO
Este trabalho descreve o estudo, a implementação e a análise de uma técnica de compressão de imagens, baseada em técnicas de compressão de vídeo, tais como predição intra-frame e compensação de movimento. Apresenta conceitos do processamento de imagens relacionados ao tema e descreve detalhadamente como o codificador faz a busca por blocos semelhantes dentro da imagem. A partir dos resultados obtidos deste codificador, foram feitas análises comparativas verificando em quais situações o codificador deste trabalho é superior. Este trabalho leva em consideração, como medição de comparação o tamanho final da imagem após o processo de compressão e qualidade da imagem após sua reconstrução. O tempo de processamento não é levado em consideração. PALAVRAS CHAVE: Compressão. Imagem. Predição intra-frame. Compensação de movimento
ABSTRACT
This work describes the study, the implementation and the analisys of images compression techniques, based on video compression techniques like intra frame prediction and motion compensation. Introduces the image processing involved concepts and describes details about how the encoder search similar blocks in the image. After the obtained encoder results, some comparative analisys has been done to check the situations that the enconder is superior. This work use the image size and the PSNR to scale and check to compare and analyse the image results. The through-put time is anused. KEYWORDS: Compression. Image. Intra-frame prediction. Motion compensation.
7
LISTA DE ABREVIATURAS
BbBS – Busca por Blocos Semelhantes
BMP – Bitmap
CIF – Common Intermediate Format.
dB – decibéis
DCT – Discrete Cosine Transform
FS – Busca Exaustiva (Full Search)
GIF – Graphics Interchange Format
JPEG – Join Photographic Experts Group
JPG – Join Photographic Group
HD – Disco Rígido (Hard Disk)
MATLAB – Matrix Laboratory
MAD – Diferença Média Absoluta
MSE – Menor Erro Quadrático (Mean Square Error)
NTSC – National Television System Committee
PSNR – Peak Signal-to-Noise Ratio
RAM – Random Access Memory
RGB – Red Green Blue
SDA – Soma das diferenças Absolutas
YUV – Luminância, intensidade de vermelho, intensidade de azul
Y-PSNR – Luminância do componente Y
8
LISTA DE FIGURAS
Figura 1 – Distribuição de freqüências. ....................................................................18
Figura 2 – Matriz de quantização do JPEG..............................................................18
Figura 3 – Procura por blocos parecidos em quadros distintos...............................21
Figura 4 – Subtração de blocos................................................................................22
Figura 5 – Modos de predicação intra frame............................................................23
Figura 6 – Montagem de blocos a partir de blocos vizinhos.....................................24
Figura 7 – Montagem do bloco a partir do modo 8...................................................24
Figura 8 – Árvore de Codificação .............................................................................26
Figura 9 – Comparação de qualidade Alcançada, PSNR por Bpp. ..........................28
Figura 10 – Comparação do h.264 com M-JPEG200 e PACC.................................29
Figura 11 – Codificador. ...........................................................................................32
Figura 12 – Exemplo de imagem dividida pixel a pixel.............................................33
Figura 13 – Imagem residual da Lena......................................................................35
Figura 14 – Decodificador. .......................................................................................37
Figura 15 – Imagem original e reconstruída da Lena. ..............................................38
Figura 16 – Gráfico resolução versus tamanho (bytes) das imagens Avião, Golden,
Lenna, Sandiego. ..................................................................................42
Figura 17 – Blocos residuais da imagem Sandiego na resolução 512. ....................44
Figura 18 – Gráfico resolução versus tamanho (bytes) na imagem Elaine. .............45
Figura 19 – Gráfico resolução versus tamanho (bytes) da imagem Gray21. ...........46
Figura 20 – Gráfico resolução versus tamanho (bytes) da imagem Triângulos........47
Figura 21 – Blocos residuais da imagem Triângulos na resolução 512. ..................48
Figura 22 – Gráfico resolução versus tamanho (bytes) da imagem Textmos2.........49
Figura 23 – Tonalidade de cores para a imagem Triângulos. ..................................50
9
LISTA DE TABELAS
Tabela 1 – Sistema de cor RGB....................................................................... 15
Tabela 2 – Vetor de posições........................................................................... 35
Tabela 3 – Resumo dos resultados dos testes................................................. 41
10
SUMÁRIO
1 INTRODUÇÃO ......................................................................................................11
1.1 Estrutura do Trabalho.......................... ............................................................12
2 PROCESSAMENTO DE IMAGENS......................... .............................................14
2.1 Sistema de cores RGB........................... ..........................................................15
2.2 Sistema de cores YUV........................... ...........................................................16
2.3 Compressão de Imagens.......................... .......................................................16
2.3.1 Processo de compressão de imagens ............................................................17
2.4 Compressão de vídeos ........................... .........................................................19
2.4.1 Compensação de movimento..........................................................................20
2.4.2 Predição Intra-Frame ......................................................................................23
2.5 Huffman........................................ .....................................................................25
3 TRABALHOS RELACIONADOS........................... ...............................................27
4 METODOLOGIA ...................................... .............................................................30
4.1 Codificador .................................... ...................................................................31
4.2 Decodificador .................................. .................................................................37
4.3 Métricas utilizadas ............................ ...............................................................38
5 TESTES E RESULTADOS .............................. .....................................................40
5.1 Teste – Imagens avião, golden, lenna e sandiego .........................................42
5.2 Teste – Imagem Elaine.......................... ...........................................................44
5.3 Teste – Imagens gray21, textmos2 e triângulos .. ..........................................46
6 CONCLUSÃO ........................................ ...............................................................51
6.1 Contribuições .................................. .................................................................52
6.2 Trabalhos Futuros.............................. ..............................................................52
REFERÊNCIAS........................................................................................................54
APÊNDICE A – TABELA DE TESTES COM RESULTADOS DO MÉT ODO JPEG57
APÊNDICE B – TABELA DE TESTES COM RESULTADOS DO MÉT ODO BPBS58
ANEXO A – IMAGENS UTILIZADAS PARA OS TESTES NOS MÉT ODOS JPEG E
BPBS ............................................... ........................................................................59
11
1 INTRODUÇÃO
Nos dias de hoje, o processamento de imagens digitais vem sendo utilizado
com muita freqüência em diferentes campos da ciência como, na observação do
espaço, imagens médicas para diagnóstico, sensoriamento remoto. Além disso,
através das ferramentas desenvolvidas com técnicas de processamento de imagens
digitais é possível fazer uso da biometria para o reconhecimento de indivíduos em
ambientes que necessitam de uma segurança mais criteriosa.
Quando uma imagem com qualidade fotográfica, ou seja, sem nenhum tipo de
compressão, é armazenada, é requerida uma grande quantidade de memória para o
seu armazenamento. Tornando dessa maneira a manipulação ou a visualização
dessa imagem um processo desgastante para o computador.
Da mesma maneira, para a transmissão de uma imagem via internet sem
nenhum tipo de compressão, teria um aumento significativo da banda necessária. A
partir do uso crescente da internet e, por conseguinte de um aumento na
transmissão tanto de imagens quanto de vídeos, foi necessário então a redução do
tamanho destas imagens.
Este processo de diminuição do tamanho de dados armazenados ou
transmitidos é chamado de compressão, utilizado em imagens e igualmente em
textos, e visa sempre manter certa fidelidade ao dado original, dependendo da
qualidade que será exigida.
Desta maneira é possível diferenciar dois tipos de compressão de imagens em
relação a sua fidelidade: Compressão com perdas e compressão sem perdas. Os
dois são amplamente utilizados (GONZALES, 1992).
A base do processo de redução é a remoção de dados redundantes
(GONZALES, 1992). O conhecimento das características da visão humana serve de
base para o desenvolvimento de métodos de compressão com perdas (FERRAZ,
12
1998). Então, uma vez que se possuí a imagem digital, pode-se além de remover os
dados redundantes, analisar a imagem e remover dados que não seriam percebidos
pelo olho humano. É desta maneira que a compressão de imagens é feita.
Com o objetivo de reduzir a redundância de dados em vídeo, em padrões como
o h.264, são utilizadas técnicas que procuram regiões iguais ou parecidas, tanto no
quadro atual quanto em quadros passados e futuros. Esta procura no quadro atual é
chamada de predição intra-frame. Já a procura por redundância em quadros
passados e futuros é chamado de predição inter-frame ou compensação de
movimento (RICHARSON, 2003). Os detalhes sobre o funcionamento dessas
técnicas serão expostos no capítulo 3.
A partir destas constatações, de que existem técnicas que se preocupam com
a redundância de dados tanto em quadros passados e futuros quanto em quadros
atuais, que são quase exclusivamente utilizadas em padrões de compressão de
vídeos e não são comumente utilizadas em compressão de imagens, é possível
dizer que esses são os pontos-chave para a motivação desta pesquisa.
O objetivo principal desta pesquisa é apresentar uma solução que faz uso de
funcionalidades da predição intra-frame e da compensação de movimento,
alterando-as a fim de aplicá-las em padrões de compressão de imagens já
existentes como o JPEG.
Para saber a eficiência da técnica que foi implementada, foram utilizadas
medidas para verificar a qualidade de uma determinada imagem em relação a sua
original, como o PSNR (SILVA JR, 1993) fazendo uma relação com sua razão de
compressão (GONZALES, 1992) e tamanho final da imagem após a compressão.
Assim, foi possível analisar cada imagem gerada pela solução proposta com a
imagem original e assim comparar com resultados obtidos com padrões de
compressão de imagem já existentes.
1.1 Estrutura do Trabalho
Este trabalho está dividido em 6 capítulos, o capítulo 2 mostra algumas
características fundamentais do processamento de imagens digitais bem como
alguns pontos relevantes sobre compressão de imagens. Nas subseções 2.4.1 e
2.4.2 serão abordadas as técnicas de compressão de vídeo, tais como
compensação de movimento e predição intra-frame. Os trabalhos relacionados a esta
13
pesquisa são descritos no capítulo 3. Já no capítulo 4 é onde estarão a descrição do
modelo teórico e a metodologia utilizada. No capitulo 5 serão expostos os testes
realizados. E no capítulo 6 a conclusão.
14
2 PROCESSAMENTO DE IMAGENS
Para que seja possível um melhor entendimento, serão esclarecidos pontos
importantes sobre o processamento de imagens e a maneira de como são utilizadas
algumas técnicas.
No processamento de imagens, antes de qualquer coisa, é necessária a
captura de uma imagem que está no mundo real, ou seja, no mundo analógico. Para
a obtenção de uma imagem digital é necessário algum dispositivo que seja capaz de
passar a imagem do mundo analógico para o mundo digital. Dispositivo esse que
pode ser uma câmera fotográfica, câmera de vídeo, scanner e entre outros.
Após a aquisição da imagem, agora é necessário o armazenamento dessa
imagem em um computador, a melhor forma que foi encontrada para esse
armazenamento e a mais utilizada é na forma de matriz, onde cada elemento dessa
matriz é chamado de pixel (Picture element).
O pixel é onde está guardada a menor informação de uma imagem e quanto
maior o número de pixeis maior será a resolução da imagem. Então, por exemplo,
quando desejamos guardar uma imagem em preto e branco será necessário 1 bit,
ou seja 0 ou 1, para representar um pixel.
Quando for necessário o armazenamento de uma imagem em tons de cinza,
serão necessários 8 bits (256 variações) para a representação de cada pixel, em
tons que iniciam no preto e terminam no branco (BRUNO, 2003).
Para a visualização dessas imagens, após o seu armazenamento, serão
necessários dispositivos capazes de representar essas informações de forma visual
para o olho humano, como exemplo, os televisores e os monitores.
Até o momento foi esclarecida a maneira de como uma imagem será
representada quando for necessária a utilização de apenas uma matriz por imagem,
ou seja, representação em preto e branco ou em tons de cinza. Já para o processo
15
de representação colorida exige procedimentos diferentes. Nas seções
subseqüentes serão abordadas as diferentes maneiras para a representação
colorida de uma imagem.
2.1 Sistema de cores RGB
Para a representação de várias cores, é comum a utilização de cores primárias.
Através da combinação de cores como o vermelho, verde e azul é possível gerar
uma grande quantidade cores. É através desse conceito que o sistema de cores
RGB (red, green, blue) é baseado.
Como explicado anteriormente que, para a representação das imagens em um
computador é utilizado uma matriz de pixeis, nesse caso será uma matriz para cada
cor primária, onde cada pixel de cada matriz poderá ter valores de 8 bits, ou seja,
variar de 0 a 255. Desta maneira quando for necessário que um determinado pixel
de uma imagem contenha a cor branca, cada elemento das três matrizes que
representam este pixel deverão ter em seus valores 255. É possível representar
muitas outras cores através desse processo, na Tabela 1 é mostrado como algumas
cores podem ser criadas a partir das três primarias.
Tabela 1 – Sistema de cor RGB.
Bra
nco
Pre
to
Am
arel
o
Ver
de
Azu
l
Ver
mel
ho
Cia
no
Mag
enta
R 255 0 255 0 0 255 0 255
G 255 0 255 255 0 0 255 0
B 255 0 0 0 255 0 255 255
Fonte : adaptação de Jack, 2005.
Um problema do uso do sistema RGB é que para determinadas cores é
necessário alterar as informações de cada pixel em cada matriz, causando assim um
prejuízo no desempenho na construção ou modificação de certas cores (KOPPS,
2007).
Sabendo que olho humano é mais sensível ao verde, menos ao vermelho e
menos ainda ao azul (ROCK, 1990). Além disso, o verde representa 60% da
informação de luz que o olho recebe, e o olho humano é mais sensível à luz que à
cor (BRUNO, 2003). A partir desses conhecimentos, é possível notar que o sistema
de cor RGB não seria o mais indicado quando se fosse necessário uma redução das
16
informações de uma imagem, pois nesse caso é possível a remoção de dados que
não seriam percebidos pelo olho humano.
2.2 Sistema de cores YUV
Visto que, o sistema de cores RGB, possui algumas desvantagens, foi
desenvolvido o sistema de cores YUV (MITCHELL, 1997), que permite a separação
dos sinais de luz e cor, facilitando o processo de redução. (BRUNO, 2003).
No YUV, o Y corresponde a luminosidade da imagem e U, V correspondem a
informação da intensidade das cores vermelha e azul respectivamente. Utilizando
apenas o componente Y é possível representar uma imagem em escalas de cinza
(BRUNO, 2003), ou seja, variando de 0 a 255 o componente Y. No RGB essa escala
seria representada a partir dos seus três componentes. Desta maneira estaria se
fazendo uma economia de informação (KOPPS, 2007).
A equação básica para converter uma imagem do sistema RGB para o YUV é
mostrada na fórmula (1) (JACK, 2005):
( )( )YRBGR
YBBGR
BGR
877,0 100,0 515,0 615,0 V
492,0 436,0 289,0 147,0 U
114,0 0,587 299,0 Y
−×=×−×−×=−×=×+×−×−=
+×+×= (1)
Para a presente pesquisa, será de grande importância a utilização do
componente Y do sistema de cor YUV para análise e comparações que a pesquisa
contempla.
2.3 Compressão de Imagens
Como é necessário que o tamanho de imagens que serão armazenadas em
HD, ou enviadas via internet seja reduzido é necessário a aplicação de técnicas de
compressão de imagens. Até mesmo os sistemas de cores, como o YUV, foram
motivados pela preocupação da redução de dados da informação.
A remoção da redundância de dados é fundamental em compressão de
imagens digitais. Além disso, a compressão de imagens pode ser divida em duas:
Compressão com perdas e compressão sem perdas. O primeiro é utilizado em
17
máquinas fotográficas digitais comuns onde a questão de armazenamento é
importante, neste caso a fidelidade não é tão exigida, mas também não é
menosprezada. O formato JPEG usa este tipo de compressão de imagem. Já na
compressão de imagens sem perdas o armazenamento dos detalhes é importante,
como é o caso de imagens médicas.
Em uma imagem digital é possível verificar a taxa de variação da intensidade
entre os pixeis. Essa taxa é referida como freqüência espacial. Assim, taxas altas de
variação poderiam ser representadas por uma freqüência altas e taxas baixas de
variação podem ser representadas por freqüências baixas (BRUNO, 2003).
De acordo com (ROCK, 1990), o olho humano percebe mais as variações
suaves de freqüência do que as variações onde a freqüência é alta (detalhes). Desta
maneira é possível fazer a remoção de alguns dados que representam as
freqüências altas sem que o olho humano perceba muita diferença, caracterizando
assim um caso de compressão com perdas. A seguir é descrito brevemente o
processo de compressão de imagens.
2.3.1 Processo de compressão de imagens
Para iniciar um processo de compressão de imagens e tomando como base o
processo do JPEG, a imagem é primeiramente dividida em blocos de 4 x 4, 8 x 8 ou
16 x 16 pixeis, seguido da aplicação de uma transformada. Essa transformada
chamada de DCT ou transformada discreta do cosseno consegue verificar a
variação de mudança da intensidade entre os pixeis, ou seja, ela analisa
matematicamente e separa em coeficientes que representam as freqüências baixas
e altas de uma imagem (KOPPS, 2007).
Os coeficientes transformados e agora agrupados em uma matriz 8x8 pixeis
ou por um tamanho definido na divisão da imagem em blocos, estão organizados e
representados das freqüências menores até as freqüências maiores. A Figura 1
ilustra essa organização de freqüências em uma matriz, onde o coeficiente DC é a
média de todas as freqüências.
18
Figura 1 – Distribuição de freqüências. Fonte: KOPPS, 2007.
No processo de aplicação da DCT nos blocos da imagem, a matriz gerada
possui coeficientes reais se tornando uma matriz maior em quantidade de bytes em
relação a sua matriz original, com coeficientes inteiros. Para resolver esse problema
é utilizada a quantização, que irá substituir um determinado grupo de valores de
entrada por um índice. Cada índice representa uma aproximação dentro de uma
determinada escala (KOPPS, 2007). Para fazer esse procedimento é feita uma
divisão da matriz gerada após o processo da DCT por uma matriz, chamada de
matriz quantização (SILVA, 1998). Na Figura 2 está ilustrada a matriz de
quantização do JPEG
9910310011298959272
10112012110387786449
921131048164553524
771031096856372218
6280875129221714
5669574024161314
5560582619141212
6151402416101116
Figura 2 – Matriz de quantização do JPEG Fonte: SILVA, 1998.
19
É na quantização que acontecem as perdas em relação à qualidade dentro de
um processo de compressão de imagem como o JPEG. Isso acontece, pois no
momento da descompressão a reconstrução dos valores reais a partir dos índices
inteiros gerados após a quantização da matriz DCT não é mais possível.
Após a obtenção dessas matrizes de coeficientes "arredondados" no processo
de quantização, se faz uso de técnicas de compressão de dados como Run Lenght
Coding ou Huffmann para a eliminação de dados redundantes (BRUNO, 2003).
É importante observar como algumas técnicas utilizadas para o processo de
compressão de imagens fazem o uso do conhecimento das limitações do olho
humano. Na DCT é utilizado o conceito de que o olho humano percebe mais as
freqüências baixas, para complementar é utilizada a quantização para a eliminação
de freqüências que o olho não seria capaz de perceber.
2.4 Compressão de vídeos
Com a necessidade de transmissão de vídeos via internet e armazenamento,
foram criados padrões de compressão de vídeo, que faz uso de técnicas avançadas
e alguns princípios da própria compressão de imagem.
Um vídeo é formado por várias imagens apresentadas em seqüência. A
freqüência de apresentação dessas imagens varia, como por exemplo: O padrão
NTSC utiliza a freqüência de 30 quadros por segundo, ou seja, 30 imagens
apresentadas seqüencialmente, no período de um segundo (BRUNO, 2003).
Assim, da mesma maneira que se observa redundância de dados em imagens
(redundância espacial), de acordo com (MITCHELL, 1997) a codificação temporal
dos dados explora a redundância existente entre imagens consecutivas em um
vídeo (redundância temporal).
A partir disto, é possível analisar os quadros que compõe um vídeo,
procurando por redundância de dados para uma futura eliminação. Por exemplo, em
um vídeo onde se tem uma bola preta caindo em uma imagem onde o fundo é
branco. No quadro anterior (a) a bola estava na posição (x, y) e no quadro atual (b) a
bola está na posição (x, y-1) com isso é possível notar que a informação (a bola) é a
mesma nos dois quadros, assim como o fundo branco. As regiões repetidas entre os
quadros não precisam ser codificados, pois podem ser utilizadas as mesmas regiões
20
do quadro anterior (BRUNO, 2003). A técnica que utiliza este conceito é a
compensação de movimento (PARHI 1999), (MITCHELL, 1997).
Com o intuito de reduzir a redundância espacial de dados em vídeo também é
utilizado a predição intra frame (RICHARDSON, 2003). A predição intra frame
diferentemente da compensação de movimento, que explora a semelhança entre
blocos de quadros passados e futuros, trabalha através de uma técnica que utiliza
os pixeis vizinhos para montar um bloco semelhante ao original.
Nas subseções a seguir serão apresentadas estas duas técnicas, a fim de
esclarecer o seu funcionamento em compressão de vídeos.
2.4.1 Compensação de movimento
No processo de compensação de movimento são analisados quadros que se
encontram em tempos próximos, já que é muito provável que dois ou mais quadros
em um pequeno espaço de tempo sejam muito parecidos, devido a natureza do
vídeo. Para a remoção desta redundância temporal entre os quadros a técnica é
dividida em três fases. São elas: Detecção de movimento, estimativa de movimento
e compensação de movimento.
Na detecção de movimento, alguns quadros passados ou futuros são
analisados a fim de se encontrar regiões que sofreram alterações em relação ao
atual. Na estimativa de movimento é examinado o movimento feito por essas regiões
a fim de se traçar vetores, no quadro atual, que representem a direção desse
movimento. E a compensação de movimento usa esses vetores para montar a
imagem do quadro atual, a partir das regiões dos quadros passados ou futuros
(BRUNO, 2003).
Em padrões de compressão de vídeos como o h.264, essas regiões são
representadas por blocos de pixeis, que podem variar de 4x4 até 16x16 pixeis
(RICHARDSON, 2003). Para o processo de compensação de movimento é comum a
utilização apenas do componente Y, do sistema YUV, visto que, este possui as
informações mais significativas de uma imagem, sendo assim diminuindo o custo
computacional para estimar movimentos entre quadros de um vídeo.
Como dito anteriormente, em primeiro momento é feita a detecção de
movimento e a estimativa de movimento. Para isto, é pesquisado em uma área no
quadro de referência (quadro passado ou futuro que já tenham sido codificados) um
21
bloco que seja mais parecido com o original. A área que mais se assemelha da
original deve ficar dentro de um limite definido por um cálculo de erro (BRUNO,
2003). O cálculo mais comum para essa situação é o da diferença média absoluta
(MAD) (MITCHELL, 1997).
Para encontrar o bloco que mais se assemelha ao bloco original será feita uma
comparação em alguns ou em todos os blocos desta área. A Figura 3, mostra este
procedimento. Em algumas propostas, tais como (MPE 93), a varredura ao invés de
ser bloco a bloco é feita pixel a pixel para obter uma localização mais precisa em
relação ao bloco do quadro original.
Figura 3 – Procura por blocos parecidos em quadros distintos. Fonte: RICHARDSON, 2003.
A comparação é feita da seguinte maneira, um bloco do quadro original (atual)
é subtraído de um bloco do quadro passado. Se esses blocos forem parecidos o
bloco residual, ou seja, o bloco resultante, apresentará quase todos os valores iguais
a zero. Uma maneira de estimar qual bloco é o melhor bloco residual, é através do
cálculo do erro médio quadrático (MSE) (SILVA JR, 1993), (RICHARDSON, 2003). O
MSE é encontrado através da soma das diferenças entre os pontos de cada bloco,
dividido pelo número de pontos (BRUNO, 2003), dado pela Fórmula (2), onde M x N
é a multiplicação da quantidade de pixeis na horizontal pela quantidade de pixeis da
vertical resultando no tamanho dos blocos, Cij e Rij são os pixeis do bloco atual e do
bloco de referência respectivamente.
( )∑∑= =
−⋅
=1-N
0
1-N
0
2ijC
NM
1
i jijRMSE (2)
22
Na Figura 2 temos a exemplificação da subtração do bloco do quadro atual
(bloco original) pelo bloco do quadro anterior (bloco anterior) resultando no bloco
residual. Caso os valores do bloco residual sejam muito distantes de zero, estará
caracterizado um bloco muito diferente do bloco original.
Figura 4 – Subtração de blocos. Fonte: Autoria própria, 2009.
Quando for encontrado o bloco que mais se assemelha ao original é traçado
um vetor de movimento no quadro original, com dois componentes (x, y) gerado pela
diferença das posições entre o bloco original e o bloco semelhante.
Então, no processo de compressão desse quadro, apenas o bloco residual e o
vetor de movimento são codificados, já que os blocos repetidos entre os quadros
não precisam, diminuindo assim significativamente a quantidade de bits, para um
posterior armazenamento ou transmissão.
Em algumas situações é possível a utilização de quadros futuros como quadros
de referência, se isso acontecer, necessariamente, esse quadro deve ser codificado
antes do quadro original (atual), ou seja, quadros codificados fora de ordem
(RICHARDSON, 2003).
Objetos em movimento numa cena raramente seguem uma fronteira perfeita
nos blocos de tamanho de 16x16 ou 8x8. Nestas situações é mais vantajoso usar
blocos de tamanho variável para estimação e compensação do movimento
(RICHARSON, 2003).
Pelo tamanho de cada bloco e o de cada região a codificação por
compensação de movimento tem um custo computacional muito alto, ainda assim
pode representar mais de 50% do processamento de codificação do vídeo (BRUNO,
2003).
Para a decodificação, o vetor de movimento é usado para recriar a região
original e o bloco residual é adicionado ao bloco do quadro de referência para recriar
23
o bloco original. Sendo assim, o custo computacional empregado pelo decodificador
é muito inferior ao do codificador.
2.4.2 Predição Intra-Frame
Existem casos onde a compensação de movimento não é a melhor técnica de
codificação a ser empregada. Por exemplo, quando a quantidade de movimento em
uma seqüência de vídeo é mínima e a redundância espacial é mais significante
(FERNAINDEZ – ESCRIBANO, 2005) ou também numa mudança de cenário, onde
existe uma mudança significativa entre os quadros de referência e atual
(RICHARDSON, 2003).
A primeira imagem de um conjunto de imagens também é tipicamente
codificada em modo intra frame, ou seja, sem utilizar qualquer outra informação
senão a, contida na própria imagem.
No modo predição intra frame um bloco qualquer 4 x 4 pixeis, que pode ser
chamado de bloco B, é formado tendo como base os blocos anteriormente
codificados e reconstruídos dentro da mesma imagem. Existem nove modos de
predição intra frame quando o bloco é formado por 4 x 4 pixeis, que estão ilustrados
na figura 3. E existem também 4 modos quando o bloco é formado por 16 x 16
pixeis. Sendo que, para o processo com esses modos de predição é utilizado o
componente Y. Para os componentes U e V, são aplicados os mesmos 4 modos
para predição em blocos de 16 x 16 pixeis. Após a construção dos noves blocos,
através dos nove modos de predição, o codificador seleciona o bloco que mais se
assemelha ao bloco B.
Figura 5 – Modos de predicação intra frame. Fonte: RICHARDSON, 2003.
24
Em primeiro momento, para fazer a predição de um quadro é necessário que
os pixeis de A até M já tenham sido previamente codificados e reconstruídos para
estarem disponíveis como referência. A Figura 5 mostra como os pixeis de A até M
são utilizados para formar um bloco. Visto desta necessidade, caso os pixeis E, F,
G, H não tenham sido codificados ainda, ou seja, indisponíveis, o valor do pixel D é
copiado para essas posições, tornado aqueles pixeis disponíveis (RICHARDSON,
2003).
A Figura 6 ilustrada a seguir, exibe um bloco 4 x 4 que deverá ser predito a
partir de um dos modos da predição intra-frame. E a Figura 7 mostra a reconstrução
deste bloco a partir do modo 8 (horizontal-up) da predição intra-frame, que foi o
modo que mais se assemelhou ao bloco que deveria ser predito. Para a verificação
de qual modo mais se assemelhou ao bloco inicial é utilizada a soma da diferença
absoluta (SDA) entre o bloco que deverá ser predito e cada um dos blocos dos
modos de predição. Assim para cada modo haverá um resultado, e aquele que
possuir o menor SDA será o bloco escolhido, que nesse caso foi o bloco do modo 8.
Figura 6 – Montagem de blocos a partir de blocos vizinhos. Fonte: RICHARDSON, 2003.
Figura 7 – Montagem do bloco a partir do modo 8 Fonte: RICHARDSON, 2003.
25
A seção a seguir foi adicionada ao trabalho com intuito de mostrar a utilização
de um método de compressão de dados, pois este será utilizado em um dos
componentes de grande relevância desta pesquisa.
2.5 Huffman
Uma das partes fundamentais do processo de codificação de imagens são os
algoritmos de entropia (BRUNO, 2003). A entropia utiliza da freqüência de
ocorrência de um determinado dado em um conjunto de dados (SHA, 1948). Um
algoritmo de entropia é o Huffman.
O método Huffman (HUFFMAN, 1952) é comumente utilizado para compressão
de dados. Serve como base para diversos softwares populares utilizados nos
computadores pessoais e em alguns casos é utilizado como uma das etapas para
um processo de compressão de multi-etapas (SALOMON, 2004). Além disso, é um
processo utilizado em diversos métodos de compressão de imagens, entre eles o
próprio JPEG.
Basicamente o método Huffman monta uma tabela a partir da freqüência de
cada símbolo. Por exemplo: AABACB. A letra A aparece 3 vezes (3/6 = 0,5), B
(0,3333...) e C (0,1666...). No próximo passo do método monta-se uma árvore de
codificação, alinhando os símbolos de acordo com a sua probabilidade. Após isso os
símbolos de menor probabilidade são conectados entre si e cria-se um novo símbolo
que a probabilidade é a soma dos dois símbolos conectados (BRUNO, 2003). Na
Figura 8 é apresentada a árvore de codificação para a palavra AABACB. Ao símbolo
mais freqüente A é atribuído o bit 0 e ao resto é 1. No B o processo é repetido, para
ele o bit 0 é atribuído e para o restante, no caso, o C é atribuído o bit 1. Assim para o
símbolo A é representado por (0), o B é representado por (10) e o C por (11). Então
para a palavra AABACB é codificada como 00100101110, utilizando assim apenas
11 bits para sua representação.
26
Figura 8 – Árvore de Codificação Fonte: Autoria Própria, 2009.
27
3 TRABALHOS RELACIONADOS
Neste capítulo será apresentado algumas pesquisas que foram realizadas com
predição intra-frame do h.264 em comparação com técnicas de compressão de
imagens. Além disso, serão apresentados trabalhos que utilizam técnicas que são
relevantes para essa pesquisa.
Alguns trabalhos, entre eles o de Aravind (2004) e o de Marpe (2004),
baseiam-se com a idéia de que é possível a utilização da técnica, predição intra
frame, empregada no h.264/AVC em favor da compressão de imagens.
Em seu trabalho, Aravind (2004), investiga o escopo da predição intra frame do
h.264 para a sua utilização na codificação de imagens, bem como a pesquisa de
comparações relativas a qualidade alcançadas entre a técnica do h.264, o JPEG e o
JPEG2000 e também de pesquisas que analisam a complexidade do codificador do
modo intra do h.264. Além disso, o trabalho faz testes (testes que são feitos para a
análise de resultados em compressão imagens) verificando o potencial do modo
intra do h.264. Através destas investigações, Aravind (2004) verifica um excelente
desempenho de compressão do h.264 no modo intra.
Para as comparações Aravind (2004), adaptou os valores do codificador do
modo intra para trabalhar nos padrões utilizados em imagens como o do JPEG e
JPEG2000. A partir daí ele pode fazer algumas análises. Na Figura 7 é mostrada a
comparação relativo à qualidade alcançada (PSNR) em diversas taxas de bits por
pixel entre JPEG, JPEG2000 e o modo intra do h.264. É possível verificar o ganho
do h.264 na taxa de 4 bpp sendo superior em 5dB quando comparado com o
JPEG2000.
28
Figura 9 – Comparação de qualidade Alcançada, PSNR por Bpp. Fonte: ARAVIND, 2004.
Finalmente, o autor conclui que é evidente a partir das análises feitas que o
modo intra do h.264 é superior ao JPEG e ao JPEG2000 quando se tratando de
qualidade. Mas quando o problema for complexidade do decodificador, ou seja, a
quantidade de operações feitas para a decodificação da imagem o h.264 perde para
o JPEG, mas é mais rápido que o JPEG2000.
No trabalho de Marpe (2004), diferentemente de Aravind (2004), as imagens de
testes fazem parte de seqüências de vídeo. Neste trabalho é feito um estudo
comparativo através de resultados de experimentos em relação a taxa de distorção
do Motion-JPEG2000 e do modo intra do H.264.
A Figura 10 é mostrado a comparação feita entre o modo intra frame do h.264,
o Motion-JPEG2000 e o PACC ( Extensão do JPEG2000 que possibilita a
representação de imagens com perdas e sem perdas) para o processo de
compressão dos quadros de um vídeo, sem a utilização de qualquer artifício para
buscar em quadros passados algum bloco de referência. Nesse caso é verificado
que na resolução CIF (352 x 288 pixel) o modo intra do h.264 obtém um ganho de
0.5 a 1.5 dB quando a medida é Y-PSNR, ou seja, qualidade da imagem.
29
Figura 10 – Comparação do h.264 com M-JPEG200 e PACC. Fonte: MARPE, 2004.
Em seu trabalho, Marpe conclui que existe uma significante superioridade do
modo intra frame do h.264 em baixas resoluções, como a mostrada na Figura 10. Já
em médias para altas resoluções os experimentos mostraram um comportamento
parecido entre as duas técnicas, h.264 e Motion-JPEG2000. Apenas em resoluções
muito altas o Motion-JPEG2000 claramente supera em termos de média do PSNR o
h.264.
Existem outras propostas, que serão importantes para a resolução deste
trabalho. Uma delas é a (MPE, 1993), que trabalha com idéia de varredura pixel a
pixel ao invés de bloco a bloco, para obter uma localização mais precisa em relação
ao bloco do quadro original. O algoritmo de Full Search também foi de grande
importância, bem como trabalhos que propõe maneiras de acelerar este processo de
busca (KIM, 1999). E finalmente (KEBIN, 2007), (HE, 2007), (KATO, 2006), (YANG,
2006) que trabalham com a idéia de acelerar o modo de predição intra frame.
30
4 METODOLOGIA
Este capítulo descreve a metodologia utilizada no estudo, além dos softwares
utilizados, implementações feitas para auxiliar o desenvolvimento da pesquisa e
esclarecimentos referentes ao uso de certos procedimentos.
Como mostrado no capítulo 3, já existem algumas pesquisas que utilizam a
predição intra-frame do padrão de compressão de vídeo h.264 em imagens, ou seja,
métodos que utilizam regiões da própria imagem para montar outras previamente
escolhidas por serem semelhantes. Nessa pesquisa foi utilizada a idéia de buscar
dentro de uma imagem, blocos que podem ser semelhantes entre si. Porém, a
maneira com que as áreas parecidas são buscadas difere em relação a predição
intra frame do h.264, que monta blocos a partir de pixeis vizinhos, através de modos
de predição já citados na Seção 0.
Esse trabalho faz uso principalmente, da técnica de compensação de
movimento do h.264, explicado na Seção 2.4.1, que percorre bloco a bloco quadros
de um vídeo a procura por regiões parecidas. Então, nesse trabalho foi utilizada a
idéia da predição intra-frame, por fazer buscas dentro na própria imagem e também
da compensação de movimento por buscar blocos percorrendo a imagem bloco a
bloco.
Para o processo de busca dos blocos, o algoritmo de Full Search foi a
metodologia utilizada, que apenas prioriza a busca exaustiva de dados, sem nenhum
tipo de preocupação quanto ao tempo necessário, ou seja, esse algoritmo aumentou
consideravelmente a complexidade do codificador. Desta maneira é importante
salientar que não foi de preocupação do presente modelo o tempo necessário para a
codificação e decodificação da imagem. Assim a complexidade do codificador e
decodificador aqui implementados são maiores em relação ás outras técnicas de
compressão.
31
O software Matrix Laboratory (MATLAB) foi o programa escolhido, por possuir
uma biblioteca de processamento de imagens e por abstrair melhor todas as
necessidades para o desenvolvimento do algoritmo proposto na pesquisa e da
geração dos resultados em cima dos testes que foram feitos.
Para que o foco desta pesquisa não fosse desvirtuado em implementações de
algoritmos já desenvolvidos, a reutilização de código disponível e livre foi a
alternativa encontrada.
Durante a pesquisa, foi utilizado o algoritmo, criado por (HU), desenvolvido em
MATLAB que simula o codificador e decodificador de imagens do padrão de
compressão de imagens JPEG, para possibilitar o acoplamento do algoritmo gerado
na pesquisa com o do JPEG, sem interferências externas ao algoritmo. Outro
algoritmo utilizado, criado por (MADHU) e desenvolvido em MATLAB, foi o referente
ao codificador e decodificador HUFFMAN que foi o método utilizado para a
compressão de um vetor gerado pelo algoritmo desenvolvido neste trabalho de
conclusão.
Os testes foram realizados em um microcomputador com processador AMD
Turion 64 X2 Mobile de 1.6 GHz e 2 GB de memória RAM.Para rodar o software
MATLAB que foi onde toda a implementação e todos os testes foram feitos, foi
utilizado apenas o sistema operacional Windows XP
Para alcançar os resultados deste trabalho, foi realizado um experimento, que
será descrito através do fluxograma apresentado nas do Figura 11 e Figura 14, que
ilustram quais os procedimentos foram tomados para criar o codificador e o
decodificador respectivamente, que foram propostos nesta pesquisa.
4.1 Codificador
Em primeiro momento foram utilizadas imagens coloridas com resolução 256 x
256 pixeis, sem perda de dados, ou seja, do tipo BMP (Windows bitmap) ou GIF
(Graphics Interchange Format). A partir destas imagens foi extraído apenas o
componente Y (luminosidade), do sistema de cores YUV abordado na Seção 0, para
fins de testes. A partir da utilização de apenas um componente é possível uma
melhor manipulação das imagens, sem desviar do foco do trabalho que é a procura
e eliminação por dados redundantes. Evidentemente, se fosse necessária a
32
codificação das imagens coloridas, o processo seria facilmente aplicado aos outros
dois componente do sistema de cores YUV.
Para que fosse possível a verificação da razão de compressão (GONZALES,
1992) e qualidade da imagem (PSNR) (SILVA JR, 1993) após o processo
codificação, foi utilizada como imagem original aquela que possui apenas o
componente de luminosidade da imagem, ou seja, após a extração do componente
Y. Assim a verificação da razão de compressão e qualidade foi justa, já que todo o
processo de codificação foi proposto utilizando apenas o componente Y.
Uma vez que foi obtida a matriz pixeis da imagem, relativa ao componente Y,
foi possível começar o processo de busca por blocos parecidos dentro da imagem.
Isto é descrito na Figura 11 como o primeiro passo do codificador. Com a utilização
do algoritmo de Full Search (BRUNO, 2003), que é um algoritmo de busca
exaustiva por um determinado dado dentro de todo um conjunto de dados, a busca
percorrerá toda a matriz sem exceções. A partir desta idéia foi possível adaptar esse
algoritmo para essa pesquisa.
Figura 11 – Codificador. Fonte: Autoria própria, 2009.
Fazendo uma breve comparação, a solução aqui desenvolvida difere da
compensação de movimento porque, ao invés de fazer a busca dentro de uma área
de pesquisa pré-determinada no quadro anterior ou posterior, onde a possibilidade
de encontrar o bloco semelhante é maior, a busca foi feita em toda e na mesma
imagem.
Para a procura por blocos parecidos ter sido efetivada de maneira correta e
percorrendo toda imagem, a busca foi feita bloco a bloco. Esse é o algoritmo
33
utilizado mais comumente, porém na proposta inicial desta pesquisa o método
analisaria os blocos da imagem pixel a pixel. Após uma série de experimentos e
análises foi constatado que ao ser acoplado ao JPEG, essa abordagem dificultava o
processo do codificador, tornando a imagem maior em quantidades de bytes e pior
em qualidade de imagem, quando analisando o seu PSNR.
Figura 12 – Exemplo de imagem dividida pixel a pixel Fonte: Autoria Própria, 2009.
Esse problema acontece quando o JPEG, aplica a DCT onde a imagem é
processada toda em blocos exatos de 8 x 8 pixel, as linhas horizontais e verticais
(brancas da Figura 12) exemplificam essa situação. Portanto, se o algoritmo pixel a
pixel fosse utilizado, poderia acontecer de que um dos blocos residuais estivesse
ocupando a parte de dois ou mais blocos, quando da aplicação da DCT do JPEG, de
acordo com a Figura 12. No momento que isso acontecesse a DCT analisaria um
bloco com mais variações de intensidade de cor. Assim criando uma matriz com
seus coeficientes maiores, quando comparado a um bloco onde não houvesse seu
espaço ocupado por metade de um bloco residual do método proposto neste
trabalho. Após isso, a quantização do JPEG, iria eliminar dados referentes ao das
altas freqüências, ou seja, dados referentes ao limiar do bloco comum com o bloco
residual, causando uma perda na qualidade da imagem. Além disso, o modo pixel a
pixel dificultaria também o processo de compressão huffman, já que após o
processo de quantização não seriam anulados dados suficientes para que esse
método de comprimir dados alcançasse ao menos uma taxa de compressão igual ao
do JPEG.
Portanto, no processo de busca pelo bloco parecido, toda a imagem foi
percorrida bloco a bloco utilizando todos os blocos 8x8 possíveis dentro da imagem
34
para que, fossem encontrados blocos semelhantes a partir destes. Para que o bloco
fosse um bloco semelhante, foi utilizado um procedimento parecido ao utilizado na
predição intra-frame, o qual utiliza o cálculo MSE visto na Seção 0, ou seja, verifica a
soma da diferença dos pixeis do bloco a ser predito pelo bloco candidato a ser
semelhante. Assim foi possível determinar um resultado máximo de soma para que
aquele bloco candidato a ser um dos semelhantes fosse um dos escolhidos. Nesta
pesquisa o MSE máximo foi definido sendo 1 (um) para que a heterogeneidade entre
os pixeis dentro do bloco fosse mínima e propiciasse ao menos assim uma taxa de
compressão maior para certos tipos de imagens.
Após a verificação de todo um bloco (8x8) candidato a partir do bloco a ser
predito, caso este não seja semelhante, o bloco candidato seguinte será aquele que
possui a sua posição de sua coluna incrementada em 8 e sua linha apenas será
incrementada em 8 caso a coluna esteja atingido o limite horizontal da imagem.
Assim caracterizando uma varredura de blocos de 8x8 dentro da matriz.
Caso o bloco verificado seja um bloco compatível, o resíduo da subtração dos
blocos será armazenado na mesma posição onde se encontra o bloco verificado.
Desta maneira criando uma matriz onde se encontrarão blocos que não apresentam
semelhança entre si, os blocos residuais e os blocos que contém semelhança com
outros blocos e não podem ser eliminados porque serão necessários para a
montagem dos outros blocos a partir dos resíduos. A Figura 7 ilustrada abaixo,
mostra a imagem lena após a aplicação do algoritmo descrito acima. Para que fosse
possível uma melhor ilustração da técnica desenvolvida, o MSE, aplicado na Figura
13, foi 10, ao invés de 1 (um) utilizado no trabalho.
35
Figura 13 – Imagem residual da Lena. Fonte: Autoria Própria, 2009.
Para o armazenamento de quais blocos são semelhantes entre si e em quais
posições se encontram dentro da imagem, foi montado um vetor de posições que
reuni a posição do bloco residual e a posição do bloco original. Na Tabela 2 a abaixo
é mostrado parte do vetor de posição montado a partir da Figura 13.
Tabela 2 – Vetor de posições.
Pixel inicial do bloco original Pixel inicial do bloco residual
linha coluna linha coluna
1 0 0 0 8
2 0 0 0 168
3 0 0 0 176
4 0 0 0 184
5 0 0 0 192
6 0 0 8 0
7 0 0 8 8
8 0 0 8 16
9 0 0 8 168
10 0 0 8 176 Fonte: Autoria Própria, 2009.
Como é possível observar na Tabela 2, as duas primeiras colunas possuem a
localização do pixel inicial do bloco (8 x 8) original e a terceira e quarta colunas
possuem a localização do pixel inicial do bloco (8x8) residual. Então de acordo com
36
a primeira linha da tabela, o bloco (0,0) é o bloco original do bloco residual (0,8),
onde o 0 (zero) se refere a linha e o 8 se refere a coluna dentro da matriz de pixeis.
O tamanho desse vetor de posições será proporcional ao número de blocos
semelhantes dentro de uma imagem, ou seja, para uma imagem como a Figura 13 o
tamanho do vetor é de 447 linhas para os 447 blocos semelhantes.
Da mesma maneira que a imagem, obviamente o vetor de posições também
sofreu um processo de compressão, por se tratar de um componente fundamental
da presente pesquisa. Além disso, é necessário na avaliação do algoritmo, uma vez
que tamanho do vetor de posições será somado com o tamanho da imagem para
suas respectivas avaliações. O método de compressão utilizado para este
componente foi o Huffman, pela sua simplicidade eficiência e grande utilização no
meio científico, e que foi devidamente revisto na Seção 0.
Após o processo de montagem da nova imagem com os blocos residuais, esta
será enviada para que o codificador JPEG possa continuar o processo de
compressão da imagem, uma vez que os blocos redundantes da imagem foram
eliminados, pelo processo descrito acima.
Uma das grandes potencialidades deste codificador é que para uma imagem
formada por blocos residuais, ou seja, possíveis pixeis iguais à zero ou próximos de
zero, o processo de codificação de imagem é privilegiado. Fazendo-se uso da DCT e
logo após do Huffman, presentes no codificador JPEG, a eliminação de informações
redundantes foi ainda maior. Isso acontece pois, a DCT separa em coeficientes as
freqüência altas e baixas , ou seja , procura por variações pequenas ou grandes de
intensidade de tonalidade entre os pixeis dentro de um bloco. Assim no momento em
que um bloco é subtraído por um outro bloco igual ou ao menos semelhante, o
resíduo do bloco será mais homogêneo e próximo de zero, ocasionando assim
nenhuma ou poucas variações entre os pixeis do bloco residual.
De acordo com (BRUNO, 2003), a matriz de quantização do JPEG ilustrada na
Figura 2 na seção 0 “arredonda” mais, os coeficientes correspondentes aos
coeficientes de alta freqüência da matriz gerada pela DCT, já que é feita uma divisão
da matriz DCT do bloco pela matriz de quantização.
Portanto, no momento que é possuído a matriz de coeficientes referentes às
freqüências da intensidade relativamente mais homogêneas, dentro do bloco gerado
pela DCT, o processo de quantização não causa um “arredondamento” tão
significante de coeficientes, que posteriormente iria causar redução na qualidade.
37
Isso acontece pois a representatividade (range) de coeficientes relativos as altas
freqüências dentro da DCT, ou seja variações altas de intensidade de cor, é menor
quando da não utilização do algoritmo desenvolvido nessa trabalho.
Após o processo de codificação foi implementado, em MATLAB, o cálculo da
razão de compressão (GONZALES, 1997), que verifica a redução no tamanho da
representação de dados produzido pelo processo de compressão. Esse cálculo é
dado pela fórmula (3) abaixo, onde N1 e N2 representam o numero de pixeis no
decorrer das dimensões horizontais e verticais, B é o número de bits necessários
para representar cada pixel, enquanto C é o tamanho total da imagem após todo o
processo de compressão.
C
BNN ⋅⋅= 21 compressão de Razão (3)
Com isso, já foi possível fazer a análise correspondente à diferença entre o
método desenvolvido nessa pesquisa com o método JPEG, verificando em quais
situações qual método é mais eficiente. Para que a análise seja completa foi
necessário fazer uma relação com da qualidade imagem gerada após a
descompressão da imagem a partir do decodificador.
4.2 Decodificador
Para a explicação do decodificador, A Figura 14 ilustra os passos que serão
tomados para efetuar o processo de decodificação.
Figura 14 – Decodificador. Fonte: Autoria Própria, 2009.
Em primeiro momento a imagem codificada começara a ser decodificada pelo
decodificador do JPEG, pois o processo deverá ser inverso em relação ao
codificador. Após a decodificação pelo JPEG a imagem obtida, é uma imagem
formada por blocos residuais e blocos sem alteração no seu conteúdo. Imagem
semelhante a Figura 13 demonstrada na seção 0.
38
Após esse procedimento o vetor de posição foi descompactado pelo processo
inverso ao aplicado pelo codificador do método Huffman, montando novamente o
vetor de posições que foi necessário para a conclusão da reconstrução da imagem.
A partir desta imagem contendo os resíduos e com o vetor de posições que foi
criado no processo de codificação proposto, será obtida a imagem original
reconstruída. Para a formação dessa imagem reconstruída o processo é
extremamente simples. O bloco residual será adicionado do bloco original indicado
no vetor de posições, formando assim a nova imagem. Na Figura 15, temos a
imagem original e a imagem reconstruída após todo o processo descrito de
compressão e descompressão.
Figura 15 – Imagem original e reconstruída da Lena. Fonte: Autoria própria, 2009.
Como pôde ser notado durante a explicação do codificador e decodificador
desta pesquisa, o processo não insere perdas na qualidade da imagem.
Evidentemente a diferença que existe entre as duas imagens se deve unicamente ao
processo de compressão do JPEG ao qual o experimento desta pesquisa é
acoplado, que insere perdas devido ao processo de quantização existente no seu
codificador.
4.3 Métricas utilizadas
Para saber a eficiência da técnica implementada, foi feito o uso de medidas
que permitem verificar a qualidade de uma determinada imagem em relação a sua
original. Fazendo uso do PSNR (Peak signal-to-noise ratio) (SILVA JR, 1993),
39
(KOPPS, 2007), foi possível comparar a distorção resultante da imagem
reconstruída após o processo de codificação e decodificação em relação à imagem
original.
A medida PSNR compara cada pixel da imagem original com pixel
correspondente da imagem reconstruída (KOPPS, 2007) e está definida conforme a
fórmula (4), onde m representa o valor de pico da imagem original. Normalmente m é
igual 255, pois nesse caso estariam sendo utilizados 8 bits para a representação de
um pixel. Para estar efetivamente comparando as duas imagens o PSNR faz o MSE
dado pela fórmula (2), apresentada e explicada na seção 2.4.1.
=
MSE
mPSNR
2
log 10 (4)
O PSNR também foi utilizado para fazer uma relação com razão de
compressão (GONZALES, 1992) da imagem, descrito na Seção 0. Desta forma, será
possível verificar se após o processo de codificação, houve uma considerável
compressão da imagem relacionada a uma boa reconstrução da mesma a partir de
sua decodificação.
Foram utilizados diversos cenários para comparar o modelo aqui desenvolvido
com as outras técnicas de compressão de imagem. Estão enquadradas nessa
diversificação de cenários e resoluções distintas de imagem para verificar a sua taxa
de compressão.
40
5 TESTES E RESULTADOS
Neste capítulo serão apresentados os testes realizados nesta pesquisa. Além
disso, também serão apresentados os resultados e suas analises. Durante este
capítulo será utilizado a sigla BpBS, que significa Busca por Blocos semelhantes,
para referenciar o método de compressão proposto nesta pesquisa. A seguir serão
esclarecidos alguns pontos relevantes da execução destes testes.
Foram utilizadas oito imagens, cada uma com 4 tipos de resoluções que
variaram entre 128x128pixel, 256x256pixel, 512x512pixel e 1024x1024pixel para
que fosse possível ter mais parâmetros ao serem analisadas. Todas as imagens
contêm apenas o componente Y, ou seja, apenas imagens em tons de cinza.
Nos testes o vetor de posição foi analisado junto com a imagem e
separadamente para que fosse possível verificar se em algum momento a maneira
com que o vetor foi comprimido prejudicaria o desempenho do algoritmo desta
pesquisa.
É importante reiterar que para a análise dos resultados obtidos do método
proposto nesta pesquisa, estão sendo utilizados como parâmetro de comparação os
resultados alcançados do método de compressão de imagens JPEG.
Os dados que foram levantados para as análises foi, o PSNR para qualidade, a
razão de compressão para analisar o quanto uma imagem foi comprimida em
relação a sua original e o tamanho em bytes da imagem. A partir daí foi possível
cruzar estes dados para verificar em que tipo de imagem e resolução, qual método
tem desempenho melhor.
A seguir será apresentada a Tabela 3 com um resumo que contém todos os
testes e seus respectivos resultados.
41
Tabela 3 – Resumo dos resultados dos testes.
JPEG
BpBS
tamanho tamanho vetor tamanho total Seção Imagem Resolução bytes
SNR bytes
SNR bytes bytes
128 1019 34.5200 1026 34.5200 2 1028
256 3341 36.5214 3355 36.5210 3 3358
5.1 avião 512 11781 37.0933 11837 37.0930 7 11844
128 1309 33.1877 1321 33.1874 2 1323
256 4943 33.7884 4954 33.7883 3 4957
5.1 golden 512 18121 34.0972 18121 34.0972 0 18121
128 2360 31.1409 2360 31.1409 0 2360
256 7001 33.5909 7001 33.5909 0 7001
5.1 lenna 512 20951 35.7970 20951 35.7970 0 20951
256 3141 37.4066 3276 37.3565 184 3460
512 11617 37.5271 12248 37.5022 812 13060
5.1 sandiego 1024 47380 35.9762 47383 35.9762 1 47384
128 2335 32.3845 2335 32.3845 0 2335
256 6598 35.2123 6596 35.2123 1 6597
5.2 elaine 512 22003 33.0770 21992 33.0770 2 21994
128 697 43.4990 527 43.4990 88 615
256 1810 46.0639 1104 46.0639 416 1520
5.3 gray21 512 5244 47.6800 3429 47.6800 1194 4623
128 1198 36.4936 1129 36.4811 31 1160
256 2404 42.3816 2091 42.1661 230 2321
5.3 textmos2 512 3662 56.9305 3093 56.9305 767 3860
256 2366 37.0407 1482 37.0135 223 1705
512 6244 40.1261 4382 40.1103 834 5216
5.3 triângulos 1024 20197 41.8342 14788 41.8141 3576 18364 Fonte: Autoria Própria, 2009.
Como se pode observar a primeira coluna apresenta em qual subseção deste
capítulo serão abordadas as analises dos resultados de cada uma das imagens. As
imagens foram agrupadas nas seções de acordo com os resultados obtidos.
Além disso, a Tabela 3 apresenta: As linhas com grifadas em cinza claro
significam os testes com resultados positivos, as linhas não grifadas significam
resultados não satisfatórios, e a linha em cinza escuro se refere a situação onde
vetor de posições foi responsável pela obtenção de um resultado insatisfatório.
42
5.1 Teste – Imagens avião, golden, lenna e sandiego
Nesta seção são expostos os testes e analises de imagens que não
alcançaram resultados esperados. Entre estas imagens estão: Avião, Golden, Lenna
e Sandiego, ilustrados no anexo A. A Figura 16 expõe resultados onde o
desempenho do JPEG foi melhor que o BbPS.
0,00
5000,00
10000,00
15000,00
20000,00
25000,00
30000,00
35000,00
40000,00
45000,00
50000,00
128 256 512 128 256 512 128 256 512 256 512 1024
avião golden lenna sandiego
Resolução (Pixel)
Tam
anho
(B
ytes
)
JPEG BpBS
Figura 16 – Gráfico resolução versus tamanho (bytes) das imagens Avião, Golden, Lenna, Sandiego. Fonte: Autoria Própria, 2009.
Para estas imagens, em nenhum das resoluções, o tamanho final da imagem
em bytes, gerado pelo algoritmo BpBS é suficientemente menor que o método
JPEG, para que seja percebido no gráfico. Pelo contrário, nas imagens Golden com
resolução de 256 por 256 pixel, Sandiego 256 por 256 pixel e Sandiego 512 por 512
pixel, tem um tamanho maior quando comparadas com o método JPEG.
De acordo com a Tabela 3 e o apêndice A e B é possível iniciar uma análise
individual de cada uma das imagens com resultados insatisfatórios.
Na imagem Avião, em nenhuma das resoluções 128, 256 e 512 a razão de
compressão do método BpBS é maior que o método JPEG, ou seja, a compressão
do método BpBS nesta imagem é inferior ao JPEG. Porém como se pode observar,
43
os PSNR’s são absolutamente iguais, ou seja, o BpBS não adicionou perda na
qualidade da imagem.
Na imagem Golden, o comportamento do método BpBS é idêntica da imagem
avião, nas resoluções 128 e 256. Isto é, razão de compressão menor e PSNR’s
iguais. Entretanto na resolução 512 a razão de compressão do JPEG e BpBS são
exatamente iguais, isso acontece pois o BpBS não encontrou nenhum bloco
semelhante durante a busca dentro da imagem, facilmente identificado pelo tamanho
de vetor de posição, que se encontra zerado para esta resolução.
Para a imagem Lenna, em todas as resoluções testadas o vetor de posição se
manteve zerado, da mesma maneira da resolução 512 da imagem Golden explicada
acima. Isso acontece, pois como já comentado no Capítulo 0 o método BpBS,
quando faz a busca por blocos parecidos, possuí um valor máximo estipulado para o
MSE gerado pela diferença entre o bloco candidato a ser semelhante e o bloco a ser
predito. Quando o valor ultrapassa o estipulado o bloco não é escolhido e não é
guardada nenhuma posição no vetor de posições. Portanto, na imagem lenna, todos
os MSE s dos blocos comparados, são maiores que o valor estipulado.
Na imagem Sandiego, em todas as resoluções a razão de compressão e o
PSNR do BpBS são menores que o JPEG, ou seja, o tamanho da imagem após o
processo de compressão BpBS é maior do que o JPEG e a qualidade da imagem
gerada após o processo de decodificação no BpBS é inferior ao JPEG.
Como se pode observar na figura o método BpBS encontrou blocos
semelhantes para a imagem Sandiego na resolução 512, entretanto como analisado
anteriormente, os resultados são insatisfatórios.
44
Figura 17 – Blocos residuais da imagem Sandiego na resolução 512. Fonte: Autoria Própria, 2009.
A razão de compressão encontrada não foi satisfatória, pois, como já havia
sido comentado na seção 0, que após a aplicação do BpBS os blocos residuais não
devem ser tão heterogêneos em relação a variação de intensidade dos seus pixeis,
devido ao fato de que para o processo da aplicação da DCT, no método JPEG,
quanto mais variação alta da intensidade de cor, maior serão os coeficientes
gerados relacionados às altas freqüências. Consequentemente o processo de
quantização não conseguirá ‘arredondar’ para coeficientes tão próximos de zero,
ocasionando uma razão de compressão menor quando comparada ao método
JPEG.
Para o PSNR, a justificativa se torna semelhante ao da razão de compressão,
devido ao fato de que no momento da quantização, se houver mais coeficientes nas
altas freqüências serão feito mais ‘arredondamentos’, ocasionando uma maior perda
de qualidade.
5.2 Teste – Imagem Elaine
Nesta seção serão abordados os resultados referentes aos testes realizados
apenas na imagem Elaine. No gráfico a seguir são expostos os resultados da
imagem Elaine.
45
0,00
5000,00
10000,00
15000,00
20000,00
25000,00
128 256 512
Resolução (Pixel)
Tam
anho
(B
ytes
)
JPEG
BpBS
Figura 18 – Gráfico resolução versus tamanho (bytes) na imagem Elaine. Fonte: Autoria Própria, 2009.
Ao ser analisado o gráfico, pode-se observar que não há, em nenhuma das
resoluções, resultados que comprovem um desempenho melhor, nem pior do
método BpBS. Entretanto, quando são verificados os dados da Tabela 3, na imagem
Elaine com resolução 128, é constatado que não foram encontrados blocos
semelhantes, uma vez que o vetor de posições possui zero bytes de informação
armazenado.
No entanto, nas resoluções 256 e 512, quando verificado na Tabela 3, os
resultados melhoram. Na resolução 256, o tamanho final da imagem comprimida
com o método JPEG possuí 6598 bytes, enquanto o tamanho final do método BpBS,
já contando com o vetor posições possuindo 1 byte, possui 6597 bytes. E na
resolução 512, o tamanho final com o método JPEG é de 22003 bytes, enquanto no
método BpBS o tamanho final é de 21994 bytes com o vetor de posições possuindo
2 bytes.
No método BpBS, o PSNR, manteve-se o mesmo do método JPEG, ou seja,
não houve perda de qualidade quando da aplicação do método proposto nesta
pesquisa quando comparado com o JPEG. Dessa maneira nas resoluções 256 e
512 o método BpBS se mostrou mais eficiente, quando analisados o tamanho final
da imagem juntamente com o seus respectivos PSNR’s.
46
5.3 Teste – Imagens gray21, textmos2 e triângulos
Nesta seção serão expostos os testes das imagens que obtiveram resultados
que condizem com a proposta inicial deste trabalho, que é a de encontrar resultados
satisfatórios para a compressão de imagem. Na Figura 19 a seguir está exposto o
gráfico da resolução versus o tamanho em bytes da imagem gray21.
0,00
1000,00
2000,00
3000,00
4000,00
5000,00
6000,00
128 256 512
Resolucão (Pixel)
Tam
anho
(B
ytes
)
gray21 (JPEG)
gray21 (BpBS)
Figura 19 – Gráfico resolução versus tamanho (bytes) da imagem Gray21. Fonte: Autoria própria, 2009.
De acordo com a gráfico acima, é possível ver o desempenho superior do
método BpBS quando comparado ao JPEG. Utilizando a Tabela 3 para uma analise
mais detalhada temos os seguintes dados; na resolução 128 x 128 pixeis do método
JPEG o tamanho em bytes é de 697 bytes enquanto para o método BpBS o
tamanho é de 615, já contando com um vetor de posições com 88 bytes. Nas
resoluções posteriormente testadas a superioridade aumenta. Com 256 X 256 pixeis
o tamanho é de 1810 bytes para o JPEG e 1520 bytes com um vetor de 416 bytes
no método BpBS. E na resolução 512 x 512 pixeis para o JPEG o tamanho é de
5244 bytes, já para o BpBS o tamanho final da imagem com um vetor de 1194 bytes
é de 4623 bytes.
É possível observar que a superioridade da compressão não é apenas mantida
como também ganha maior desempenho de acordo com que a resolução da imagem
se torna maior. Também é importante notar que o tamanho do vetor de posições é
diretamente proporcional ao tamanho da imagem que está sendo testada, uma vez
47
que, quanto maior a imagem, maior será o número de blocos semelhantes
encontrados.
E finalmente, para caracterizar o desempenho superior, o PSNR se manteve o
mesmo em todas as resoluções para o BpBs quando comparado com o JPEG.
Na Figura 20, será exibido o gráfico referente aos dados encontrados após a
realização dos testes na imagem Triângulos.
0,00
5000,00
10000,00
15000,00
20000,00
25000,00
256 512 1024
Resolução (Pixel)
Tam
anho
(B
ytes
)
triângulos (JPEG)
triângulos (BpBS)
Figura 20 – Gráfico resolução versus tamanho (bytes) da imagem Triângulos. Fonte: Autoria própria, 2009.
Da mesma maneira da imagem gray21, com o gráfico da imagem Triângulos já
é possível observar a superioridade do método BpBS. A partir dos dados da Tabela
3 a análise é descrita a seguir.
Na resolução 256x256 pixeis o tamanho da imagem no JPEG é de 2366 bytes
e no BpBS é de 1705 bytes com um vetor de posições de 223 bytes. Com a
resolução 512x512 pixeis o tamanho é de 6244 bytes para o JPEG e de 5216 bytes
para o BpBS e vetor de posições com 834 bytes. E para resolução 1024x1024 pixeis
o tamanho é de 20197 bytes no JPEG e 18364 bytes no BpBS, com vetor de 3576
bytes.
Em todas as resoluções o tamanho da imagem após o processo de
compressão BpBS, foi menor que a do JPEG, além disso o PSNR manteve-se o
mesmo ao do JPEG, desta maneira o processo BpBS pode ser caracterizado com
um desempenho superior ao JPEG. A imagem a seguir é a imagem residual da
48
Triângulos, após o processo de busca por blocos semelhantes do BpBS. A imagem
original está exposta no anexo A.
Figura 21 – Blocos residuais da imagem Triângulos na resolução 512. Fonte: Autoria própria, 2009.
Como se pode observar na figura 21, a imagem é praticamente preta salvo as
regiões onde não foram encontrados blocos suficientemente semelhantes. Isso
acontece, pois a imagem original, exposta no anexo A, tem regiões onde seus pixeis
são exatamente iguais, ou seja, onde existe uma região com tom de cinza, 136 da
escala RGB, toda aquela região conterá apenas tons de cinza 136, sem pequenas
variações para cima nem para baixo. Desta maneira no momento da busca por um
bloco semelhante, o bloco que foi predito é idêntico ao que está varrendo a imagem,
deixando um bloco residual com pixeis iguais a zero.
Das três imagens, onde os dados estão sendo analisados nesta seção, a única
que não obteve resultados satisfatórios em todas as 3 resoluções testadas é a
textmos2, pois na resolução 512x512 bytes o tamanho da imagem após a
compressão é maior para o BpBS quando comparado ao JPEG. Na Figura 22 é
mostrado um gráfico onde se pode observar essa constatação.
49
0
500
1000
1500
2000
2500
3000
3500
4000
4500
128 256 512
Resolução (Pixel)
Tam
anho
(B
ytes
)
textmos2 (JPEG)
textmos2 (BpBS)
Figura 22 – Gráfico resolução versus tamanho (bytes) da imagem Textmos2. Fonte : Autoria própria, 2009.
No gráfico acima, é possível constatar o desempenho superior do BpBS nas
resoluções 128 e 256, entretanto para a resolução 512 não houve ganho de
desempenho com relação ao JPEG. De acordo com a tabela 3, na resolução 128
com o JPEG o tamanho é de 1198 bytes e com o BpBS com 1160 bytes de
tamanho. Da mesma maneira na resolução 256 com o JPEG o tamanho de 2404
bytes, para os 2321 bytes o desempenho se mantém superior para o BpBS.
Tanto para a imagem Triângulos quanto para a imagem gray21 o tamanho do
vetor de posições não influenciou no desempenho superior do método BpBs em
quaisquer uma das resoluções. Porém na imagem textmos2 na resolução 512x512
pixeis o vetor de posições foi essencial para que o resultado não fosse satisfatório.
De acordo com a Tabela 3, sem o vetor de posições o tamanho da imagem no BpBS
é de 3093 bytes livrando de 568 bytes para os 3662 bytes do JPEG e com o vetor de
posições de tamanho 767 bytes, imagem final comprimida pelo BpBS tem um
tamanho de 3860.
Ao contrário das seções anteriores onde as imagens testadas foram captadas
no mundo real, as imagens testadas nesta seção, podem ser caracterizadas como
imagens para benchmarks, ou seja, imagens criadas exclusivamente para testes.
Como já foi esclarecido até o momento e constatado através das analises, as
imagens que mais obtiveram resultados a favor do método proposto neste trabalho
são as de benchmarks. O principal motivo para que estas imagens pudessem
garantir um desempenho superior foi questão de elas serem dividas em regiões
50
bem definidas onde a tonalidade de seus pixeis são exatamente iguais, de acordo
com a Figura 23, possibilitando ao BpBS gerar blocos residuais com pixeis
praticamente zerados, como na Figura 21.
Figura 23 – Tonalidade de cores para a imagem Triângulos. Fonte: Autoria própria, 2009.
Assim, ao contrário de como explicado na seção 0 onde havia um
heterogeneidade entre os pixeis dentro de blocos residuais, para imagens como
estas, analisadas na seção corrente, existe então, após a aplicação do método
BpBS, uma homogeneidade em relação a variação de intensidade de tonalidade
dentro dos blocos da imagem gerada. Com isso, ao ser aplicada a DCT nestes
blocos, os coeficientes relativos as altas e baixas freqüências são praticamente
nulos, pois não há variação entre os pixeis, como na Figura 21.
Devido a isso, após o processo de quantização a perda de qualidade será
praticamente zero, para estes blocos onde o resíduo nos pixeis foi zero, pois antes
de ser aplicada a matriz de quantização, os coeficientes relativos as altas, média e
baixas freqüências já estão praticamente zerados, não ocasionando nenhum tipo de
“arredondamento”.
Para a codificação utilizando HUFFMANN, a razão de compressão será ainda
maior no método BpBS do que no JPEG, devido a grande quantidade de
coeficientes iguais a zero gerados após o processo de DCT e quantização.
51
6 CONCLUSÃO
A utilização de técnicas de compressão de vídeo em compressão de imagens
são técnicas que comprovadamente conseguem aumentar a taxa de compressão
quando comparadas com técnicas específicas de compressão de imagens.
Através de trabalhos relacionados foi possível verificar que a qualidade gerada
após a aplicação de técnicas de compressão de vídeo gera imagens reconstruídas
com qualidade superior. Entretanto, quando o problema era complexidade de
codificação e decodificação ficou evidente que o tempo de processamento limita
muito esta abordagem.
No entanto, dos três parâmetros citados acima, apenas dois destes foram
utilizados como métrica para realização dos testes e analises nesta pesquisa, entre
eles estão, a qualidade da imagem após a reconstrução e a taxa de compressão da
imagem.
Com estes dois parâmetros, foram encontrados resultados diversos. Entretanto
é possível afirmar que, através dos procedimentos efetuados para o
desenvolvimento do algoritmo deste trabalho, o método BpBS encontrou resultados
que justificam o seu desenvolvimento através das constatações feitas ainda durante
o processo de pesquisa.
Como foi observado durante o capítulo 0, alguns dos resultados obtidos não
foram satisfatórios por detalhes, os quais a presente pesquisa não se aprofundou
pela questão do calendário estipulado em detrimento as metas que deveriam ser
alcançadas. Detalhes estes, que serão assinalados na seção 0.
Uma das constatações verificadas, que merece ser reiterada neste capítulo é a
analise realizada nos blocos 8x8 após a obtenção dos resultados. Foi observado que
dos resultados considerados satisfatórios, a imagem residual resultante do processo
BpBS, possui blocos residuais, muito mais homogêneos em relação a variação de
52
seus pixeis, quando comparado aos blocos das imagens onde não foram obtidas
resultados satisfatórios
A partir disto, pode-se acrescentar, que além de ter blocos com pixeis próximos
a zero para que o processo encontre uma compressão maior, a homogeneidade do
bloco também se faz necessária para que a DCT não gere coeficientes maiores em
relação a matriz da própria imagem, justificativa dada no capítulo 5.
Como exemplos de imagens que justifiquem o uso do método BpBS poderiam
ser citadas imagens de Raio X , imagens do universo e entre outras que possuam
uma grande homogeneidade entre o pixeis de uma imagem.
6.1 Contribuições
É importante também esclarecer as contribuições mais significativas deste
trabalho. Entre elas é possível citar que o trabalho além de desenvolver um método
diferenciado, utilizando técnica compressão de vídeo, também propõe uma maneira
diferente de otimizar o próprio processo de codificação do JPEG, uma vez que este
processo desenvolvido no trabalho é inserido antes do codificador JPEG.
Além disso, é possível considerar os conceitos que foram constatados devido
a pesquisa e o desenvolvimento realizado neste trabalho, como a homogeneidade
dos blocos após o processo de busca por blocos parecidos, sendo essencial para a
compressão da imagem.
Outra parte importante a ser considerada é questão do quão importante é
analisar técnicas sugeridas para outras propostas e que poderiam ser aproveitadas
em situações diferentes, beneficiando assim outros propósitos.
6.2 Trabalhos Futuros
Dentre os possíveis pontos que o trabalho poderia ser melhorado, um deles é o
vetor de posições, que se mostrou eficiente, e suficientemente razoável na maioria
das resoluções testadas, entretanto ficou comprovado que para o BpBS conseguir
uma taxa de compressão maior, é essencial que o vetor de posições consiga uma
taxa de compressão superior.
53
Para um trabalho futuro, pode-se sugerir um método de armazenamento
diferenciado para o vetor de posições, um método que privilegie a compressão de
seus dados.
Outro ponto que poderia ser abordado para trabalho futuros, seria a utilização
de cálculos diferenciados para estimativa de semelhança entre os blocos. Ao invés
de se utilizar um simples media das diferenças, poderia se utilizar a média
harmônica das diferenças, desta maneira o bloco escolhido seria mais homogêneo
em relação a variação de tonalidade entre os pixeis.
A partir daí, outra opção que poderia ser feita em cima desta abordagem, seria
criar matrizes de quantização diferenciadas que se seriam aplicadas de acordo com
o resultado da média harmônica, fazendo com que o arredondamento não causasse
tantas perdas, aumentando assim consideravelmente a qualidade da imagem após a
sua reconstrução.
Uma outra opção para trabalhos futuro seria uma varredura por blocos
diferenciada, ao invés de comparar os blocos de maneira estática, poderia ser feita
uma rotação do bloco que está varrendo a imagem, a fim de obter mais
possibilidades de encontrar blocos semelhantes.
Também poderia ser abordada em trabalho futuros, a utilização de blocos
menores para a comparação, com isso aumentaria a possibilidade de encontrar mais
blocos semelhantes. Entretanto, através de testes intermediários, deve-se ter o
cuidado de aplicar a DCT em blocos do mesmo tamanho que foram utilizados para a
busca por blocos semelhantes, pois como explicado na seção 4.2, se for aplicado a
DCT entre blocos diferentes a quantidade de coeficientes de baixa freqüência
aumentara, conseqüentemente diminuindo a qualidade e taxa de compressão.
54
REFERÊNCIAS
ARAVIND Al, Rao B.P., Kudva S.S. et al., “Quality and Complexity Comparison of H.264 Intra Mode with JPEG2000 and JPEG” IEEE Int’l Conf. on Image Processing , 24-27 Oct. 2004, p. 525- 528. BRUNO, Gaspare Giuliano Elias. VEBit: um Algoritmo para Codificação de Vídeo com Escalabilidade. 2003. 99 f. Dissertação (Mestrado) - Universidade Federal do Rio Grande do Sul, Instituto de Informática, Programa de Pós-Graduaçao em Computação. FERNAINDEZ - ESCRIBANO, G. Computational Complexity Reduction of Intra-Frame Prediction in MPEG-2/H. 264 Video Transcoders. IEEE International Conference on Multimedia and Expo , 2005. ICME 2005, Amsterdã, p. 707-710, jul. 2005. FERRAZ, Marcelo Coelho. Codificação de Imagens. 1998. 232 f. Dissertação (Mestrado) - Instituto Nacional de Matemática Pura e Aplicada, Rio de Janeiro. GONZALES, R. C.; WOODS R. E. “Processamento de Imagens Digitais”. Editora Edgard Blücher, 1992. 509p. HE, Xu; Pengyu Liu; Kebin Jia; Yanhua Zhang. “A Fast Intra-frame Prediction Algorithm Based on the Characteristic of Macro-block and 2D-histogram for H.264/AVC Standard”, Intelligent Information Hiding and Multimedia Signal Processing, 2007. IIHMSP 2007. Third International Conference on, Nov 2007. Volume: 1, p. 182-185. HU., Yu Hen – Jpeg encoder in matlab, 2006 disponível em http://www.mathworks.com/matlabcentral/fileexchange/10476, acessado em março de 2009. HUFFMAN D.A.; "A Method for the Construction of Minimum-Redundancy Codes", Proceedings of the I.R.E., September 1952, pp 1098-1102 KIM, Jong Nam; Tae Sun Choi. “Adaptive matching scan algorithm based on gradient magnitude forfast full search in motion estimation”, Consumer Electronics, 1999. ICCE. International Conference on Volume , Issue , 1999 p. 366 - 367
55
KATO, H. ; Takishima, Y.; Kaji, Y. “Fast Intra Mode Decision Method for MPEG to H.264 Transcoding”, Image Processing, 2006 IEEE International Conference on , 2006, p. 833-836. KEBIN, Jia ;Lv Zhuoyi; Xie Jing; Liu Pengyu; Zhu Qing. “A Fast Intra-frame Prediction Algorithm Based on Characteristic of 4×4 Subblock for H.264/AVC”, Innovative Computing, Information and Control, 2007. ICICIC '07. p. 242-242 KOPPS, João Leites Torma. “Análise de quantização vetorial utilizando rede neural artificial para a compressão de uma imagem digital”. 2007. 83 f. Monografia (Graduação em Ciência da Computação) - Centro Universitário La Salle, Canoas. MADHU, S. NAIR – Huffman Encoder in Matlab, disponível em http://www.mathworks.com/matlabcentral/fileexchange/14545 2007, acessado em março de 2009. MARPE D. George V., Cycon H.L. et al., “Performance Evaluation of Motion-JPEG2000 in Comparison With H.264/AVC Operated in Pure Intra Coding Mode,” SPIE Conf. Wavelet Application in Industrial Processing, Feb. 2004, p. 128-137. MITCHELL, J. L. et al. Mpeg video compression standard. New York, EUA: Chapman & Hall, 1997. 470p. MPE. ISO/IEC. 11172-2: Coding of moving pictures and associated audio for digital storage media at up to 1.5 Mbit/s, Part 2 - Video, MPEG-1 Standard, Switzerland, 1993. PARHI, K. K.; NISHITANI, T. Digital signal processing for multimedia systems. New York, EUA: Marcel Dekker, 1999. 860p. RICHARDSON I. E. G. H.264 and MPEG-4 Video Compression: Video Coding for Next Generation Multimedia. England: Wiley 2003. 320p. SALOMON, David. Data Compression: the complete reference. 3. ed. Springer, 2004. SHANNON, C. E. A mathematical theory of communication. Bell System Technical Journal, New York, v.27, p.379_423, July 1948.
56
SILVA JR., Nélson Ismar da. Um Sistema de Compressão de Imagens Aplicado a Documentos Históricos. 1993. 132 f. Dissertação (Mestrado em Ciência da Computação) – UFMG. YANG, Jiheng ; Baocai Yin; Nan Zhang. “A Block-Matching Based Intra Frame Prediction for H.264/AVC”, Multimedia and Expo, 2006 IEEE International Conference on Volume , Issue , 9-12 July 2006 p. 705 - 708
57
APÊNDICE A – TABELA DE TESTES COM RESULTADOS DO MÉT ODO JPEG
A tabela abaixo mostra os resultados dos testes do JPEG referentes a taxa de
compressão, razão de compressão, tamanho total da imagem, qualidade das imagens restauradas após o processo de decodificação.
Resolução Taxa de compressão Tamanho Imagem
Pixel bits/pixel bytes Razão : 1 PSNR
128 0,49744 1019 16,083 34,520
256 0,40788 3341 19,614 36,521 avião
512 0,35953 11781 22,251 37,093
128 1,1403 2335 7,016 32,385
256 0,80536 6598 9,934 35,212 elaine
512 0,67148 22003 11,914 33,077
128 0,63916 1309 12,516 33,188
256 0,60342 4943 13,258 33,788 golden
512 0,553 18121 14,467 34,097
128 0,34027 697 23,511 43,499
256 0,22098 1810 36,203 46,064 gray21
512 0,16003 5244 49,992 47,680
128 1,1524 2360 6,942 31,141
256 0,85458 7001 9,361 33,591 lenna
512 0,63938 20951 12,512 35,797
256 0,38341 3141 20,866 37,407
512 0,35452 11617 22,566 37,527 sandiego
1024 0,36148 47380 22,131 35,976
128 0,58502 1198 13,675 36,494
256 0,2934 2404 27,267 42,382 textmos2
512 0,11175 3662 71,590 56,931
256 0,2888 2366 27,701 37,041
512 0,19054 6244 41,987 40,126 triângulos
1024 0,15409 20197 51,917 41,834
58
APÊNDICE B – TABELA DE TESTES COM RESULTADOS DO MÉT ODO BPBS
A tabela abaixo mostra os resultados dos testes do método proposto nesta pesquisa referentes a taxa de compressão, razão de compressão, tamanho total da imagem, qualidade das imagens restauradas após o processo de decodificação.
Resolução Taxa de compressão Tamanho Tamanho Tamanho
Imagem Pixel bits/pixel bytes
Razão : 1 SNR Vetor(bytes) Total(bytes)
128 0,5011 1026 15,9649 34,520 2 1028
256 0,40959 3355 19,5316 36,521 3 3358 avião 512 0,36125 11837 22,1452 37,093 7 11844
128 1,1403 2335 7,0156 32,385 0 2335
256 0,80515 6596 9,9361 35,212 1 6597 elaine 512 0,67115 21992 11,9198 33,077 2 21994
128 0,6452 1321 12,3992 33,187 2 1323
256 0,60477 4954 13,2282 33,788 3 4957 golden 512 0,553 18121 14,4665 34,097 0 18121
128 0,25745 527 31,0744 43,499 88 615
256 0,13475 1104 59,3690 46,064 416 1520 gray21 512 0,10464 3429 76,4547 47,680 1194 4623
128 1,1524 2360 6,9420 31,141 0 2360
256 0,85458 7001 9,3613 33,591 0 7001 lenna 512 0,63938 20951 12,5121 35,797 0 20951
256 0,39986 3276 20,0072 37,357 184 3460
512 0,37378 12248 21,4030 37,502 812 13060 sandiego 1024 0,3615 47383 22,1301 35,976 1 47384
128 0,55109 1129 14,5168 36,481 31 1160
256 0,25529 2091 31,3363 42,166 230 2321 textmos2 512 0,094406 3093 84,7403 56,931 767 3860
256 0,18092 1482 44,2176 37,014 223 1705
512 0,13372 4382 59,8280 40,110 834 5216 triângulos 1024 0,11282 14788 70,9108 41,814 3576 18364
59
ANEXO A – IMAGENS UTILIZADAS PARA OS TESTES NOS MÉT ODOS JPEG E
BPBS
Imagem avião utilizada nos testes
Imagem elaine utilizada nos testes
Imagem golden utilizada nos testes
Imagem gray21 utilizada nos testes
60
Imagem lenna utilizada nos testes
Imagem sandiego utilizada nos testes
Imagem triângulos utilizada nos testes
Imagem textmos2 utilizada nos testes