A norma JPEG2000



Nuno Leite, nº 5170/M









Trabalho final da disciplina de Comunicação de Áudio e Vídeo realizado no âmbito do Mestrado em Engenharia Electrotécnica e de Computadores do Instituto Superior Técnico



Índice

1  Introdução

Neste trabalho apresenta-se um estudo sobre a norma JPEG2000 para codificação de imagem. Esta norma foi proposta em 2000 [1] e vem substituir a anterior norma JPEG, de 1992 [2]. A tabela 1 apresenta as vantagens e desvantagens do anterior standard JPEG.


Tabela 1: Vantagens e desvantagens do anterior standard JPEG.


JPEG ``baseline''
Vantagens Desvantagens
· baixos requisitos de memória · resolução única
· baixa complexidade · qualidade única
· taxa de compressão eficiente · impossibilidade de especificar o débito binário
· utilização do modelo visual · não existe compressão sem perdas
· robustez · não existe tiling
  · não é possível especificar regiões de interesse
  · efeito de bloco
  · fraca resiliência a erros


Características da norma JPEG2000
· Desempenho superior em baixo débito binário:
Embora fosse desejável um desempenho superior em qualquer débito binário, deu-se especial ênfase ao desempenho de imagens codificadas em baixos débitos. Em elevados débitos binários a norma JPEG2000 consegue, em média, taxas de compressão superiores em 20 % em comparação com a norma JPEG. Em baixos débitos, esta vantagem acentua-se significativamente.

· Compressão de imagens com diferentes níveis de precisão e componentes:
A norma JPEG2000 permite a compressão de imagens binárias, níveis de cinzentos, policromáticas (RGB) e multi-espectrais (até a um máximo de 216 componentes) e com precisão de pixel variável (até 16 bit por componente). O desempenho para imagens binárias (1 bit por amostra) é idêntico ao da norma para telecópia (fax), ITU-T (CCITT) G4.

· Transmissão progressiva por ``resolução espacial'' ou ``qualidade visual'':
A
transmissão progressiva é uma característica desejável quando estão envolvidos canais de comunicação com baixo débito binário. O JPEG2000 disponibiliza dois modos de transmissão progressiva: ``qualidade visual'' e ``resolução espacial''. No modo ``qualidade visual'', a resolução da imagem é fixa e à medida que são recebidos mais bits aumenta a qualidade da imagem descodificada. No modo ``resolução espacial'', a resolução da imagem descodificada aumenta à medida que é recebida mais informação do canal. Estes modos são idênticos aos modos progressivos e hierárquico da norma JPEG. O JPEG2000 suporta também transmissão progressiva das componentes multi-espectrais da imagem.

· Compressão com perdas (lossy) e sem perdas (lossless):
Ambos os modos de compressão (com e sem perdas) são suportados a partir de uma arquitectura única. É também possível, durante o processo de descodificação progressiva, reconstruir a imagem original (compressão sem perdas).

· Acesso aleatório ao codestream para processamento:
O JPEG2000 suporta mecanismos para acesso aleatório a zonas de interesse na imagem com diferentes níveis de granularidade e qualidade visual (a qualidade da imagem descodificada pode ser ajustada a cada região de interesse). Também são suportadas operações sobre a imagem codificada, incluindo translações, rotações, escalamentos e croping.

· Robustez a erros de bit:
Uma característica desejável no JPEG2000 era a resiliência a erros de bit introduzidos por canais de comunicação ruidosos, por exemplo wireless. Este objectivo é conseguido através de: inclusão de marcas de sincronização na imagem codificada, codificação dos dados em blocos de dimensão relativamente pequena, e a inclusão de mecanismos de detecção e ocultação de erros dentro do bloco.

