Imagem Digital • • • • • • Paradigma dos 4 Universos Imagem no Universo Matemático Imagem no Universo de Representação (Universo Discreto) • Amostragem • Quantização Imagem no Universo de Codificação: • Palette de cores • RGBRGB • RRGGBB • Compressão • formato PPM • formato BMP • Biblioteca IM Processamento de Imagens • Ampliar e Reduzir • Realçar e Borrar • Combinação de Imagens • Mistura • Transparência • Adição e Subtração • Morphing Outros Assuntos • Dithering • Sprites • Animações (?) Paradigma dos 4 Universos Exemplo: VOZ HUMANA Universo Físico Universo Matemático Universo de Representação Discretização (Amostragem) 8 Universo de Implementação 9 8 7 8 9 7 8 9 9 7 8 Representação (Vetor) 8 9 8 7 8 9 7 8 9 9 7 8 Paradigma dos 4 Universos COR IMAGEM Universo Físico Cores no Universo Físico Imagens no Universo Físico Universo Matemático Modelos Matemáticos de Cor (Espaço) Funções no Espaço de Cor Universo de Representação Representação de Cor Amostragem e Quantização Universo de Implementação Especificação de Cor Codificação e Formatos Imagem bitmap x Imagem vetorial Imagens como Funções • Uma linha de uma imagem PB: Domínio 1D • Uma imagem PB: Domínio 2D • Uma imagem Colorida: Domínio 3D (?) Amostragem • Discretização espacial • Resolução (XxY pixels) Quantização • Discretização no espaço de cores (redução das cores usadas) • Critérios para escolha das cores (exemplos em 256 cores): • Quantização Uniforme (256 cores) • Algoritmo de Populosidade (16 cores) • Quantização por Aglumeração (16 cores) Imagem Original (24 bits) Digitalização de Imagens quantização 64x53 – 256 cores 315x260 – 256 cores 15 15 15 15 15 15 15 15 10 12 13 5 15 15 15 15 10 09 11 15 15 15 15 13 12 10 15 15 15 15 08 06 12 15 15 15 15 15 15 15 15 15 amostragem 64x53 - 16 cores codificação Codificação • Imagem no Universo de Codificação: • Palette de cores • RGBRGB • RRGGBB • Compressão • formato PPM • formato BMP • Biblioteca IM Obs: Imagens em formato raster (não vetorias) Palette de Cores • Geralmente com 256, 16 ou 4 cores Red Green Blue 255 0 0 180 148 149 132 123 125 Os pixels da imagem fazem referência aos índices da Palette 202 99 143 15 15 15 15 15 15 15 198 71 163 88 43 45 15 10 12 13 5 15 15 8 8 175 15 15 10 09 11 15 15 105 109 105 15 15 13 12 10 15 15 124 124 116 15 15 08 06 12 15 15 179 173 159 214 193 165 15 15 15 15 15 15 15 231 214 198 247 231 222 198 148 132 65 36 31 206 206 206 Palette RRGGBB Plano de Cores Azul Verde Verm. 06 Informação é uma componente da cor 06 07 08 09 ... 00 01 02 03 04 05 06 Organização dos pixels de uma imagem por planos de cores RRGGBB • Declaração em C das matrizes R, G e B de uma imagem colorida com resolução 200x300? • Qual o tipo a ser usado? • int, float, char, double ou void ? • short ou long ? • unsigned ? unsigned char R[60000], G[60000], B[60000]; • Atenção! Normalmente são ponteiros cujo espaço são alocados dinamicamente (malloc). RGBRGB 0 0 1 2 3 ... h-1 1 2 00 01 02 03 04 05 06 07 08 ... w-1 09 10 11 12 13 14 15 16 17 18 ... y Pixel (x,y) de uma imagem WxH offset=3*(w*y+x); red = rgb_vector[offset]; green = rgb_vector[offset+1]; blue = rgb_vector[offset+2]; x Compressão de imagens Compressão de Imagens Sem Perda Preserva exatamente o conteúdo da imagem Taxas de compressão 3:1 Com Perda Preserva de forma controlada o nível de qualidade da imagem Taxas de compressão que chegam a valores de mais de 100 : 1 Métodos de compressão Sem perdas » Run length encoding (RLE) - repetição » Huffman coding - histograma » Predictive coding - diferenças » Block coding (LZW) - dicionário Com perdas » Truncation coding - reduz a representação » Predictive coding - descarta diferenças altas » Block coding - dicionário aproximado » Transform coding - descarta frequencias altas Métodos compostos: JPEG, MPEG Processo de compressão e descompressão Dados da Imagem Original Dados da Imagem Original 32, 45, 57, 68, 23, 100, 98, ... 32, 45, 57, 68, 23, 100, 98, ... Compressão da imagem Descompressão da imagem 32, 45, 57, 68, 23, 100, 98, ... Imagem Comprimida Transporte e/ou Armazenamento 32, 45, 57, 68, 23, 100, 98, ... Imagem Comprimida Compressão - RLE Objetivo Reduzir a quantidade de dados redundantes. Exemplo AAAAAAxxx 6A3x Caracterísiticas Simples e rápido, porém a eficiência depende da imagem a ser comprimida. Codificação de Huffman s p a2 0.4 a6 0.3 a1 0.1 a4 0.1 a3 0.06 a5 0.04 0.4 0.3 0.1 0.1 0.1 s probabilidade a2 0.4 1 0.4 1 a6 0.3 00 0.3 00 a1 0.1 011 0.1 011 a4 0.1 0100 0.1 0100 a3 0.06 01010 0.1 0101 a5 0.04 01011 0.4 0.3 0.2 0.1 0.4 0.3 0.3 0.4 1 0.3 00 0.2 010 0.1 011 0.6 0.4 0.4 1 0.3 00 0.3 01 0.6 0.4 0 1 Redundância de Codificação r p(r) Code 1 l(r) l(r)p(r) Code 2 l(r) l(r)p(r) 0 1/7 2/7 3/7 4/7 5/7 6/7 1 0.19 0.25 0.21 0.16 0.08 0.06 0.03 0.02 000 001 010 011 100 101 110 111 3 3 3 3 3 3 3 3 0.57 0.75 0.63 0.48 0.24 0.18 0.09 0.06 11 01 10 001 0001 00001 000001 000000 2 2 2 3 4 5 6 6 0.38 0.50 0.42 0.48 0.32 0.30 0.18 0.12 Lavg= 2.70 1.00 Lavg= 3.00 rk = tons de cinza em uma imagem, k=0, 1, ..., -1 p(rk) = nk / n onde nk = número de pixels com tom rk n = número de pixels da imagem 01 10 11 001 -1 Lavg l rk prk k 0 0001 00001 000000 000001