Compressão de Imagem DCC 066 Prof. Rodrigo Luis de Souza da Silva
Sumário Motivação Definição de Compressão Redundâncias na Imagem Métodos de Compressão de Imagem com perda Métodos de compressão de Imagem sem perda Padrões de Compressão de Imagem 2
Motivação Informações gráficas normalmente envolvem uma grande massa de dados. Exemplos: imagens, vídeos, modelos 3D etc. A disponibilização e transmissão de tais informações é crítica em aplicações como: Internet Jogos HDTV Tele-conferência Para viabilizar estas aplicações, é necessário a adoção de técnicas capazes de compactar e recuperar a informação. 3
Motivação As imagens e os vídeos são as informações gráficas que compõem a maior parte de toda a informação visual transmitida e manipulada no momento Malhas triangulares, dados vetoriais e metadados possuem métodos próprios e mais eficientes de compactação e recuperação, em comparação aos métodos aplicados a imagens. Foco deste aula: Métodos e formatos para compactação e recuperação de imagens 4
Definição de Compressão Formas de diminuir a área de armazenamento dos dados, reduzindo a quantidade de bits para representar estes dados (imagem, texto ou arquivo qualquer). A compressão de imagem define-se como a forma (algoritmos e métodos) de armazenar informações visuais mais compactamente. 5
Redundâncias Diferentes tipo de redundância em imagens: Codificação de tons tons codificados com mais símbolos que o necessário (Exemplo: 1 byte por pixel para uma imagem com 4 cores, sendo que 1 byte pode representar 256 cores) Espacial derivados das relações geométricas e estruturais nas imagens (Exemplo: um círculo branco em um fundo negro requereria somente a codificação da borda) 6
Redundâncias Diferentes tipo de redundância em imagens (continuação): Espectral correlação dos valores na mesma posição da matriz de cada banda de uma imagem. Somente o valor de um canal precisaria ser armazenado Perceptual baseadas nas características do sistema visual humano que não responde com a mesma sensibilidade a todas as informações visuais (Exemplo: pequenos ruídos ou variações de tons muito baixos) 7
Medição do Desempenho Medida de desempenho: taxa de compressão (razão entre o tamanho do dado ou imagem original e o tamanho do dado após a compressão). Técnicas sem perda: quanto maior a taxa de compressão melhor é a técnica de compressão. Técnicas com perda: deve-se considerar também a qualidade do sinal ou dado reconstruído. Critérios de fidelidade: verifica-se se a remoção de dados causou perda de informação visual. Podem ser: objetivos ou subjetivos. 8
Critérios de fidelidade objetivos Funções de avaliação: Erro Total. Raiz Quadrada do Quadrado da Média dos Erros (Root Mean Square Error - e rms ). Relação Sinal Ruído (Signal To Noise Ratio - SNR rms ). Relação Sinal Ruído de Pico (Peak Signal to Noise Ratio - PSNR). 9
10 Sendo F(x, y) a imagem original e G(x, y) a imagem reconstruída, tem-se: Erro Total ou absoluto: Raiz Quadrada do Quadrado da Média dos Erros: 1 0 1 0 ), ( ), ( M x N y t y x F y x G e 1 0 1 0 2 ), ( ), ( 1 M x N y rms y x F y x G MN e Funções de avaliação
11 Razão ou Relação Sinal Ruído: Relação Sinal Ruído de Pico: 1 0 1 0 2 1 0 1 0 2 1 0 1 0 2 1 0 1 0 2 ), ( ), ( ), ( ), ( ), ( M x N y M x N y M x N y M x N y rms y x F y x G y x G y x e y x G SNR PSNR e n rms 20 2 1 log 10 Funções de avaliação
Modelos de compressão de imagens Um sistema de compressão de imagens consiste de 2 blocos: um codificador e um decodificador O codificador gera um conjunto de símbolos a partir da imagem de entrada O codificador é subdividido em 2 partes: uma que remove as redundâncias (codificador da fonte) e outra que adiciona informação para aumentar a imunidade ao ruído (codificador do canal) O processo de descompressão deve primeiro decodificar a forma usada na transmissão e depois obter a imagem propriamente dita. 12
Algoritmos de compressão Algoritmos de compressão podem ser de 2 tipos: Sem perdas procuram apenas reduzir as redundâncias na codificação. A recuperação (descompressão) recupera os dados originais. Com perdas produzem apenas uma aproximação do dado original eliminando as informações que não são tão importantes segundo algum critério estabelecido. Em geral, as taxas de compressão alcançadas pelos algoritmos com perdas são maiores dos que os sem perdas. 13
Compressão sem Perda Explora a redundância entre pixels na codificação. Nenhum dado é perdido durante o processo de compressão, preservando todas as informações que permitirão a reconstrução exata da imagem. Exemplos: RLE (Run Lenght Encoding), LZ (Lempel Ziv), LZW (Lempel Ziv Wech), algoritmo de Huffman (usadas nos formatos PCX, PNG, GIF, TIFF). 14
Métodos de Codificação sem perda Codificação de Huffman Codificação por LZW Codificação por LZ77 Codificação RLE 15
Codificação de Huffman A redundância de codificação é eliminada com base numa codificação que produz um código de tamanho variável, atribuindo os códigos de tamanhos menores aos níveis de cinza mais prováveis de ocorrer. Duas etapas: 1. Cria-se uma série de reduções dos símbolos através da junção de duas das menores probabilidades a cada iteração. 2. Codificam-se todos os símbolos que foram reduzidos começando com o de maior probabilidade que será associado ao menor código e voltando para os originais. 16
Codificação de Huffman Exemplo: imagem de tamanho 10x10 e 6 tons de cinza (a 1 a 2 a 3 a 4 a 5 a 6 ), tendo as seguintes probabilidade de ocorrência: 5/8 de a 1; 3/32 de a 2 e a 3, 1/32 de a 6 e a 4, e 1/8 de a 5. Primeira etapa da codificação de Huffman. 17
Codificação de Huffman Segunda etapa da codificação de Huffman para as probabilidades das palavras mostradas na figura anterior Informação Probabilidade Código a 1 5/8=20/32 0 a 10 3/8=12/32 1 a 9 7/32 10 a 8 5/32 11 a 5 1/8=4/32 101 a 2 3/32 100 a 3 3/32 110 a 7 2/32 111 a 4 1/32 1110 a 6 1/32 1111 Para transmitir essa informação obtém uma taxa média de: (5/8)*1+ (3/32)*3+ (3/32)*3+ (4/32)*3+ (1/32)*4+ (1/32)*4= 1,813 bits/informação 18
Codificação por LZW Faz uso de um dicionário de palavras contendo os símbolos que serão codificados. Exemplo: Imagem a ser codificada 39 39 126 126 39 39 126 126 39 39 126 126 39 39 126 126 19
Codificação por LZW Dicionário para entrada de símbolos. Posição do Dicionário (Endereço): Entrada: 0 0 1 1...... 255 255 256... 511 20
Codificação por LZW Preenchendo as entradas do dicionário e codificando. Se qüência reconhecida: Pixel processado: Saída codificada: Endereço do Dicionário: Entrada do Dicionário 39 39 39 39 256 39-39 39 126 39 257 39-126 126 126 126 258 126-126 126 39 126 259 126-39 39 39 39-39 126 256 260 39-39 - 126 126 126 126-126 39 258 261 126-126 - 39 39 39 39-39 126 39-39 - 126 126 260 262 39-39 - 126-126 126 39 126-39 39 259 263 126-39 - 39 39 126 39-126 126 257 264 39-126 - 126 126 126 21
Codificação por Código de Tons Corridos - RLE É a representação de cada linha de uma imagem por seqüências que descrevam trechos de pixels contínuos no mesmo tom. Na compressão por pixels consecutivos iguais (RLE), o número de pixels iguais e a cor destes são os valores a serem codificados e armazenados. É usada em algoritmos diferentes nos formatos de imagem PCX e BMP nas opções desses que usam tabelas de cores. 22
Compressão com Perda Há perda de dados durante a compressão da imagem. É mais eficiente em relação à área final de armazenamento devido à sua razão de compressão ser maior que a sem perda. Em aplicações de sinal de satélite ou dados de imagens médicas, entre outras, muitas vezes não é admissível compressão com perda. Diferentes formas de compressão com perda causam visualmente diferentes degradações na imagem. 23
Porque pode haver perda de dados Métodos e algoritmos de compressão eficientes devem levar em conta as características da visão humana. Obtem-se um arquivo comprimido de menor dimensão, mantendo, no entanto, a qualidade aceitável em relação ao original, conforme o objetivo que se pretende. Os erros e falhas causados pela compressão com perda de dados são conhecidos por artefatos de compressão (compression artifacts). 24
Compressão por Transformada Uma transformação linear inversível é usada para mapear a imagem para um conjunto de coeficientes, que são então quantizados e codificados. O estágio de quantização pode eliminar os coeficientes que carregam menos informação. Métodos que utilizam a Transformada Discreta do Co-seno são métodos que fazem uso de compressão por transformada. 25
Transformada Discreta do Coseno (DCT) Transforma discreta de co-senos em 2-D : T[ i, j] c( i, N 1 N 1 (2y 1) j (2x 1) i j) I[ x, y]cos cos x0 y0 2N 2N Coeficientes c(i,j): c(i, c(i, j) j) 2 N 1 N, para i e j 0 e, para i e j = 0 26
Transformada Discreta do Coseno (DCT) Transforma discreta de co-senos em 2-D : T[ i, j] c( i, N 1 N 1 (2y 1) j (2x 1) i j) I[ x, y]cos cos x0 y0 2N 2N Coeficientes c(i,j): c(i, c(i, j) j) 2 N 1 N, para i e j 0 e, para i e j = 0 No formato JPEG padrão, N = 8. 27
Transformada Discreta do Coseno (DCT) Transformada Inversa IDCT 2-D: I[ y, x] N 1 N 1 (2x 1) i (2y 1) c( i, j) T[ i, j]cos cos i0 j0 2N 2N j 28
Padrões de Compressão de Imagem GIF PNG BMP JPEG 29
Padrões de Compressão de Imagem Comparação entre alguns formatos de arquivos de imagens Formato Sistema de Cor Compressão GIF RGB com tabela de até 256 cores LZW TIFF RGB*, CMYK, YCbCr, Lab, Luv Nenhuma, RLE, LZW, JPEG, JBIG, Huffman e outros JPEG RGB, YC C, CMYK b r DCT, Huffman PCX RGB* RLE BMP A BGR* RLE ou nenhuma TGA RGB* RLE ou nenhuma PNG, MNG RGBA (alfa em 256 tons) LZ77 + Huffman = deflate JPEG2000 RGB, YC C, b r DWT ( wavelets ) ou nenhuma 30
GIF GIF (Graphics Interchange Format) - usa o algoritmo LZW. Pode armazenar mais de uma imagem no arquivo (animações). Armazena apenas imagens em cinza ou RGB com tabelas de 256 cores ou menos. Assinatura GIF : A assinatura é GIF + ano/versão. 31
Formato Geral de Arquivos GIF Elementos principais do formato 32
PNG PNG (Portable Network Graphics) - usa uma variação do algoritmo Lempel-Ziv 77 e também compressão Huffman, depois da compressão LZ, numa forma denominado LZH ou de Deflate/Inflate. PNG com animação é conhecido como MNG (Multiple Image Network Graphics). PNG surgiu em 1996 como substituto para o formato GIF. Permite comprimir as imagens sem perda de qualidade com muitas cores. 33
BMP BMP foi desenvolvido pela Microsoft. É o formato nativo de mapa de bits do Windows (a partir da versão 3.00). Projetado para sistemas operacionais que rodem sobre a plataforma INTEL (windows, linux, etc). Em outros tipos de arquiteturas como, por exemplo, Macintosh, deve ser usado outro formato mais adequado (PCX, GIF, TIFF etc). 34
Forma de armazenamento de arquivos BMP: DIB São armazenados no formato DIB (Device- Independent Bitmap). Permite exibir a imagem em qualquer dispositivo; ou seja o bitmap especifica a cor do pixel numa forma independente do método usado pelo dispositivo para representá-la. O BMP usa Formato Posicional, onde o significado do byte depende de sua posição no arquivo. 35
Versões de BMP quanto à quantidade de cor Podem ser classificados conforme a quantidade de bits para representar 1 pixel (bit/pixel). 1 bit/pixel (4=2 cores), 4 bits/pixel (24=16 cores), 8 bits/pixel (28=256 cores), 24 bits/pixel (true color com até 224=16 milhões de cores), 32 bits (true color com até 232= 4 bilhões de cores). 36
Compressão do BMP Arquivos formato BMP podem, nas versões de 4 e 8 bits/pixel, utilizar a compressão RLE (Run Length Encoded) A técnica de compressão RLE é usada neste formato somente até 256 cores 37
8 bits/pixels Este formato usa o RLE de 2 modos, denominados Encoded mode e Absolute mode. Encoded mode: compressão RLE em 2 bytes. O 1º byte especifica o número de pixels consecutivos que serão desenhados usando o índice de cor contido no 2o byte. Absolute mode: o 1º byte do par é ZERO e o 2º byte é um valor entre 0x03 e 0xff (isto é, 3 ou 255). Neste caso o valor do 2º byte representa o número de bytes seguintes que serão descritos na forma não comprimida. 38
4 bits/pixels Usa os mesmos 2 modos anteriores, mas agora cada 4 bits representam um dado. Um diferencial é o conceito de cor primária e secundária. Encoded mode: O 1 o byte do par contém o número de pixels que serão desenhados usando os índices de cores do 2 o byte. O 2 o byte contém 2 índices de cores Absolute mode: O 1 o byte contém ZERO e o 2 o byte contém o número de índices de cores que se seguem e os bytes seguintes indicam os índices de cores primárias e secundárias, sendo um índice de cores para cada pixel. 39
Estrutura geral do formato BMP Cabeçalho de arquivo: Contém a assinatura BM e informações sobre o tamanho e layout do arquivo BMP. Cabeçalho de mapa de bits: Contém as informações da imagem contida no arquivo. Paleta ou mapa de cores (opcional): Somente estará presente em arquivos de imagens que usam 16 ou 256 cores. Área de dados da imagem contida no arquivo: Dados que permitem a exibição da imagem propriamente dita, o dados dos pixels a serem exibidos. 40
JPEG JPEG (Joint Photographic Experts Group) - compressão com perdas. Permite o uso de até 2 24 (16 milhões de cores). Possui alto índice de compressão. Usa a compressão DCT (e depois Huffman). Permite gravar imagens sem usar tabelas de cores usando toda a informação de Tons de Cinza ou RGB. A compressão é realizada em três passos: computação; quantização; atribuição do código de tamanho variável. 41
JPEG Operações da compressão JPEG 42
JPEG O processo de compactação JPEG é composto das seguintes fases: A imagem é divida em blocos de 8x8 pixels e em cada um destes blocos é calculada a DCT (discrete cossine transform); Os coeficientes gerados pela DCT são quantizados e alguns coeficientes são eliminados. Na última etapa a codificação de Huffman é aplicada aos coeficientes quantizados. 43
JPEG O formato JPEG utiliza uma matriz de quantização Q[i,j]. Uma das possibilidades é dada pela expressão: Q[i, j] = 1 + (1 + i + j) * fator_de_quantização Obs: O fator_de_quantização é considerado entre 2 e 25 e os índices iniciam no zero. Matriz de quantização para fator 5. 6 11 16 21 26 31 36 41 11 16 21 26 31 36 41 46 16 21 26 31 36 41 46 51 21 26 31 36 41 46 51 56 26 31 36 41 46 51 56 61 31 36 41 46 51 56 61 66 36 41 46 51 56 61 66 71 41 46 51 56 61 66 71 76 44
Coeficientes gerados pela transformada do co-seno, antes da quantização com fator 5. 92.1 45-32 -7.3 1.1-1 0 1.9 68.5-87 49.8 28.1 11.3-1.3 2.7 1.3-49 69.1-61 -13 10.1 1.7 1.9 0 23.5-52 33.4 45.4-17 2 0.1 23-41 19.4-5.9 7.8 19.2-5.1-1.3 0 17.3-5.2 11.7 2.9-13 11.3 2.5-1.7-41 1.7 3.2-1.1 5.3 2.5-0.7 0 0-1.9 2.1 0 5.2 0 1.2-1 45
Coeficientes reconstruídos depois de quantização com fator 5. 90 44-32 0 0 0 0 0 66-80 42 26 0 0 0 0-48 63-52 0 0 0 0 0 4-52 31 36 0 0 0 0-26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46