· Reconstrução sequencial da imagem:
Esta característica tem como objectivo permitir a codificação da imagem de forma sequencial (de cima para baixo e da esquerda para a direita) sem ser necessário armazenar a imagem inteira. Esta é uma característica desejável em sistemas de digitalização com baixos recursos de memória.
O texto está organizado em 6 secções: a secção 2, intitulada ``A norma JPEG'', resume a norma JPEG em especial o modo sequencial (``baseline''). A secção 3, intitulada ``A norma JPEG2000'', descreve as características do codificador JPEG2000. Na secção 4 apresentam-se resultados experimentais e comparam-se os dois codificadores. A secção 5 elenca algumas das aplicações onde o JPEG2000 é usado. Finalmente, na secção 6 enumeram-se as conclusões do trabalho.

2  A norma JPEG

2.1  Introdução

O grupo de trabalho JPEG (Joint Photographic Experts Group) pertencente ao organismo ISO (International Standards Organization) estabeleceu, em 1992, o primeiro standard internacional para compressão de imagem. O standard JPEG [2] permite compressão com perdas (lossy) e sem perdas (lossless) e especifica quatro modos de operação:
Sequencial -
cada componente da imagem é codificada num único varrimento (de cima para baixo e da esquerda para a direita);

Progressivo -
a imagem é codificada usando vários varrimentos que produzem uma imagem sucessivamente de melhor qualidade;

Hierárquico -
a imagem é codificada em várias resoluções de modo a que resoluções mais baixas possam estar acessíveis sem descodificar a resolução mais elevada;

Sem perdas -
a codificação garante a reconstrução exacta de cada amostra da imagem original.
O codificador JPEG ``baseline'' (baseado no modo sequencial) [3] [4], geralmente usado na prática, é tratado no resto do capítulo.

2.2  Compressão de imagem com perdas

Antes de tratar o codificador JPEG ``baseline'', descreve-se de forma genérica a estrutura dum codificador/descodificador de imagem com perdas. A figura 1 ilustra o diagrama de blocos deste sistema. Ambos os codificadores JPEG ``baseline'' e JPEG2000 apresentam esta estrutura.


Figura 1: Diagrama de blocos do codificador/descodificador de imagem com perdas.


2.2.1  Pré-processamento

Este bloco realiza operações de pré-processamento incluindo: organização da imagem em blocos; transformação de espaço de cores, caso a imagem seja policromática; e ajuste do valor médio das amostras.

2.2.2  Transformada directa

Este bloco tem como objectivo transformar as amostras para o domínio da frequência onde podem ser eficientemente codificadas. A DCT (Discrete Cosine Transform) e a DWT (Discrete Wavelet Transform) são transformadas tipicamente usadas em processamento de imagem. A transformada explora a redundância espacial existente na imagem e tem como característica essencial a compactação de grande parte da energia da imagem num número reduzido de coeficientes.

2.2.3  Quantificação

O bloco de quantificação tem como papel reduzir o número de bits necessários para armazenar os coeficientes transformados, reduzindo a precisão desses valores. Enquanto o bloco de transformada explora a redundância, a quantificação explora a irrelevância existente nos dados. Este é um processo que introduz perdas (não reversível) e constitui a principal fonte de compressão do codificador.

No codificador, a operação de quantificação escalar mapeia cada valor do sinal num índice de quantificação, que é depois codificado como parte do bitstream (figura 2).


Figura 2: Quantificação e ``desquantificação''.


No descodificador, o índice de quantificação é descodificado e convertido no respectivo valor quantificado. Este processo é designado de ``desquantificação''.

A quantificação pode ser realizada em cada coeficiente individualmente (quantificação escalar) ou sobre um grupo de coeficientes (quantificação vectorial). Podem ser usados tanto codificadores uniformes (o passo de quantificação é igual para todos os níveis) ou não uniformes (o passo de quantificação varia de nível para nível), dependendo do problema a tratar. A quantificação não uniforme é usada quando se pretende explorar a irrelevância dos dados de forma não uniforme. Para detalhes sobre os diferentes tipos de quantificação, consultar [5].

2.2.4  Codificador entrópico

A redundância estatística existente nos coeficientes quantificados é extraída pelo codificador entrópico (este processo não introduz perdas). O codificador atribui palavras de código a cada coeficiente quantificado de acordo com o modelo de probabilidades da fonte previamente definido. Os codificadores Huffman e aritmético são codificadores tipicamente usados.

2.3  Codificador JPEG ``baseline''

As figuras 3 e 4 ilustram a arquitectura do codificador e descodificador ``baseline'' para imagens de níveis de cinzentos (grayscale).


Figura 3: Diagrama de blocos do codificador JPEG.




Figura 4: Diagrama de blocos do descodificador JPEG.


No codificador JPEG, a imagem é primeiro dividida em blocos de 8 × 8 amostras. Para imagens típicas, os pixels de cada bloco contêm alguma redundância espacial que é explorada pela transformada DCT.


Transformada DCT


A transformada DCT (Discrete Cosine Transform) [6] [7] constitui uma versão discreta da Série de Fourier que usa cosenos como funções de base. A DCT está relacionada com a DFT (Discrete Fourier Transform) - técnica usada para converter um sinal nas suas frequências elementares, sendo a DCT igualmente calculada usando o eficiente algoritmo Fast Fourier Transform (FFT), em O(N log2 N) operações.

A DCT é usada para transformar as amostras para o domínio da frequência e tem como característica a concentração de grande parte da energia do sinal nas componentes de baixa frequência. Numa imagem típica, os coeficientes de alta frequência tem amplitude zero ou próxima de zero e não necessitam de ser codificadas.

A transformada DCT não introduz perdas nas amostras da imagem dado que é uma transformada reversível; apenas transforma as amostras para um domínio onde possam ser eficientemente codificadas.

À saída do bloco FDCT os 64 coeficientes são quantificados uniformemente usando uma tabela de quantificação cuidadosamente desenhada. Lohscheller definiu uma tabela de quantificação que toma em conta o Sistema Visual Humano (SVH), atribuindo passos de quantificação mais elevados para as frequências mais altas e passos de menor amplitude para as frequências mais baixas, dado que o ser humano é menos sensível às altas frequências (transições bruscas na imagem).

Depois de quantificados, os coeficientes são ordenados em sequência ``zig-zag'', como ilustra a figura 5.


Figura 5: Sequência Zig-Zag usada no codificador JPEG.


Esta ordenação faz com que os coeficientes não nulos de baixa frequência fiquem agrupados facilitando a operação do codificador entrópico. O primeiro coeficiente (coeficiente DC ou valor médio), que contém uma parte significativa da energia da imagem, é codificado de forma diferencial, tirando partido do facto do valor médio não variar substancialmente de bloco para bloco.

A versão ``baseline'' utiliza como codificador entrópico o codificador de Huffman. O modelo de probabilidades dos símbolos criado no codificador é transmitido para o descodificador para permitir a descodificação das palavras de código.

3  A norma JPEG2000

3.1  Introdução

A norma JPEG2000 [8] [9] [1] [10] especifica o mais recente sistema de codificação de imagem, com o objectivo de servir as aplicações do novo milénio. São exploradas áreas onde os standards actuais não conseguem produzir a melhor qualidade ou ter o melhor desempenho. Anteriormente, os sistemas de compressão de imagem e/ou standards eram usados essencialmente como filtros de entrada/saída dentro das aplicações. Quando uma imagem era escrita em ficheiro era aplicada a função de compressão; quando esta era lida, aplicava-se a função de descompressão.

Neste cenário, as decisões sobre a qualidade da imagem e/ou o factor de compressão eram feitas na altura da compressão. No descodificador, apenas estavam disponíveis a qualidade, débito e resolução definidos no codificador. Por exemplo, no JPEG modo sequencial, as imagens são comprimidas usando uma determinada tabela de quantificação, fixando à partida a qualidade que é obtida no descodificador. Não é possível descodificar a imagem com menor (ou maior) qualidade. De forma semelhante, quando é usado o modo sem perdas do JPEG, não é possível realizar compressão com perdas, obtendo-se geralmente baixos factores de compressão. A norma JPEG-LS [11] permite obter ganhos de compressão mais elevados que o JPEG modo lossless, suportando também compressão com perdas. No entanto, todas as decisões continuam a ser realizadas na altura da codificação. Os modos progressivo e hierárquico do JPEG são os únicos modos em que existe alguma escalabilidade.

3.2  Comprimir uma vez: descomprimir de várias formas

O JPEG2000 introduz um novo paradigma na codificação de imagem. Os benefícios dos quatro modos do JPEG estão estreitamente integrados no JPEG2000. No compressor decide-se o nível máximo de qualidade da imagem, até e incluindo reconstrução original da imagem (compressão sem perdas). A resolução máxima e o débito binário podem igualmente ser definidos na altura da codificação. Qualquer qualidade de imagem ou resolução situados no intervalo definido no codificador podem ser obtidas descodificando os respectivos bits do codestream. A figura 6 ilustra os vários produtos que podem ser obtidos a partir do codestream JPEG2000.


Figura 6: Vários produtos podem ser obtidos a partir de um único codestream JPEG2000.


A seguir descrevem-se os vários blocos do codificador de imagem JPEG2000.

3.3  Pré-processamento


Criação de tiles


A imagem original é dividida em blocos rectangulares (tiles) de igual dimensão que são codificados separadamente. A dimensão dos tiles é arbitrária e pode ser no máximo igual à dimensão da imagem e no mínimo igual a um pixel. Esta divisão em blocos é particularmente útil em sistemas onde a quantidade de memória disponível é limitada comparada com a dimensão da imagem.


Ajuste da componente DC


A seguir, as amostras unsigned de cada componente da imagem são transformadas (ajuste da componente DC) subtraindo a cada amostra o valor 2B-1 (B é precisão de cada amostra em bits) de modo a tornar o seu valor simétrico em torno de zero. Este procedimento tem como intuito reduzir a precisão aritmética necessária para calcular a DWT.


Transformação do espaço de cores


As amostras transformadas são processadas com o objectivo de descorrelacionar as componentes de cor da luminância. A norma JPEG2000 define duas transformadas de cor: reversível e não reversível.

A transformada de cor reversível (RCT), como o próprio nome indica, é invertível e foi projectada para ser usada na codificação sem perdas (lossless):




Transformada RCT directa:
Y =
ê
ê
ê
ë
1
4
(R + 2G + B) ú
ú
ú
û
 
Cb = B - G  
Cr = R - G .     (1)

Transformada RCT inversa:
G =
Y - ê
ê
ê
ë
1
4
(Cb + Cr) ú
ú
ú
û
 
R = Cr + G  
B = Cb + G .     (2)

A transformada de cor irreversível (ICT) não tem inversa e é idêntica à transformação do espaço de cores RGB para YCrCb.
é
ê
ê
ë
Y
Cb
Cr
ù
ú
ú
û
= é
ê
ê
ë
0,299 0,587 0,114
-0,169 -0,331 0,500
0,500 -0,419 -0,081
ù
ú
ú
û
é
ê
ê
ë
R
G
B
ù
ú
ú
û
        (3)
       
é
ê
ê
ë
R
G
B
ù
ú
ú
û
= é
ê
ê
ë
1,0 0,0 1,402
1,0 -0,3441 -0,71414
1,0 1,772 -0,081
ù
ú
ú
û
é
ê
ê
ë
R
G
B
ù
ú
ú
û
        (4)

3.4  A Transformada Discreta de Wavelet

No JPEG2000 os blocos da imagem são transformados usando a Transformada Discreta de Wavelet (DWT), figura 7.


Figura 7: Divisão em tiles, ajuste da componente DC e aplicação da transformada DWT a cada bloco.


Esta transformada tem as seguintes características: As wavelets [12] [13] [14] são funções definidas num intervalo finito e de valor médio nulo (são pequenas ondas). A transformada de wavelet permite aproximar uma determinada função como a sobreposição de funções wavelet base, obtidas duma função wavelet mãe por escalamentos (dilatações ou contracções) e translações sucessivas.


Resolução tempo-frequência


Antes de surgir a transformada de wavelet a análise de frequência dum sinal era realizada com a Transformada de Fourier (TF). Esta transformada permite transformar uma função no domínio do tempo para o domínio da frequência. Os coeficientes Fourier do sinal transformado representam a contribuição das funções seno e coseno em cada frequência. As funções base seno e coseno da TF são localizadas na frequência.

Para realizar a análise de frequência numa determinada zona do sinal (ter resolução no tempo) recorria-se à transformada de Fourier com janela, STFT (Short-time Fourier Transform) [12] [14] [13]. Dado que a dimensão da janela temporal é fixa, a resolução da análise é a mesma em todas as localizações no plano tempo-frequência (figura 8).


Figura 8: Cobertura do espaço tempo-frequência usando a transformada de Fourier com janelas. Os valores de D w e D t são fixos em todo o plano.


A grande vantagem da transformada de wavelet reside no facto das funções wavelet serem localizadas no tempo e na frequência. Por exemplo, na análise das descontinuidades dum sinal, o desejável é ter-se funções base de curta duração. Por outro lado, se se pretender resolução na frequência o desejável é ter-se funções base de longa duração. Então, o ideal seria ter umas funções base de alta frequência e curta duração, e outras de baixa frequência e longa duração temporal.

Com a transformada de wavelet é possível especificar diferentes funções de base através de uma função base mãe aplicando escalamentos e translações. Em baixas frequências, correspondendo a um factor de escala s elevado (f = 1/s), o filtro de wavelet tem largura de banda pequena e uma longa janela temporal, resultando numa baixa resolução no tempo e elevada resolução na frequência. Em alta frequência, correspondendo a um baixo factor de escala s, o filtro de wavelet tem uma largura de banda alta o que implica uma janela temporal estreita, elevada resolução no tempo e baixa resolução na frequência. Deste modo, a resolução temporal na análise com wavelet aumenta com o aumento da frequência do sinal. A adaptabilidade da dimensão da janela é uma característica desejável em análise tempo-frequência (figura 9).


Figura 9: Cobertura do espaço tempo-frequência usando a transformada de wavelet. à medida que a frequência aumenta (1/s), melhora a resolução D t e aumenta a largura de banda D w.



Filtragem em sub-bandas


Aplicar a transformada de wavelet a um sinal é equivalente a realizar a análise do sinal em sub-bandas. A filtragem em sub-bandas consiste em analisar um sinal passando-o por um banco de filtros passa-banda e constitui um método muito usado em processamento de sinal para analisar o espectro dum sinal. Este método também tem sido largamente usado em codificação de voz; cada sub-banda resultante da filtragem com o banco de filtros é depois codificada usando um codificador que leva em conta as características da sub-banda. Este processo é conhecido por subband coding [13].

O desenho do banco de filtros é realizado de várias formas. Uma solução tipicamente usada devido à sua baixa complexidade consiste em dividir o espectro do sinal em duas metades iguais, a metade passa-baixo e a metade passa-alto. A metade passa-alto contém os detalhes mais finos do sinal (altas frequências). A metade passa-baixo pode ser novamente dividida em duas bandas, obtendo-se assim três zonas de interesse no espectro do sinal. Esta iteração é repetida até se atingir o número de bandas desejado. A figura 10 ilustra gráficamente a divisão do espectro em sub-bandas.


Figura 10: Divisão do espectro dum sinal em sub-bandas usando banco de filtros.


A vantagem deste esquema reside no facto ser necessário desenhar apenas dois filtros, LP e HP, sendo os outros filtros obtidos por iterações sucessivas; este método tem como desvantagem a cobertura fixa do espectro.


Decomposição do sinal usando wavelets


Como foi referido na secção anterior, a transformada de wavelet é usada para decompor um sinal em sub-bandas que correspondem a diferentes níveis de resolução. Existem várias formas de fazer esta decomposição, incluindo decomposição uniforme, decomposição oitavo de banda e decomposição adaptativa (também conhecida por decomposição wavelet-packet). Destas a decomposição oitavo de banda (octave-band) é a mais usada. A figura 11 ilustra este tipo de decomposição aplicado à imagem ``barbara''.

(a)   (b)
Figura 11: Decomposição da imagem ``barbara'' em sub-bandas: (a) imagem original (b) imagens resultantes da decomposição.


3.5  Quantificação

O JPEG2000 usa um quantificador uniforme com zona morta para quantificar os coeficientes wavelet. Para cada sub-banda b, o passo de quantificação Db escolhido (baseado no modelo visual humano) é usado para quantificar todos os coeficientes dessa sub-banda. A quantificação é realizada usando a seguinte regra:
q = sign(y) ê
ê
ê
ë
|y|
Db
ú
ú
ú
û
,     (5)
onde y é a entrada do quantificador, Db é o passo de quantificação, sign(y) representa o sinal de y, |y| representa o valor absoluto de x e ë x û representa o maior inteiro não superior a x.


Exemplo:


Seja y = -21,82 a entrada de quantificador e Db = 10; o índice do quantificador é:
q = - ë 21,82/10 û = -2 .     (6)
A quantificação é ilustrada na figura 12.



Figura 12: Exemplo de quantificação.


Para realizar a ``desquantificação'' é usada a seguinte regra:
  z = [q + r sign(q)] Db, para q ¹ 0  
z = 0, para q = 0 ,     (7)
onde q é o índice de quantificação, Db é o passo de quantificação, z é o valor reconstruído (com erro de quantificação), sign(q) representa o sinal de q e r é o desvio (``bias'') de reconstrução:
Exemplo:


Considere o exemplo ilustrado na figura 12. Seja q = -2 o índice de quantificação, Db = 10 e r = 0,375; o valor ``desquantificado'' é
z = (-2 -0,375) × 10 = -23,75 .     (8)


Codificação embebida dos índices de quantificação


Ao contrário do que acontecia no JPEG em modo sequencial, onde o índice de quantificação q era codificado como um único símbolo, no JPEG2000 é codificado um bit de cada vez, começando no bit mais significativo (MSB) e continuando até ao menos significativo (LSB) (figura 13).


Figura 13: Quantificação embebida usando codificação por bit-planes.


A organização em bit-planes tem várias vantagens incluindo descodificação progressiva dos índices de quantificação e codificação eficiente realizada pelo codificador entrópico [9].

Por exemplo, seja y = 83 o coeficiente de wavelet a codificar e Db = 3 o passo de quantificação usado; o índice de quantificação é: q = ë 83/3 û = 27 = 00011011 . Descodificando todos os bits de q obtém-se o seguinte valor ``desquantificado'': (27 + 0,5) × 3 = 82,5.

Após a descodificação de 6 bit-planes: Após a descodificação de 4 bit-planes:

3.6  Codificador entrópico

O codificador entrópico é constituído por duas camadas:
Camada 1:
Tem como objectivo codificar entrópicamente os índices de quantificação correspondentes aos coeficientes wavelet quantificados. Estes índices codificados são organizados em blocos (code-blocks) independentes e embebidos em bit-planes. O codificador entrópico usado é o codificador aritmético MQ-Coder (usando também na norma JBIG2 [15]).

Camada 2:
Realiza a multiplexagem dos blocos de bits e constrói o codestream suportando os seguintes tipos de descodificação progressiva: por ``resolução espacial'', por ``SNR'', por ``Região de interesse'' e por ``Componentes espectrais''.
Para melhor se compreender o funcionamento do codificador considere-se o seguinte exemplo. A figura 14 representa a imagem a ser codificada.


Figura 14: Imagem ``Lena'' após a decomposição de wavelet e quantificação.


A organização dos code-blocks em bit-planes é apresentada na figura 15.


Figura 15: Exemplo do algoritmo de codificação por bit-planes.


Na transmissão progressiva, podem ser configurados os seguintes modos:
  1. Resolução mínima, máxima qualidade: transmitem-se todos os bitplanes da primeira sub-banda (LL2);

  2. Resolução média, máxima qualidade: transmitem-se todos os bitplanes das primeira n sub-bandas (por exemplo: LL2, HL2, LH2 e HH2);

  3. Resolução máxima, máxima qualidade: transmitem-se todos os bitplanes de todas as sub-bandas;

  4. Resolução máxima, especificando a qualidade objectiva (SNR): transmitem-se alguns (a especificar) bitplanes de todas as sub-bandas;

  5. Resolução máxima, especificando a qualidade subjectiva (qualidade visual): transmitem-se alguns (a especificar) bitplanes de algumas sub-bandas.

Precints, Packets e Layers


O stream codificado está organizado em três componentes:


Figura 16: Sub-bandas, code-blocks e precints.


3.7  Resiliência a erros

Muitas das aplicações do JPEG2000 requerem a transmissão dos dados comprimidos sobre canais com diferentes características. Por exemplo, a comunicação via wireless é susceptível a erros aleatórios e de rajada (burst), enquanto que na comunicação via Internet podem perder-se pacotes de dados devido ao congestionamento da rede. A resiliência a erros é realizada em dois níveis:
  1. Protecção de dados dum code-block:

  2. Protecção de pacotes

Exemplo:


As figuras seguintes ilustram os resultados obtidos com o codificador JPEG2000 na presença de erros. O factor de compressão é de 16:1 sendo de 10-15 a probabilidade de erro num bit (distribuição uniforme no tempo). A figura 17 ilustra a situação em que não existem erros de transmissão. As figuras 18-(a) e 18-(b) ilustram situações de erro.


Figura 17: Imagem descodificada sem erros de transmissão.



(a) (b)
Figura 18: Imagem descodificada: (a) sem resiliência a erros e (b) com resiliência a erros.


4  Resultados experimentais

Nesta secção apresentam-se resultados experimentais obtidos com o JPEG2000.


Codificação fixando o débito binário

(a) (b)
Figura 19: Imagens codificadas usando o JPEG2000: (a) 0,125 bpp e (b) 0,5 bpp.



Codificação usando ROI


Figura 20: Codificação usando Região de Interesse (zona da cara). Fundo: 0,05 bpp; ROI: 1 bpp.



Codificação progressiva por ``Resolução espacial''

     
     
     
     
       
       
     

Figura 21: Imagens descodificadas correspondendo a várias resoluções espaciais.



Codificação progressiva por ``SNR''


Figura 22: Imagem ``Lena'' reconstruída após terem sido recebidos os bit-planes 1 a 9 (da esquerda para a direita e de cima para baixo).



Comparação com o JPEG

(a) (b)
Figura 23: Imagens codificadas a 0,125 bpp usando: (a) JPEG e (b) JPEG2000.



(a) (b)
Figura 24: Imagens codificadas a 0,5 bpp usando: (a) JPEG e (b) JPEG2000.




Tabela 2: Desempenho débito-distorção dos codificadores 'JPEG 2000' e 'JPEG baseline' para a imagem ``Lena''.


Débito (bits/pixel) PSNR médio em dB
  JPEG 2000 JPEG baseline
0,0625 22,82 --
0,125 24,84 --
0,25 27,61 25,65
0,5 31,35 28,65
1,0 36,22 32,56
2,0 42,42 38,24

5  Aplicações

A norma JPEG2000 é actualmente usada nas seguintes aplicações: Mark Nelson mantém uma página Web [16] sobre o JPEG2000 com informação muito completa, incluindo implementações software e hardware, produtos, organizações, etc.

6  Conclusões

Este trabalho apresenta um estudo sobre a norma JPEG2000. Este novo standard oferece um desempenho superior, a todos os níveis, ao da anterior norma: melhora a taxa de compressão, em cerca de 20%, em média; em baixos débitos, o desempenho é muito superior tanto em termos de qualidade visual subjectiva como relação SNR [9].

Os quatro modos de operação do JPEG estão agora estreitamente integrados no JPEG2000, permitindo codificação com e sem perdas usando o mesmo algoritmo, descodificação progressiva da imagem por ``Resolução espacial'', ``SNR'' ou ``Componentes''.

Com a utilização da transformada de wavelet melhora-se a escalibilidade do algoritmo de codificação, removendo o indesejável efeito de bloco.

A eficiente organização do codestream em bitplanes, code-blocks, layers e precints permite melhorar a robustez a erros de bit, característica de canais wireless, uma das aplicações emergentes do standard.

Referências

[1]
ISO/IEC 15444-1. JPEG2000 Image Coding System. 2000.

[2]
Recommendation T.81: Digital Compression and Coding of Continuous-tone Still Images. 1992.

[3]
G. K. Wallace. The JPEG Still Picture Compression Standard. Comm. ACM, 34(4):30--44, Abril 1991.

[4]
W. B. Pennebaker and J. L. Mitchell. JPEG - Still Image Data Compression Standards. Van Nostrand Reinhold, 1993.

[5]
A. Gersho and R. M. Gray. Vector Quantization and Signal Compression. Kluwer Academic Publishers, 1991.

[6]
T. Natarajan N. Ahmed and K. R. Rao. Discrete Cosine Transform. IEEE Trans. Computers, C-23, Janeiro 1374.

[7]
J. D. Villasenor M. J. Tsai and F. Chen. Stack-Run Image Coding. IEEE Trans. CSVT, 6(5):519--521, Outubro 1996.

[8]
D. Taubman and M. Marcellin. JPEG2000: Image Compression Fundamentals, Practice and Standards. Kluwer Academic Publishers, 2001.

[9]
M. Rabbani and R. Joshi. An Overview of the JPEG2000 Still Image Compression Standard. Signal Processing: Image Communication Journal, 17(1):3--48, Outubro 2001.

[10]
M. Rabbani and D. Santa-Cruz. Short course: JPEG 2000 image coding standard. International Conference in Image Processing (ICIP), 2001, disponível em: http://ltswww.epfl.ch/~dsanta/teaching/.

[11]
ISO/IEC 14495-1 and ITU-T Recommendation T.87. Information Technology - Lossless and Near-lossless Compression of Continuous-tone Still Images. 1999.

[12]
Amara Graps. An introduction to wavelets. IEEE Computational Sciences and Engineering, 2(2):50--61, 1995.

[13]
C. Valens. A Really Friendly Guide to Wavelets. 1999, disponível em: http://perso.wanadoo.fr/polyvalens/clemens/wavelets/wavelets.html.

[14]
Y. Sheng. Wavelet transform in "The Transforms and Applications Handbook", A.D. Poulariskas Ed. Chap. 10. CRC and IEEE Press, Boca Raton, 1995.

[15]
ISO/IEC 14492 and ITU-T Recommendation T.88. JBIG2 Bi-level Image Compression Standard. 2000.

[16]
Mark Nelson. Ligações sobre o JPEG2000. Mark Nelson's Data Compression Page, http://datacompression.info/JPEG2000.shtml.