Você está na página 1de 44

FORMATOS de IMAGEM

por

Joo Manuel Brisson Lopes


Departamento de Engenharia Informtica

texto elaborado para a disciplina de

Computao Grfica Licenciatura em Engenharia Informtica e de Computadores

publicado em Janeiro de 2003 reeditado em Dezembro de 2008

Este texto, elaborado no contexto da disciplina de Computao Grfica da Licenciatura em Engenharia Informtica e de Computadores do Instituto Superior Tcnico, foi originalmente concebido para fazer parte de um conjunto de textos sobre Computao Grfica, apresentando-se agora como um texto independente. Contacto do autor: brisson@ist.utl.pt

2003, 2008 J. M. Brisson Lopes & IST

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Formatos de Imagem

1 Introduo
O maior nmero de resultados produzidos por aplicaes de Computao Grfica constitudo por imagens que, ou so transmitidas para um destinatrio que as observa medida que so geradas, ou so armazenadas. Em qualquer dos casos, no basta transmitir ou armazenar o contedo das imagens por si s. tambm necessrio transmitir ou guardar a informao que descreve as imagens, tal como as suas dimenses, emprego de cores, etc. Toda esta informao tem que se encontrar devidamente estruturada para que as aplicaes que apresentem as imagens possam interpretar correctamente a informao transmitida ou armazenada. Por outras palavras, necessrio convencionar ou normalizar a estrutura desta informao, ou seja, o formato das imagens. As primeiras imagens produzidas por aplicaes de Computao Grfica eram do tipo vectorial. Eram relativamente fceis de armazenar pois eram imagens a preto e branco de que bastava guardar os comandos vectoriais correspondentes s linhas e caracteres que as compunham1. No entanto, logo se colocou o problema de como representar externamente os comandos, as coordenadas dos pontos e as cadeias de caracteres que as integravam, tendo surgido dois tipos de soluo. Enquanto a Hewlett-Packard optou por uma descrio textual (em ASCII) dos comandos atravs do formato HP-GL2, que era legvel por qualquer pessoa, a Tektronix optou por um formato binrio, onde tanto os comandos como os valores das coordenadas se encontravam codificados em forma binria. Este formato binrio, o formato Tek 4010/14, pretendia reduzir ao mnimo o espao ocupado pelas imagens a transmitir ou armazenar. Com o aumento da funcionalidade dos equipamentos grficos de sada houve que modificar estes dois formatos de forma a poderem suportar unidades traadoras3 com mais do que uma caneta4 e terminais grficos a cores. Por outro lado, a generalizao de
1

Quatro comandos (MOVETO, LINETO, STRING e CLEAR) eram suficientes para este tipo de imagens. 2 Hewlett-Packard Graphics Language, que cresceu e foi sucessivamente enriquecida, sendo hoje empregue como linguagem de descrio de pginas. 3 Plotters. 4 O nmero de canetas dependia da unidade traadora.
DEI Instituto Superior Tcnico 1

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

unidades grficas de sada do tipo quadrcula (raster) veio alterar profundamente a situao e, em consequncia, assistiu-se multiplicao de novos formatos e ao seu progressivo aperfeioamento. Neste captulo, apresentaremos alguns dos formatos de imagem de uso mais generalizado, alm de outros, como os formatos PBM e de imagens de aplicaes em Medicina, de interesse mais didctico ou informativo. Dada a sua preponderncia, consideraremos apenas formatos do tipo de quadrcula. Apresentaremos, inicialmente, os conceitos mais relevantes para o tema tratado, como os conceitos de mapa de cores, entrelaamento, cores reais e compresso de imagem. Nas seces seguintes, sero sucessivamente analisados o formato PBM, que, devido sua simplicidade, constitui um ptimo ponto de partida sob o ponto de vista didctico, o formato DIB, bastante semelhante ao formato PBM, e o formato GIF que, durante muitos anos, e mesmo actualmente, um formato de imagem extremamente popular, embora apresente limitaes ao seu emprego a imagens de qualidade fotogrfica. De seguida, apresentaremos o formato PNG, criado para ultrapassar as limitaes do formato GIF, e o formato JFIF (JPEG), destinado a imagens de qualidade fotogrfica. O formato GE Sygna, apresentado por ltimo, destina-se a dar uma ideia dos requisitos a suportar pelos formatos de imagens em aplicaes Medicina. Estes requisitos derivam da necessidade de acompanhar tais imagens de informao constituindo numa verdadeira ficha do paciente e das condies em que os exames foram realizados. Finalmente, apresentaremos um resumo das principais caractersticas dos formatos descritos e exemplos comparativos do espao ocupado por imagens nesses formatos.

1.1

Imagens de Quadrcula

Com o advento dos terminais grficos de quadrcula deixou de ser possvel recuperar o contedo das imagens em forma vectorial. A representao de imagens passou a ter que armazenar a informao de todos os pontos da quadrcula, os pxeis das imagens, a sua cor e o nmero de linhas e de colunas da quadrcula, alm de outra informao como a referente s dimenses reais dos pxeis, pois a relao entre a sua altura e largura pode variar de unidade para unidade grfica e causar distores. Entre outra informao que, mais tarde, foi necessrio incluir, encontra-se a correco gama aplicada s imagens, por forma a evitar que uma mesma imagem apresentada em diversos equipamentos por visualizadores da World Wide Web possa aparentar cores escurecidas num equipamento e cores berrantes num outro. Nos primrdios do emprego de equipamentos grficos de quadrcula surgiram muitos formatos de imagem. Uns desapareceram entretanto, outros continuam ainda hoje a ser empregues. Os mais simples destes formatos limitam-se a indicar a largura e a altura da imagem (em pxeis), o tipo de imagem (a cor ou em tons de cinzento) e, depois, os valores das intensidades RGB de cada pxel para imagens a cor, ou o valor da intensidade de luz de cada pxel para imagens em tons de cinzento, segundo uma ordem convencionada, a conveno de varrimento dos pxeis da imagem.

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Figura 1.1 Ordenamento dos pxeis de uma imagem por varrimento ascendente das linhas ( esquerda) e por varrimento descendente ( direita). prtica corrente armazenar a informao sobre os pxeis de uma imagem varrendo os pxeis de cada linha da esquerda para a direita. As linhas so por sua vez armazenadas consecutivamente, uma linha atrs da precedente, seguindo uma ordem que pode ser ascendente (da linha inferior da imagem para a linha superior) ou, o que mais comum, descendente (da linha superior para a linha inferior).

1.2

Mapa de Cores

Inicialmente, os terminais grficos de quadrcula podiam apenas apresentar um nmero muito reduzido de cores, primeiro 16 e, mais tarde, 256. Para uma imagem a cores de dimenso tpica dessa altura, constituda por 360 linhas e 270 colunas, num total de 97.200 pxeis, era necessrio armazenar o triplo do nmero de pxeis (291.600) em unidades de informao5. A transmisso de uma tal imagem atravs de uma linha de grande velocidade (19200 bps) de ento6 demorava cerca de 137 segundos, no melhor dos casos. A introduo de mapas de cores permitiu reduzir este tempo. Um mapa de cores uma estrutura que declara as componentes RGB das cores empregues pela imagem a que se encontra associada, atribuindo a cada cor um ndice nico. Cada cor declarada num mapa de cores ocupa 3 unidades de informao, ou seja, para 256 cores, o mapa de cores ocupar 768 unidades de informao. Se a informao de cada pxel for constituda pelo ndice da respectiva cor, cada pxel ocupar apenas uma unidade de informao e no 3. Para a imagem das dimenses que estamos a considerar, passa a ser necessrio armazenar 97.968 (768+97.200) unidades de informao. O emprego do mapa de cores permite assim reduzir o espao ocupado pela imagem a 33,6% do espao originalmente necessrio. O tempo de transmisso da imagem ser igualmente reduzido na mesma proporo. Note-se que, embora a imagem seja de pequena dimenso, este valor de 33,6% est j muito prximo do valor limite que de 33,3%.

Uma unidade de informao corresponde a 4 bits se a imagem empregar 16 cores e a 8 bits (1 byte) se empregar 256 cores. 6 Linha de transmisso em srie, com um nico bit de paragem e sem bit de paridade.
DEI Instituto Superior Tcnico 3

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Figura 1.2 Mapa de cores. Por cada pxel, a imagem contm um ndice que transformado nas componentes de cor na apresentao da imagem num ecr.

1.3

Entrelaamento

Mesmo com a reduo de tamanho permitida pelo emprego de um mapa de cores, a imagem do exemplo anterior levaria ainda cerca de 45,9 segundos a ser transmitida. O utilizador teria que esperar todo este tempo at poder observar a imagem e ficar com uma ideia do seu contedo. Ora acontece que muita da informao constante de uma imagem redundante, isto , no necessrio visualizar todos os pxeis de uma imagem para formar uma ideia do seu contedo, principalmente quando se procura uma imagem. Foi exactamente para permitir a observao do contedo de uma imagem sem dispor de todos os seus pxeis que foi desenvolvida a tcnica do entrelaamento a partir de uma tcnica semelhante empregue na transmisso de imagens de televiso. A tcnica bsica de transmisso parcial e progressiva de imagens por entrelaamento consiste em reordenar as linhas das imagens, organizando-as em vrios grupos. Cada grupo contm parte das linhas da imagem total e, se uma linha for atribuda a um grupo, essa linha no far parte de qualquer outro grupo. A transmisso da imagem grupo a grupo permite que o utilizador comece a formar uma ideia da imagem aps apenas algumas linhas terem sido transmitidas. O utilizador comea por ver uma imagem nos seus traos gerais, com poucas linhas e sem detalhes, e, medida que vo sendo apresentados novos grupos de linhas, verificar um aumento progressivo da qualidade e do nmero de detalhes7. O formato de imagem GIF emprega este tipo de entrelaamento em 4 passagens pelas linhas das imagens. Numerando as linhas de 0 a n, a primeira passagem processa as linhas 0, 8, 16, etc., a segunda passagem as linhas 4, 12, 20, etc., e a terceira passagem as linhas 2, 6, 20, 24, etc. Finalmente, a quarta passagem processa todas as linhas que ainda no foram processadas (1, 3, 5, 7, etc.). Cada uma das primeiras duas passagens
7

Esta caracterstica pode ainda hoje ser observada durante o carregamento de imagens transmitidas pela WWW quando o fluxo de dados baixo.
4 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

processa assim 1/8 da imagem, a terceira 1/4 e a quarta passagem a metade restante das linhas. Para o exemplo anteriormente apresentado de uma imagem de 360270 pxeis e com 256 cores, todas as linhas do primeiro grupo sero visveis ao fim de 6,1 segundos8, as do segundo grupo ao fim de 11,7 segundos e as do terceiro grupo ao fim de 23,1 segundos. A imagem ficar completa com o quarto grupo ao fim de 45,9 segundos. A figura 1.3 apresenta as imagens parciais resultantes da transmisso de uma imagem com o entrelaamento do formato de imagem GIF. Um outro tipo de entrelaamento processa pxeis individuais em lugar de processar linhas. Os pxeis a transmitir em cada passagem so determinados por um padro de nn pxeis de que so feitas tantas cpias quanto as necessrias para cobrir toda a imagem, estando as cpias justapostas. O algoritmo de entrelaamento Adam7, empregue pelo formato de imagem PNG, define um padro de 88 pxeis
1 7 5 7 3 7 5 7 6 7 6 7 6 7 6 7 4 7 5 7 4 7 5 7 6 7 6 7 6 7 6 7 2 7 5 7 3 7 5 7 6 7 6 7 6 7 6 7 4 7 5 7 4 7 5 7 6 7 6 7 6 7 6 7

que aplica a toda a imagem, comeando pelo canto superior esquerdo. Se, por exemplo, a imagem a transmitir apresentar a dimenso de 1616 pxeis, cada uma das 7 passagens transmitir novas linhas cujo nmero e comprimento variaro com a ordem da passagem, tal como a tabela 1.1 apresenta. A figura 1.4 apresenta o aspecto da imagem da figura 1.3 aps algumas das passagens de entrelaamento realizadas segundo o algoritmo de entrelaamento Adam7. Retomando o exemplo anterior, as 7 passagens do algoritmo de entrelaamento Adam7 encontrar-se-o completas ao fim de 1,1s, 1,8s, 3,2s, 6,1s, 11,8s, 23,1s e 45,9s, respectivamente.

16 s

31 s

62 s

123 s

Figura 1.3 Imagens parciais e respectivos tempos de apresentao de uma imagem de 512 512 pxeis pelo algoritmo de entrelaamento do formato GIF. Os tempos so contados em relao ao incio da apresentao da imagem.

No esquecer que o mapa de cores tem que ser transmitido antes das linhas.
5

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Passagem n 1 2 3 4 5 6 7

N de linhas transmitidas 2 2 2 4 4 8 8

Comprimento Bytes das linhas transmitidos 2 2 4 4 8 8 16 Total 4 4 8 16 32 64 128 256

Tabela 1.1 Nmero e comprimento das linhas transmitidas de uma imagem de 16 16 pxeis pelo algoritmo de entrelaamento Adam7 (formato PNG).

2s

4s

8s

16 s

31 s

62 s

123 s

Figura 1.4 Imagens parciais e respectivos tempos de apresentao de uma imagem de 512 512 pxeis pelo algoritmo de entrelaamento Adam7 (formato PNG) com 7 passagens. Os tempos so contados em relao ao incio da apresentao da imagem.

1.4

Full Color e True Color

O avano tecnolgico permitiu que, sucessivamente, fossem sendo comercializados equipamentos permitindo cada vez mais pxeis e cores. A designao High Color corresponde possibilidade de utilizar 16 bits para cada cor ou intensidade de tons cinzentos, e permite o emprego de at 65536 cores diferentes numa imagem. Por seu lado, a designao True Color (cores reais) corresponde a equipamentos que empregam 24 bits para representar uma cor, ou seja, possvel apresentar imagens que empreguem

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

at 16.777.216 (224) cores. Este ltimo nmero de cores mais do que suficiente para representar imagens de qualidade fotogrfica, dado que este nmero muito superior capacidade de descriminao de cores da viso humana9. No entanto, convm notar que existem domnios de aplicao que requerem um ainda maior nmero de cores, como acontece nos arquivos de pinturas. As imagens destes arquivos tm que permitir o emprego de um nmero de cores muito para alm dos limites da viso humana. Para este fim existem actualmente formatos que empregam 48 bits por pxel (248 cores). As imagens dos tipos High Color e True Color no empregam mapas de cores, pois o mapa de cores de uma imagem com 24 bits por pxel poderia ocupar 50.331.648 bytes. Este espao muito maior do que o espao ocupado por uma imagem de muito alta resoluo de 40963072 pxeis e 24 bits por pxel (37.748.736 bytes).

1.5

Compresso

Como vimos anteriormente, o espao ocupado por uma imagem com 24 (ou mesmo 16) bits por pxel pode ser demasiado grande, bastando para tal considerar que uma imagem de 800600 pxeis e 24 bits por pxel ocupa 1.440.00 bytes, mesmo se considerarmos a capacidade actual das unidades de disco rgido. Este problema, que no de hoje, verificava-se j durante a transmisso de imagens de dimenso e nmero de cores reduzidos, embora, nessa altura, a nfase do problema residisse no tempo de transmisso. A soluo deste problema consiste em compactar a informao das imagens, comprimindo essa informao. Existem muitos algoritmos de compresso de informao, mas nem todos so adequados compresso de imagens. Mesmo aqueles que o so produzem resultados variveis porque a natureza das imagens pode variar muito. Consideremos duas imagens de igual dimenso e nmero de bits por pxel, uma contendo um grfico de linhas e outra contendo uma imagem de qualidade fotogrfica. O nmero de cores empregues por cada uma destas imagens muito diferente. Enquanto um grfico poucas vezes necessita de mais do que 8 cores, uma imagem de qualidade fotogrfica emprega usualmente centenas de milhar de cores. Mas, a diferena fundamental reside em que a imagem contendo o grfico apresenta grandes grupos de pxeis consecutivos em que todos os pxeis apresentam a mesma cor, enquanto a ocorrncia de tais grupos rara, seno inexistente, na imagem de qualidade fotogrfica. A ocorrncia de grupos de pxeis consecutivos da mesma cor propicia o emprego de algoritmos de compresso do tipo RLE (Run Length Encoded) que substituem tais grupos por duas unidades de informao: o nmero de pxeis do grupo e o ndice de cor dos seus pxeis. O formato de imagem DIB emprega esta tcnica a grupos de 8 ou 4 bits, consoante a imagem seja a 256 ou 16 cores, respectivamente. A implementao do algoritmo RLE pelo formato DIB define dois modos: codificado e absoluto. Com grupos de 8 bits, e em modo modificado, cada unidade codificada representada por dois bytes. O primeiro byte contm o nmero de pxeis consecutivos a serem representados pelo ndice de cor contido no segundo byte. Neste modo, quando o valor do primeiro byte for 0, assume-se que a unidade codificada representa uma sequncia
9

Note-se que, face a este nmero de cores, a diferena entre uma imagem em formato digital e uma imagem fotogrfica reside no nmero de pxeis da imagem digital, que ainda inferior.
DEI Instituto Superior Tcnico 7

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

especial que determinada pelo valor do segundo byte. Se este valor for 0, a sequncia especial assinala que se atingiu o fim de uma linha da imagem. O fim da imagem (todas as linhas j foram processadas) assinalado pelo valor 1 deste segundo byte. No caso em que o valor do segundo byte 2, os dois bytes que se seguem sequncia indicam a posio do prximo pxel a processar relativamente ao pxel corrente (o ltimo pxel processado). O primeiro destes dois bytes indica o nmero da linha do prximo pxel a processar (1 significa na linha seguinte), enquanto o segundo byte indica o nmero da coluna desse prximo pxel relativamente coluna corrente (0 significa na mesma coluna). Em modo absoluto, o primeiro byte encontrado tem o valor 0 e o segundo byte contm um valor compreendido entre 3 e 255, inclusive10. Este segundo byte representa o nmero de bytes que se seguem e em que cada um deles contm o ndice da cor do respectivo pxel. Quando o algoritmo RLE aplicado a grupos de 4 bits, a nica diferena para o algoritmo RLE aplicado a grupos de 8 bits consiste em que os bytes contendo ndices de cor armazenam os ndices de dois pxeis consecutivos no mesmo byte. Os 4 bits mais significativos contm o ndice do prximo pxel, enquanto os 4 bits menos significativos contm o ndice de cor do pxel que se lhe segue. Existem outras famlias de algoritmos de compresso, como o caso da famlia LZ11, que detectam sequncias de pxeis que, embora no apresentem todos os pxeis da mesma cor, apresentam a mesma sequncia de cores. Todos estes algoritmos permitem reduzir o espao ocupado por imagens contendo esquemas, diagramas ou linhas para, pelo menos, metade do espao originalmente ocupado, chegando-se em alguns casos a obter factores de compresso de 10 ou superiores. fcil verificar o impacte de uma compresso deste gnero no tempo necessrio transmisso da imagem de 360270 pxeis com 256 cores que temos vindo a considerar12. Numa imagem digital de qualidade fotogrfica, raro encontrar as sequncias de pxeis que tornam atraente o emprego dos algoritmos anteriores. Uma imagem de qualidade fotogrfica caracteriza-se pela variao suave e contnua da cor (continuous tone) de pxel para pxel que exactamente a situao mais desfavorvel ao emprego de algoritmos de compresso das famlias RLE ou LZ. A variao contnua e suave muito mais favorvel ao emprego de outro tipo de algoritmos, como os baseados na Transformada Discreta do Co-seno (Discrete Cosine Transform), derivada da transformada de Fourier. Matematicamente, a Transformada Discreta do Co-seno uma transformada totalmente reversvel, isto , o resultado da transformada inversa igual ao que foi transformado pela transformada directa. Na prtica, existem perdas de carcter numrico que ocorrem durante a realizao de operaes aritmticas com representao limitada do nmero de algarismos dos operandos e perdas originadas pela eliminao de termos13. Quanto menos termos das sries forem considerados, maior ser o erro cometido, embora o nmero de coeficientes da transformada e, consequentemente, o espao para armazenar
10 11

Isto permite diferenciar entre modo absoluto e modo codificado. O formato de imagem GIF emprega a variante LZW desta famlia, enquanto o formato PNG emprega por sua vez um algoritmo derivado do algoritmo LZ77. 12 O tempo de transmisso seria de 23 segundos com um factor de compresso de 2 e de 4,6 segundos com um factor de 10. 13 Na norma JPEG, a eliminao de termos realizada pela quantizao dos coeficientes da transformada.
8 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

os coeficientes, seja menor. A imagem ser assim guardada em menor espao, mas perder informao e qualidade. Por este motivo, este tipo de compresso uma compresso com perda. A escolha da perda a admitir resulta de um compromisso entre o espao a ocupar pela imagem comprimida e a maior ou menor qualidade que se pretenda das imagens comprimidas. Menor perda de qualidade significa maior espao e vice-versa. Esta perda de qualidade permitida pelo limite de capacidade da viso humana em descriminar cores. Com efeito, a viso humana tende a integrar as cores de reas de reduzidas dimenses, interpretando essas reas como se possussem uma nica cor se tais reas se apresentarem segundo um arco inferior a um dado limite. Por outro lado, a viso humana no distingue cores muito prximas umas das outras no espectro visvel. Deste modo, duas imagens de qualidade fotogrfica, uma com perda e outra sem perda, podem ser interpretadas como se da mesma imagem se tratasse, permitindo o emprego da compresso com perda. Uma outra caracterstica da viso humana permite reduzir ainda mais a informao contida numa imagem de qualidade fotogrfica. Esta caracterstica consiste no facto de a viso humana ser muito mais sensvel quantidade de luz (a luminncia, em termos tcnicos) do que cor (a cromaticidade), o que significa que, se empregarmos um modelo de cor apropriado, como o modelo YCbCr, poderemos no empregar uma preciso igual para representar a luminncia e a cromaticidade. Isto permite reduzir o espao ocupado pela informao referente a cada pxel da imagem e, assim, o espao ocupado por toda a imagem. A perda de informao que ocorre aceitvel porque no detectada pela viso. Esta estratgia adoptada pelo formato JFIF (JPEG).

2 Formatos PBM
A designao de formato de imagem PBM (Portable Bitmap) engloba trs formatos de imagem para imagens a preto e branco, em escala de tons cinzentos e a cores, todos eles sem compresso e que apresentam uma estrutura comum14. Estes trs tipos de formato de imagens so PBM (Portable BitMap) imagens a preto e branco (sem tons de cinzento) PGM (Portable GrayMap) imagens em tons de cinzento PPM (Portable PixMap) imagens a cores

A definio original destes formatos teve em vista permitir a transmisso de imagens por meio de correio electrnico que, data da definio, ainda no permitia a transmisso de ficheiros anexados, binrios ou no. Os formatos PBM, PGM e PPM representavam ento os contedos das respectivas imagens por meio de caracteres ASCII representveis. Esta caracterstica permitia a insero de uma imagem numa mensagem de correio electrnico como se de texto se tratasse, mas tinha como consequncia que o tamanho dos ficheiros fosse demasiado grande. A definio do formato foi mais tarde modificada para permitir a representao binria dos contedos das imagens.

14

Por vezes, erradamente, estes trs tipos de formato so designados por formato PPM.
9

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

2.1

Especificao dos formatos PBM


Identificador do tipo de formato (designado por magic number), de acordo com Tipo PBM PGM PPM ASCII P1 P2 P3 Binrio P4 P5 P6

Os formatos de imagem PBM so constitudos pelos seguintes campos:

Espao em branco15 Largura da imagem, em pxeis e em notao decimal, formatada em caracteres ASCII Espao em branco Altura da imagem, em pxeis e em notao decimal, formatada em caracteres ASCII Espao em branco Valor mximo em notao decimal dos tons de cinzento (PGM) ou das componentes de cor (PPM), formatado em caracteres ASCII. Espao em branco Valores dos pxeis da imagem, em nmero igual altura da imagem vezes a sua largura para os tipos PBM e PGM, e trs vezes este nmero para o tipo PPM, uma vez que cada pxel representado pelas trs componentes RGB da respectiva cor.

Se a imagem for dos tipos PGM ou PPM

Para todos os tipos de formato segue-se

A ordenao dos valores dos pxeis corresponde ao varrimento das imagens linha a linha, de cima para baixo, e da esquerda para a direita em cada uma das linhas. Quando o contedo da imagem for representado em ASCII, os valores correspondentes aos pxeis sero apresentados em notao decimal e separados por espaos em branco, marcas de tabulao ou marcas de fim de linha. As variantes binrias dos tipos PBM, PGM e PPM armazenam os valores correspondentes aos pxeis das imagens em caracteres (bytes) contguos, sem qualquer separador entre valores consecutivos. O tipo PBM combina os valores de grupos de 8 pxeis consecutivos num nico carcter (byte). Os restantes tipos, PGM e PPM, fazem corresponder a cada pxel um carcter (PGM) ou trs caracteres16 (PPM).

15 Este espao pode ser constitudo por um qualquer nmero de caracteres em branco, TABs, CRs e LFs. Alguns produtos podero no suportar caracteres TAB. 16 Um carcter (byte) por cada componente RGB do pxel, restringindo assim o valor mximo dos tons de cinzento e das componentes de cor a 255.
10 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Para as variantes ASCII dos trs tipos de formato, aplicam-se ainda as seguintes regras: permitida a insero de comentrios em qualquer parte do ficheiro. O incio de um comentrio assinalado por um carcter # e todo o texto desde este carcter at ao fim da respectiva linha interpretado como texto do comentrio. O comprimento mximo de cada linha est limitado a 70 caracteres17.

2.2

Exemplos

Apresentamos de seguida exemplos de imagens formatadas nos formatos PBM. O primeiro exemplo o de uma imagem a preto e branco de 24 pxeis de largura e 7 pxeis de altura em formato PBM, na sua variante ASCII, que figura 2.1 apresenta em ampliao. Note-se a incluso de comentrios.

P1 # feep.pbm 24 7 000000000000000000000000 011110011110011110011110 010000010000010000010010 011100011100011100011110 010000010000010000010000 010000011110011110010000 000000000000000000000000

Figura 2.1 Imagem em formato PBM (ampliada) do exemplo do texto.

Figura 2.2 Imagem PGM (ampliada) do exemplo do texto.

17

Esta limitao deriva da especificao inicial visando a transmisso de imagens por correio electrnico.
DEI Instituto Superior Tcnico 11

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

A variante binria da representao desta imagem (o contedo da imagem apresenta os respectivos bytes codificados em notao hexadecimal) P4 24 7 00000079E79E41041271C71E41041041E790000000 Como bvio, o tamanho da variante binria muito mais compacto. O carcter de nova linha foi usado como separador entre os campos do identificador, altura, largura e contedo da imagem. Se em vez deste carcter tivssemos empregue um espao em branco, teramos obtido P4 24 7 00000079E79E41041271C71E41041041E790000000 Vejamos agora o exemplo de uma imagem em tons de cinzento, tipo PGM, que a figura 2.2 apresenta em ampliao, com a largura de 24 pxeis e a altura de 7 pxeis, nas suas variantes ASCII P2 # feep.pgm 24 7 15 0 0 0 0 0 0 3 3 3 3 0 3 0 0 0 0 3 3 3 0 0 3 0 0 0 0 3 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0

0 0 0 0 0 0 0

0 7 7 7 7 7 0

0 7 0 7 0 7 0

0 7 0 7 0 7 0

0 7 0 0 0 7 0

0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 11 11 11 11 0 0 15 15 15 15 0 0 11 0 0 0 0 0 15 0 0 15 0 0 11 11 11 0 0 0 15 15 15 15 0 0 11 0 0 0 0 0 15 0 0 0 0 0 11 11 11 11 0 0 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

e binria (empregando notao hexadecimal para o contedo da imagem) P2 24 7 15 0000000000000000000000000333300777700BBBB00FFFF0030000070 0000B00000F00F00333000777000BBB000FFFF00300000700000B000 00F00000300000777700BBBB00F0000000000000000000000000000 Finalmente, apresenta-se o exemplo de uma imagem em formato PPM, que a figura 2.3 apresenta em ampliao, P3 # feep.ppm 44 15 0 0 0 0 0 0 0 0 0 15 0 15 0 0 0 0 15 7 0 0 0 0 0 0 0 0 0 0 0 0 0 15 7 0 0 0 15 0 15 0 0 0 0 0 0 0 0 0 que, na variante binria, P3 4 4 15 000000000F0F0000F70000000000000F7000F0F000000000

12

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Figura 2.3 Imagem (ampliada) em formato PPM do exemplo do texto.

3 Formato DIB
O formato DIB (Device Independent Bitmap), tambm designado por formato BMP, um formato proprietrio da Microsoft e suportado por todas as variantes do sistema operativo Windows. Na origem da designao DIB est o facto de que este formato descreve as cores de uma forma que independente do processo empregue por cada placa grfica e respectivo monitor para apresentar a cor dos pxeis das imagens. No formato DIB, as imagens so descritas por varrimento ascendente das linhas (de baixo para cima), sendo os pxeis de cada linha varridos da esquerda para a direita. Do varrimento de cada linha deve resultar uma sequncia de bytes cujo nmero deve ser mltiplo de 418. O formato DIB permite descrever imagens a cores com 1, 4, 8 ou 24 bits por pxel, representando assim imagens com 2, 16, 256 ou 224 cores, respectivamente, empregando um mapa de cores em todos os casos excepto no ltimo (224 cores). O formato DIB permite ainda a compresso opcional do contedo de imagens com16 ou 256 cores pelo algoritmo RLE (Run Length Encoding) adaptado ao nmero de bits por pxel (4 ou 8). A informao contida num ficheiro escrito em formato DIB est organizada em trs blocos de informao, que s podem ser inseridos uma nica vez, e tm que ser colocados no ficheiro pela seguinte ordem: Bitmap File Header, que descreve o ficheiro. Bitmap Info, que descreve o bitmap da imagem e constitudo pelos sub bloco Bitmap Info Header, que descreve a imagem contida no ficheiro, e pelo sub bloco Win3ColorTable que contm o mapa de cores da imagem se esta no empregar 24 bits por pxel. Dados da imagem, constitudos pelos pxeis da imagem segundo um varrimento de linhas de baixo para cima, e da esquerda para a direita em cada linha, comprimido ou no por meio do algoritmo RLE.

Todos os valores inteiros, sejam eles de 4 ou 2 bytes, encontram-se armazenados com o byte menos significativo em primeiro lugar (LSB first), conforme uso do sistema operativo Windows.
18

Para isto, os codificadores de imagens em formato DIB devem inserir um nmero de bytes sem significado tal que o nmero de bytes de cada linha seja mltiplo de 4.
DEI Instituto Superior Tcnico 13

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

3.1

Bloco Bitmap File Header

Este bloco descreve o ficheiro DIB corrente, ocupa 14 bytes, e tem a seguinte estrutura (em linguagem C)
typedef struct tagBITMAPFILEHEADER /* { UINT bfType; DWORD bfSize; UINT bfReserved1; UINT bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; bmfh */

Os membros desta estrutura tm o seguinte significado: bfType Declara que o ficheiro corrente um ficheiro em formato DIB. Contm obrigatoriamente o valor decimal 19778 (4D42 hexadecimal), que corresponde cadeia de caracteres BM em ASCII. Comprimento total do ficheiro em bytes. Estes campos esto reservados e, por isso, devem conter o valor 0. Nmero de bytes que, no ficheiro, precedem o primeiro byte correspondente ao contedo da imagem19.

bfSize bfReserved1 bfReserved2 bfOffBits

3.2

Bloco Bitmap Info


typedef struct tagBITMAPINFO /* bmi { BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[]; } BITMAPINFO; */

O bloco Bitmap Info (bloco descritor do bitmap) tem a estrutura

que descreve a informao sobre o bitmap e, se presente, o mapa de cores. Esta estrutura no guardada no ficheiro contendo a imagem. O que guardado nesse ficheiro a informao constante da estrutura contendo a informao sobre a imagem (BITMAPINFOHEADER) e o mapa de cores da imagem, se esta no empregar 24 bits por pxel.

3.3

Sub Bloco Bitmap Info Header

O sub bloco Bitmap Info Header, como o comprimento de 40 bytes, colocado no ficheiro imediatamente a seguir ao bloco Bitmap File Header. Um sub bloco Bitmap Info Header contm informao como o tamanho da imagem. A estrutura em linguagem C correspondente a este sub bloco
typedef struct tagBITMAPINFOHEADER /* { DWORD biSize; LONG biWidth; LONG biHeight;
19

bmih

*/

Este valor igual ao nmero de cores descritas pelo mapa de cores vezes 4, acrescido dos comprimentos do bloco descritor do ficheiro (14 bytes) e do bloco descritor da imagem (40 bytes).
14 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

WORD biPlanes; WORD biBitCount; DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER;

cujos membros assumem os seguintes significados biSize biWidth biHeight biPlanes Espao, em bytes, ocupado por esta estrutura de dados, ou seja, 40 bytes. Largura da imagem, em pxeis. Altura da imagem, em pxeis. Define o nmero de planos que a imagem ir ocupar na unidade grfica de sada. Este campo deve ter o valor 1, obrigatoriamente. Nmero de bits por pxel que, obrigatoriamente, deve ser 1, 4, 8 ou 24. Define o tipo de compresso RLE realizada ao contedo da imagem e assume um dos valores BI_RGB (0, a imagem no est comprimida), BI_RLE8 (1, imagem comprimida em grupos de 8 bits) ou BI_RLE4 (2, imagem comprimida em grupos de 4 bits). Tamanho, em bytes, ocupado pelos dados da imagem. Este valor deve obrigatoriamente reflectir o comprimento dos dados da imagem depois de estes serem comprimidos, ou ser 0 se biCompression assumir o valor BI_RGB.

biBitCount biCompression

biSizeImage

biXPelsPerMeter Resoluo horizontal e resoluo vertical, em pxeis por biYPelsPerMeter metro, da imagem no dispositivo grfico de sada20. Estes valores so ignorados se forem 0. biClrUsed Nmero de cores do mapa de cores referenciadas pelos dados da imagem. Se for 0, as aplicaes devem assumir que a imagem referencia o nmero mximo de cores permitido pela profundidade dos respectivos pxeis (valor do membro biBitCount). Nmero de cores do mapa de cores que so consideradas importantes para a apresentao correcta da imagem. Considera-se que todas as cores so importantes quando este valor for 0.

biClrImportant

As aplicaes que apresentam as imagens podem utilizar estes valores para melhor mapearem as dimenses reais das imagens aos dispositivos grficos de sada.
DEI Instituto Superior Tcnico 15

20

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

3.4

Sub Bloco do Mapa de Cores

O mapa de cores destina-se a definir as componentes RGB de cada cor empregue pela imagem e a atribuir a cada cor definida no mapa o respectivo ndice. Cada cor do mapa de cores definida por meio da estrutura
typedef struct tagRGBQUAD /* { BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD; rgbq */

Note-se a inverso da ordem normal das componentes RGB nesta estrutura. A cada um dos membros rgbBlue, rgbGreen e rgbRed atribudo um valor de intensidade compreendido entre 0 e 255. O membro rgbReserved no empregue, pelo que o seu valor dever ser 0. Os ndices de cor so atribudos s cores segundo a ordem pela qual as cores ocorrem no mapa de cores. Assim, o ndice 0 atribudo primeira cor constante do mapa, o ndice 1 segunda cor e, assim, sucessivamente. No existe mapa de cores sempre que um ficheiro em formato DIB contenha uma imagem cujos pxeis ocupem 24 bits. Neste caso, os trs bytes representando um pxel contm as intensidades das componentes RGB da sua cor.

3.5

Bloco Bitmap DIB

Como atrs foi dito, o contedo do bitmap de uma imagem em que a informao de cada pxel est contida em 24 bits constitudo pelas componentes da cor de cada pxel, sendo os pxeis da imagem ordenados segundo linhas varridas da esquerda para a direita e de baixo para cima, no sendo permitida qualquer compresso. Para os bitmaps com 4 bits por pxel permitida a compresso pelo algoritmo RLE aplicado a grupos de 4 bits. Os bitmaps de 8 bits por pxel (256 cores) podem tambm ser comprimidos pelo algoritmo RLE com base em grupos de 8 bits.

4 Formato GIF
O formato Graphics Interchange Format (GIF) foi inicialmente concebido para a transmisso de imagens atravs das linhas de comunicao de muito baixo dbito existentes na altura21. O formato GIF propriedade da CompuServe Inc. O formato permite armazenar ou transmitir imagens com um mximo de 256 cores, definidas sempre por meio de mapas de cor. Cada pxel de uma imagem no formato GIF contm o ndice correspondente ao nmero de ordem da sua cor no mapa de cores. O conjunto dos ndices que compem cada imagem est comprimido pelo algoritmo de Lempel-Ziv Welch (LZW), que um algoritmo de compresso sem perda. Na base do formato GIF est o conceito de Data Stream, ou canal de dados. O formato na realidade um protocolo entre uma fonte emissora de imagens e uma aplicao de
21

Modems de 2 ou 4 kbit/s e linhas telefnicas de comutao analgica.


DEI Instituto Superior Tcnico

16

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

destino que realiza a apresentao das imagens. Quando a fonte emissora se encontra armazenada num ficheiro, dizemos que estamos perante um ficheiro em formato GIF. Um ficheiro, ou canal de dados, no formato GIF pode conter mais do que uma imagem. Blocos de controlo inseridos entre imagens sucessivas determinam o tempo durante o qual cada imagem persistir na unidade grfica de sada, permitindo assim a apresentao sequenciada de vrias imagens. Se as imagens constiturem uma sequncia animada, estaremos perante o que se designa usualmente por GIFs animados (animated GIFs). Os ndices de cor de uma imagem no formato GIF esto ordenados segundo uma sequncia que resulta do varrimento das linhas da imagem da esquerda para a direita em cada linha e de cima para baixo no conjunto de linhas da imagem. Este varrimento vertical pode ser por linhas consecutivas ou entrelaado.

4.1

Estrutura de Um Canal de Dados GIF

A informao transmitida por um canal de dados GIF est organizada em blocos, denominados Blocos Lgicos, que pertencem a trs tipos: Blocos de Controlo (Control Blocks) Blocos de Processamento de Imagem (Image Rendering) Blocos Especiais (Special Purpose)

A descrio dos blocos do formato GIF que a seguir apresentamos no , nem pretende ser, exaustiva e contm apenas os blocos de maior utilizao ou aqueles cuja presena num canal de dados GIF obrigatria.

4.2

Blocos de Controlo

Os blocos de controlo contm a informao necessria para que a aplicao que processa a informao transmitida por num canal de dados organizado segundo o formato GIF possa processar esses dados e controlar as unidades perifricas de representao grfica, dividindo-se em: Header (Cabealho) Logical Screen Descriptor Graphic Control Extension Trailer

Os blocos de controlo no contm qualquer informao sobre o contedo, dimenses ou posicionamento das imagens. Header Este bloco de controlo identifica o incio de um fluxo de dados em formato GIF. A sua presena obrigatria em todos os canais ou ficheiros, s podendo existir um bloco Header por cada canal ou ficheiro. A sua estrutura

DEI Instituto Superior Tcnico

17

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Campo Assinatura Verso

Bytes 3 3

Contedo Cadeia de caracteres GIF, em ASCII. Determina a verso do formato GIF empregue e constituda por uma cadeia de 3 caracteres que pode ser 87a ou 89a, em ASCII.

Trailer Este bloco de controlo assinala o fim de um fluxo de dados em formato GIF e constitudo por um nico byte contendo o valor hexadecimal 3B. Logical Screen Descriptor Em cada canal de dados ou ficheiro segundo o formato GIF, tem que existir um bloco do tipo Logical Screen Descriptor, obrigatoriamente colocado logo a seguir ao bloco Header. Um bloco deste tipo tem por misso definir as caractersticas e configurao que a unidade grfica de sada deve apresentar ou possuir e os valores de parmetros globais para todo o processamento. A estrutura de um bloco Logical Screen Descriptor contm os seguintes campos Campo Logical Screen Width Logical Screen Height Packed Fields Background Color Index Pixel Aspect Ratio Bytes 2 Contedo Valor sem sinal da largura, em pxeis, da rea da unidade grfica de sada onde as imagens sero apresentadas. Valor sem sinal da altura, em pxeis, da rea da unidade grfica de sada onde as imagens sero apresentadas. Conjunto de 8 bits com a forma GCCCSTTT (ver significado mais frente). ndice da cor de fundo no mapa global de cores, se o mapa existir. Esta cor aplicada rea de apresentao das imagens. Quociente entre as dimenses fsicas da altura e largura dos pxeis na unidade grfica onde as imagens foram geradas. Este valor, varivel de unidade para unidade grfica, destina-se a evitar a deformao das imagens. Se for 0, a aplicao deve assumir que a largura e a altura dos pxeis so iguais.

1 1

O campo Pixel Aspect Ratio permite evitar a deformao das imagens quando o quociente entre as dimenses fsicas da altura e da largura dos pxeis variar de unidade para unidade grfica. O valor contido neste campo calculado pela expresso
Aspect Ratio = Pixel Aspect Ratio + 15 64

(4.1)

18

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

A informao contida no campo Packed Fields deve ser interpretada da seguinte forma: Bits G Significado Assinala se, logo a seguir ao bloco Logical Screen Descriptor, existe (1) ou no (0) um mapa global de cores a aplicar s imagens que no possuam mapa local. O valor contido nestes bits mais 1 corresponde ao nmero de bits que cada componente de cor ocupa. Exemplo: se cada componente de cor poder assumir 16 intensidades (ocupar 4 bits), o valor de CCC ser 011 (binrio). Se existir um mapa global de cor, o valor deste bit assinala se as cores desse mapa esto ordenadas por ordem decrescente de frequncia de emprego (1) ou no (0). Se existir um mapa global de cores, o valor destes bits mais 1 indica o nmero de cores definidas por esse mapa, igual a 2(TTT+1). Estes bits devem ser sempre preenchidos mesmo que no exista mapa global de cores para que a aplicao possa configurar a unidade grfica de sada da forma mais conveniente para a apresentao das imagens que se seguem. Exemplo: se o valor contido em TTT for 011 (binrio), o nmero de cores definidas no mapa global de cores 24, ou seja, 16 cores.

CCC

TTT

Graphics Control Extension Um bloco do tipo Graphics Control Extension tem por objectivo controlar a apresentao da prxima imagem contida no canal de dados ou ficheiro em formato GIF. A presena de um bloco deste tipo opcional. A estrutura de informao de um bloco Graphics Control Extension Campo Extension Introducer Graphic Label Control Bytes 1 1 1 Contedo Contm o valor hexadecimal 21. Contm o valor hexadecimal F9. Nmero de bytes deste bloco que se seguem a este campo, sem incluir o comprimento do campo terminador. Para um Graphics Control Block, este campo assume o valor 4. Bits organizados como RRRDDDUT. Valor sem sinal do tempo (em centsimas de segundo), a contar do fim da apresentao completa da prxima imagem, durante o qual o processamento de dados deve ser suspenso antes de prosseguir. No existe espera quando este valor for 0.

Block Size

Packed Fields Delay Time

1 2

DEI Instituto Superior Tcnico

19

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Transparent Color Index

ndice da cor que deve ser interpretada como cor transparente. Todos os pxeis a que corresponda este ndice de cor no sero processados. O valor contido neste campo s ter significado se o bit T do campo Packed Fields estiver aceso (1). Este byte, com valor 0, assinala o fim do bloco.

Block Terminator

O significado dos bits do campo Packed Fields (RRRDDDUT) o seguinte Bits RRR DDD Significado Bits reservados e, por isso, devem estar apagados (0). Disposal Method, cujo valor indica o que a aplicao deve fazer quando terminar a apresentao da prxima imagem, que pode ser: 0 o processamento prossegue imediatamente 1 a imagem no apagada, o processamento prossegue imediatamente 2 a imagem apagada, atribuindo a cor de fundo a todos os seus pxeis, e o processamento prossegue logo de seguida 3 a imagem apagada, substituindo o contedo da sua rea pelo contedo que l se encontrava antes da apresentao da imagem 4 a 7 valores por definir Indica se o processamento deve esperar por qualquer aco do utilizador antes de prosseguir (1) ou no (0). Quando este bit for 1 e o valor do campo Delay Time for diferente de 0, o processamento prosseguir logo que o utilizador execute qualquer aco ou o tempo de espera termine. Indica se o campo Transparency Index contm (1) ou no (0) o valor do ndice da cor a processar como cor transparente.

4.3

Blocos de Processamento de Imagem

Os blocos de Processamento de Imagem (Image Rendering) destinam-se a declarar os parmetros prprios de cada imagem e os respectivos contedos, dividindo-se em: Image Descriptor Color Table Table Based Image Data Plain Text Extension

Veremos apenas os trs primeiros tipos de bloco, j que o ltimo tipo no praticamente usado22.
22

O bloco Plain Text Extension descreve o contedo da imagem empregando apenas caracteres ASCII representveis, o que aumenta o comprimento deste tipo de bloco em relao ao tipo
20 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Cada imagem contida num fluxo de dados segundo o formato GIF descrita por um bloco Image Descriptor, seguido opcionalmente por um bloco Color Table contendo o mapa local de cores para essa imagem (e s ela) e, finalmente, por um bloco do tipo Table Based Image Data ou Plain Text Extension com o contedo da imagem. A definio de um mapa local de cor para cada imagem opcional. Se este mapa local existir, a imagem que se lhe segue ser apresentada de acordo com as cores definidas pelo mapa. Quando no existir mapa local de cores, a imagem ser apresentada com as cores definidas pelo mapa global de cores que, neste caso, ser de presena obrigatria. Tal como j vimos, os blocos definindo uma imagem e os seus parmetros podem ser precedidos por um bloco Graphics Control Extension que controlar a forma como a imagem ser eliminada (ou no) da unidade grfica de sada e o tempo durante o qual a imagem perdurar nessa unidade. Image Descriptor Um bloco Descritor da Imagem (Image Descriptor) contm os parmetros que caracterizam a imagem e o mapa local de cores, se este existir, que se lhe seguem. Os parmetros da imagem devero ser tais que a imagem caiba integralmente dentro do espao de apresentao definido pelo bloco Logical Screen Descriptor do corrente fluxo de dados em formato GIF. Os campos contidos num bloco Image Descriptor so: Campo Image Separator Image Left Position Bytes 1 2 Contedo Identifica o incio de uma nova imagem. Contm o valor hexadecimal 2C. Valor sem sinal correspondente distncia horizontal, em pxeis, do canto superior esquerdo da imagem ao canto superior esquerdo da rea de representao de imagens definida pelo bloco Logical Screen Descriptor. Valor sem sinal correspondente distncia vertical, em pxeis, do canto superior esquerdo da imagem ao canto superior esquerdo da rea de representao de imagens definida pelo bloco Logical Screen Descriptor. Valor sem sinal da largura da imagem em pxeis. Valor sem sinal da altura da imagem em pxeis. Byte contendo os bits LISRRCCC.

Image Top Position

Image Width Image Height Packed Fields

2 2 1

Table Based Image Data, que binrio. Por esta razo, no muito comum o seu emprego, tendo cado praticamente em desuso.
DEI Instituto Superior Tcnico 21

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Os bits do campo Packed Fields assumem o seguinte significado: Bits L I S Significado Local Color Table Flag que assinala se um mapa local de cores precede a imagem (1) ou no (0). Interlace Flag, que assinala se as linhas da imagem se encontram entrelaadas (1) ou no (0). Sort Flag, que indica se as cores definidas no mapa local de cores se encontram ordenadas por ordem decrescente de frequncia do seu emprego pela imagem (1) ou no (0). Reserved. Estes bits devem estar apagados (0). Size of Color Table que representa o nmero de cores constantes do mapa de cor (mapa local, neste caso). O nmero de cores definidas pelo mapa igual a 2(CCC+1). Exemplo: se CCC for 100 (binrio), o nmero de cores contidas no mapa ser de 32 cores.

RRR CCC

Color Table Este tipo de bloco define um mapa de cores que pode ser global23 ou local. Neste ltimo caso, o bloco Color Table deve ser inserido logo a seguir ao bloco Image Descriptor e imediatamente antes do bloco onde se encontra o contedo da imagem. Num mapa de cores, cada cor ocupa 3 bytes, um por cada componente RGB de cor. O ndice de cada cor atribudo pela ordem pela qual a cor figura no mapa. Assim, cor definida pelos primeiros trs bytes do mapa atribudo o ndice 0, cor dos segundos trs bytes atribudo o ndice 1 e, assim, sucessivamente. Um mapa de cores s pode definir 2, 4, 8, 16, 64, 128 ou 256 cores. erro definir um qualquer outro nmero de cores, pois entrar-se-ia em contradio com o significado dos bits correspondentes a Size of Color Table. O nmero de bytes ocupados por um mapa de cores igual a trs vezes o nmero de cores definidas pelo mapa. Table Based Image Data Cada bloco do tipo Table Based Image Data transporta o contedo total de uma imagem, onde cada pxel representado pelo ndice da respectiva cor. A cadeia de ndices que assim se forma obtida pelo varrimento das linhas da imagem da esquerda para a direita numa mesma linha e de cima para baixo no conjunto das linhas. Se se empregar entrelaamento, as linhas so reordenadas de acordo com o respectivo algoritmo antes de se constituir a cadeia de ndices. Uma vez formada a cadeia de ndices, -lhe aplicado o algoritmo LZW de compresso sem perda. No fluxo de dados, a cadeia j comprimida precedida por um byte cujo valor corresponde ao comprimento em bits das unidades que foram comprimidas. O algoritmo codificador que, basicamente, procura cadeias repetidas e lhes atribui cdigos, dispe de um nmero limitado de cdigos e, por isso, pode chegar a esgotar todos os cdigos de que dispe. Nessa altura, o codificador deve inserir na cadeia comprimida um cdigo
Neste caso, o bloco Color Table deve ser obrigatoriamente colocado logo a seguir ao bloco Logical Screen Descriptor.
22 DEI Instituto Superior Tcnico
23

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

especial que assinala a reinicializao da tabela de cdigos e, consequentemente, o algoritmo descodificador deve executar uma aco idntica. Deve notar-se que o codificador livre de assinalar uma reinicializao da tabela de cdigos em qualquer altura, mesmo que ainda no tenha esgotado todos os cdigos de que dispe, devendo as implementaes do algoritmo descodificador estar preparadas para esta eventualidade.

5 Formato PNG
O formato PNG (Portable Network Graphics) surgiu como resposta s limitaes tcnicas e s restries legais derivadas dos direitos de propriedade do formato GIF. Com efeito, o limite de 256 cores deste formato deixou de responder s exigncias dos utilizadores quando estes passaram a dispor de hardware grfico permitindo mais do que 256 cores. Por outro lado, a controvrsia em torno dos direitos de propriedade do formato GIF e do algoritmo LZW de compresso que emprega, que obrigavam obteno de licenas para o desenvolvimento de aplicaes empregando o formato GIF, limitavam muito os criadores de aplicaes. A definio do novo formato PNG reteve algumas das caractersticas mais vantajosas do formato GIF como: Suporte de imagens at 256 cores (imagens com 1, 2, 4, e 8 bits por pxel), empregando mapas de cor. Conceito de canal de dados grficos, que permite a apresentao e transmisso sequenciada e controlada de imagens. Apresentao progressiva de imagens, que permite a sua apresentao antes de completada a sua transmisso, embora com baixo nvel de detalhe24. Transparncia parcial, permitindo que partes da imagem sejam declaradas como transparentes25. Informao textual, que permite a incluso de textos e de comentrios e o controlo da apresentao temporizada de imagens. Independncia da plataforma de hardware e software. Compresso sem perda. Imagens a cores reais (True Color), empregando at 48 bits por pxel, permitindo 24 ou 48 bits por pxel, ou seja, 8 ou 16 bits por cada componente da cor. Transparncia por meio de um canal alfa, definindo mscaras de transparncia globais, variando de pxel para pxel, nas imagens com 8 ou 16 bits por pxel, implicando o emprego de 1 ou 2 bytes adicionais por pxel, respectivamente, ou por componente de cor.

Em complemento, a definio do formato PNG acrescentou a seguinte funcionalidade:

A apresentao progressiva do formato PNG um refinamento da tcnica de entrelaamento do formato GIF, mas aplicada a pxeis e no a linhas. 25 O formato GIF s permite declarar uma nica cor como cor transparente, no existindo controlo do espao de imagem que tornado transparente.
DEI Instituto Superior Tcnico 23

24

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Informao (opcional) sobre a correco gama aplicada imagem, que, quando presente, permite que as aplicaes de apresentao possam realizar a correco adequada s cores das imagens, em funo das caractersticas de gama das unidades de sada grfica. Deteco da corrupo de dados, realizada em todos os blocos das imagens. Maior rapidez na apresentao de imagens atravs do algoritmo de entrelaamento Adam7 para apresentao progressiva. Algoritmo de compresso do domnio pblico que, portanto, no se encontram sujeitos a restries ou licenas derivadas de direitos de propriedade e que, na sua generalidade, permitem compactar a informao 5 a 25% mais eficientemente do que o algoritmo LZW do formato GIF26. Ordenao nica dos bytes segundo a ordem de transmisso por rede (network byte order), em que os bytes mais significativos precedem os bytes menos significativos (MSB first) e, portanto, torna o formato PNG independente da plataforma.

5.1

Organizao de um canal (ou ficheiro) PNG

A informao contida num ficheiro PNG, ou transmitida por um canal de dados segundo o formato PNG, encontra-se estruturada em blocos, ou chunks, na terminologia deste formato. Estes blocos, em nmero varivel, so precedidos pela assinatura do formato que, obrigatoriamente, colocada no incio do ficheiro ou a primeira informao transmitida pelo canal de dados. Esta assinatura assinala univocamente que a informao que se lhe segue se encontra no formato PNG. constituda por 8 bytes cujo valor Valor hexadecimal 89504E470D0A1A0A Cadeia de caracteres (notao C) \211PNG\r\n\032\n

A esta assinatura segue-se um nmero varivel de blocos, dos quais o primeiro bloco obrigatoriamente do tipo IHDR e o bloco final do tipo IEND. Entre estes dois blocos podero ser inseridos um ou mais blocos do tipo IDAT com o contedo de imagens, e outros blocos como os blocos definidores de paletas (blocos PLTE). Cada bloco composto pelas 4 seces que a tabela 5.1 apresenta. Apresentam-se se seguida os tipos de bloco mais comuns. Bloco IHDR Logo imediatamente a seguir assinatura do formato PNG tem que ser inserido um bloco do tipo IHDR, nico em todo o ficheiro ou canal de dados. O bloco IHDR, cujo identificador tem o valor hexadecimal 49484452 (IHDR, em caracteres ASCII), tem o comprimento fixo de 13 bytes.

26

Em pequenas imagens, esta vantagem pode mesmo atingir 40 a 50%.


DEI Instituto Superior Tcnico

24

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Seco Comprimento da seco de dados do bloco Tipo do bloco

Bytes 4

Contedo Inteiro sem sinal, com o nmero de bytes (n) contidos na seco de dados do bloco. Este valor pode ser 0. Valor inteiro que identifica o tipo de bloco e que, quando interpretado em ASCII, constitudo por 4 caracteres correspondentes a letras maisculas e minsculas. Contedo dos dados do bloco. Esta seco pode ser omitida, dependendo do tipo de bloco. CRC de 4 bytes, calculado sobre todos os bytes do bloco que precedem esta seco, excluindo a seco contendo o comprimento do bloco.

Dados do bloco CRC

n 4

Tabela 5.1 Seces constituintes de um bloco (chunk) do formato PNG. Color type 0 2 3 Bit depth Contedo

1, 2, 4, 8 ou Cada pxel da imagem (em tons de cinzento) contm a 16 respectiva intensidade. 8 ou 16 1, 2, 4 ou 8 Cada pxel da imagem, que a cores, contm os valores das componentes da sua cor. Cada pxel da imagem contm um ndice de cor. Um bloco PLTE dever, obrigatoriamente, preceder quaisquer blocos IDAT. A cada pxel da imagem (em tons de cinzento) corresponde o valor da respectiva intensidade e o valor local da mscara de transparncia. A cada pxel da imagem (a cores) esto associados os valores das suas trs componentes e o valor local da mscara de transparncia.

8 ou 16

8 ou 16

Tabela 5.2 Valores permitidos nos campos Color Type e Bit Depth de um bloco IHDR do formato PNG. Os campos definidos por um bloco IHDR dentro da sua seco de dados so Campo Width Height Bit depth Bytes 4 4 1 Contedo Largura da imagem, em pxeis. Altura da imagem, em pxeis. Nmero de bits por componente de cor ou por ndice de cor. Pode assumir os valores 1, 2, 4, 8 ou 16.

DEI Instituto Superior Tcnico

25

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Color type

Identifica o tipo de imagem, somando os valores 1, 2 e 4, de acordo com: 1 - a imagem emprega mapa de cores 2 - a imagem colorida 4 - a imagem emprega o canal alfa para obter efeitos de transparncia A tabela 5.2 apresenta os valores permitidos neste campo, conjuntamente com os valores do campo Bit Depth que lhes esto associados.

Compression method Filter method

Identifica o tipo de compresso aplicada aos dados do contedo das imagens (ver o bloco IDAT). Este campo tem obrigatoriamente o valor 0. Identifica que tipo de pr-processamento (filtro) foi aplicado s imagens antes da compresso do seu contedo. Este campo tem, obrigatoriamente, o valor 0. Indica se os dados das imagens se encontram entrelaados27 segundo o mtodo Adam7 (1) ou se no (0).

Interlace method

Bloco IEND Este tipo de bloco assinala o fim do ficheiro ou canal de dados PNG. Tem um comprimento de dados nulo, pois no contm seco de dados. O valor hexadecimal do seu identificar 49454E44, a que corresponde a cadeia de caracteres IEND em ASCII. Bloco PLTE Um bloco do tipo PLTE um bloco que s pode aparecer uma nica vez no ficheiro ou no canal de dados PNG, precedendo todos e quaisquer blocos IDAT. Contm um mapa de 1 a 256 cores a ser empregue por todas as imagens que se seguirem. Cada cor ocupa trs bytes com os valores das suas componentes RGB. Ao primeiro conjunto de trs bytes atribudo o ndice de cor 0, ao segundo conjunto o ndice 1 e, assim, sucessivamente. O comprimento em bytes de um bloco PLTE igual a trs vezes o nmero de cores definidas pelo mapa de cores. Um comprimento que no seja mltiplo de 3 constitui um erro. O valor hexadecimal do identificador de um bloco PLTE 504C5445 (PLTE, em ASCII). Este tipo de bloco deve ser inserido no canal de dados ou ficheiro PNG sempre que o valor do campo Color Type do bloco IHDR 3 ou, opcionalmente, quando o valor de Color Type 2 ou 6, com o fim de sugerir at 256 cores de substituio para o caso de a unidade grfica de sada no suportar cores verdadeiras. No permitida a insero de qualquer bloco PLTE quando o valor de Color Type for 0 ou 4. O nmero de cores definidas por um bloco PLTE no pode exceder aquele que deriva do valor de Bit Depth declarado no bloco IHDR. Se, por exemplo, Bit Depth for 4, o nmero mximo de cores no poder exceder 24, ou seja, 16 cores. No entanto,
27

O entrelaamento segundo este mtodo ser apresentado mais adiante.


DEI Instituto Superior Tcnico

26

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

perfeitamente possvel definir menos cores do que este limite, mas verificar-se um erro se uma imagem referenciar um ndice que no conste do mapa de cores. Bloco IDAT Os blocos IDAT armazenam o contedo das imagens. Cada imagem pode ser descrita por mais do que um bloco IDAT mas, neste caso, os blocos IDAT da imagem devem aparecer consecutivamente no ficheiro ou canal de dados PNG, sem nenhum outro bloco que no seja do tipo IDAT colocado entre eles. O identificador de um bloco IDAT tem o valor hexadecimal 48444154 (IDAT, em ASCII). Quando no empregue entrelaamento para apresentao progressiva das imagens, as linhas de uma imagem so varridas de cima para baixo e, em cada linha, da esquerda para a direita. Antes da compresso aplicado a cada linha um algoritmo de filtragem. Quando se emprega entrelaamento, a fase de filtragem precedida pelo rearranjo dos pxeis da imagem, de acordo com o algoritmo Adam7. Bloco gIFg O bloco gIFg um tipo de bloco de extenso definio do formato PNG e, consequentemente, a sua implementao e interpretao so facultativas. O interesse deste tipo de bloco reside no facto de transpor para o formato PNG a funcionalidade do bloco Graphic Control Extension do formato GIF89a, que permite obter animaes simples controlando a apresentao de imagens sucessivas. O valor hexadecimal do identificador de um bloco gIFg 67494667 (gIFg, em ASCII) e contm os campos Disposal Method (1 byte), User Input Flag (1 byte) e Delay Time (2 bytes). O significado destes campos , respectivamente, idntico ao significado dos bits DDD e U do campo Packed Fields e ao campo Delay Time do bloco Graphics Control Extension do formato GIF.

5.2

Bloco gAMA

Este bloco, cujo valor hexadecimal do seu identificador 67414D41 (gAMA, em ASCII), contm a informao referente s sucessivas correces gama a que a imagem j foi sujeita, por forma a poder apresentar a imagem com cores correctas, independentemente da distoro de cor provocada pelo valor de gama da unidade grfica de sada. O contedo deste tipo de bloco constitudo por um nico campo, com 4 bytes de comprimento, contendo o produto de 100.000 pelo valor acumulado das correces gama a que a imagem foi sujeita. Assim, por exemplo, a um valor de correco gama cujo expoente 1/2,2, corresponde um valor deste campo igual a 1/2,2100.000, ou seja, 0,45455100.000, cujo valor inteiro 45.454 (decimal).

5.3

Apresentao Progressiva

Designado por apresentao progressiva, o entrelaamento suportado pelo formato PNG permite dar ao utilizador uma ideia da imagem total a partir de dados incompletos, atravs do algoritmo Adam7.

DEI Instituto Superior Tcnico

27

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Verificao da Integridade dos Dados O formato PNG especifica a verificao da integridade dos dados constantes de cada bloco por meio de um algoritmo CRC normalizado com pr e ps condicionamento, definido pela norma ISO 3309, que emprega o polinmio

x 32 + x 26 + x 23 + x 22 + x16 + x12 + x11 + x10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1

(5.1)

O registo CRC de 32 bits inicializado a 1s e cada byte do bloco processado do bit menos significativo (1) ao bit mais significativo (128). Depois de todos os bytes terem sido processados, o registo CRC invertido e o seu valor transmitido no fim do bloco.

5.4

Algoritmo de Compresso e Descompresso

O algoritmo de compresso e descompresso empregue pelo formato PNG o algoritmo utilizado pelos programas zip, gzip e pkzip, que deriva do algoritmo LZ77 e de que existem implementaes do domnio pblico. As cadeias de caracteres comprimidos por este algoritmo seguem o formato zlib, cuja estrutura Campo Compression methods/flags code Additional flags/check bits Compressed data blocks Check value No de bytes 1 1 (varivel) 4

6 Formato JFIF (JPEG)


6.1 JPEG e JFIF

A norma internacional JPEG (ISO 10918-1) define uma famlia de algoritmos de compresso e descompresso, com e sem perda, para imagens de qualidade fotogrfica, tambm designadas por imagens de tons contnuos (continuous tone images). Em troca de um menor comprimento das imagens, estes algoritmos aceitam a perda controlada de informao do contedo das imagens com base no facto de a viso humana ser incapaz de distinguir as muito pequenas diferenas de cor que existem entre pxeis contguos nas imagens de qualidade fotogrfica28. A sigla JPEG deriva do nome da comisso internacional de normalizao, o Joint Photographic Experts Group, oficialmente designado por Joint Committee ISO/IEC JTC1 SC 29 Working Group 1. Contrariamente ao que do conhecimento comum, no existe nenhum formato JPEG porque a norma ISO 10918-1 no define tal formato. Esta norma limita-se a definir os algoritmos de compresso e descompresso, deixando aos formatos existentes a liberdade de aplicarem ou no os algoritmos normalizados. Um dos formatos que adoptou esta norma foi o formato TIFF (Tag-based Image File Format), propriedade da Aldus Corporation. A partir da verso 6 deste formato, os codificadores de imagens em formato TIFF passaram a poder empregar os algoritmos JPEG em paralelo com os
28

Relembre-se que a viso humana integra as cores de pxeis contguos quando o ngulo de viso de um grupo de pxeis inferior a um valor limite.
28 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

outros algoritmos de compresso que o formato j empregava. No entanto, o emprego deste formato no se generalizou devido sua complexidade que deriva dos inmeros parmetros de imagem que permite e que tornam complicada a sua implementao. O vazio criado pela norma ISO 10918-1 foi preenchido pelo formato JFIF (JPEG File Interchange Format) que um formato de imagem simples e que, embora apresente limitaes, relativamente fcil de implementar e permite imagens a cores reais (224 cores)29. A aceitao deste formato foi enorme. Um dos factores que mais contriburam para esta aceitao foi a expanso da World Wide Web cujos utilizadores necessitavam poder transmitir imagens com mais cores do que o mximo de 256 cores permitido pelo formato GIF, mas de comprimento reduzido para diminuir o respectivo tempo de carregamento. A popularidade deste formato, associada necessidade de abreviar o comprimento do seu nome (JPEG File Interchange Format), levaram o comum dos utilizadores a design-lo simplesmente por JPEG e assim se estabeleceu a confuso entre o nome do formato JFIF e nome da norma JPEG.

6.2

Caractersticas do Formato JFIF

Contrariamente maioria dos muitos formatos de imagem existentes, o formato JFIF no utiliza o modelo de cor RGB, mas o modelo YCbCr (luminncia, crominncia azul e crominncia vermelha) com quantizao da cor que, logo partida, reduz o contedo da imagem a metade do seu tamanho original, mas acarreta perda de informao. A compresso JPEG empregue por este formato utiliza algoritmos de compresso e descompresso do tipo da transformada discreta do co-seno, derivada da transformada de Fourier. Os algoritmos so aplicados a grupos de 88 pxeis de uma mesma componente de cor, sendo cada componente de cor processada independentemente das outras. Os coeficientes da transformada, designados por coeficientes AC e DC, depois de alguns tratamentos so armazenados em segmentos de informao dos ficheiros JFIF30.

6.3

Formato dos Ficheiros JFIF

Os ficheiros em formato JFIF esto organizados por seces ou blocos separados entre si por marcas com o comprimento de um byte. Cada marca precedida por um byte contendo o valor hexadecimal FF que assinala que se segue uma marca. A tabela 6.1 apresenta as marcas mais comuns presentes em ficheiros JFIF. Todos os ficheiros contm um segmento SOI no seu incio, segmento este que obrigatoriamente seguido por um segmento do tipo APP0. Um nmero varivel de segmentos do tipo APPn poder ser includo logo a seguir ao segmento APP0. O ficheiro inclui seguidamente um ou mais segmentos DQT contendo cada um deles uma tabela de quantizao, um segmento SOF0 descrevendo os parmetros principais da imagem e um ou mais segmentos DHT contendo as tabelas de Huffman empregues na compresso e que so necessrias para a descompresso. A seguir a estes segmentos vem um segmento do tipo SOS que descreve as componentes comprimidas da imagem. O ficheiro termina com um segmento EOI que assinala o seu fim.
29 30

O formato JFIF foi criado por Eric Hamilton da C-Cube Microsystems. Ver a descrio destes segmentos mais adiante.
29

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Todas as marcas anteriormente citadas, excepo das marcas SOI e EOI, so imediatamente seguidas por dois bytes cujo valor corresponde ao comprimento do respectivo segmento. Neste comprimento so contados os dois bytes do prprio comprimento, mas no os bytes introdutores e identificadores do segmento. Segmento SOI Este segmento destina-se a assinalar o incio de um ficheiro no formato JFIF e, consequentemente, no tem informao sobre o seu comprimento, nem qualquer contedo. constitudo por apenas dois bytes cujo valor hexadecimal FFD8. Segmento EOI Um segmento EOI assinala o fim de um ficheiro em formato JFIF e, tal como para o segmento SOI, contm apenas 2 bytes cujo valor hexadecimal FFD9.
Marca Valor Tipo de marca Hexadecimal

SOI APP0 APPn DQT SOF0 DHT SOS EOI

D8 E0 En DB C0 C4 DA D9

Incio de uma imagem Segmento identificador JFIF Outros segmentos identificadores opcionais Identificador de tabela de quantizao Incio de um quadro (frame) da imagem Identificador de uma tabela de Huffman Incio dos dados (contedo) de uma imagem Fim da imagem

Tabela 6.1 Marcas de segmento mais comuns em ficheiros do formato JFIF.

Segmento APP0 Este segmento, que nico num ficheiro em formato JFIF, deve ser colocado imediatamente a seguir ao segmento SOI inicial. A informao contida num segmento APP0
Campo Bytes Contedo

APP0 length Identifier Version

2 5 2

Nmero de bytes contidos no segmento, incluindo os dois bytes deste campo. Este campo deve conter a cadeia JFIF\0 em ASCII. Representao do nmero de verso (primeiro byte) e do nmero de reviso (segundo byte). Exemplo: a verso 1.02 identificada pelo valor hexadecimal 0102. Especifica a unidade de comprimento empregue nos valores de densidade vertical e horizontal dos pxeis. Pode assumir os valores 0 (no so especificadas unidades), 1 (pxeis por polegada) ou

Units for X and Y densities

30

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

2 (pxeis por metro). X density Y density X thumbnail Y thumbnail (RGB)n 2 2 1 1 3n Densidade horizontal dos pxeis. Densidade vertical dos pxeis. Largura, em pxeis, do thumbnail31 da imagem contida no ficheiro. Altura, em pxeis, do thumbnail da imagem contida no ficheiro. Valores RGB compactados em 24 bits, dos pxeis do thumbnail32 da imagem contida no ficheiro, em que n=XthumbnailYthumbnail.

Segmento DQT Um ou mais segmentos DQT devem ser inseridos no ficheiro JFIF logo a seguir aos segmentos APPn, se existirem, ou ao segmento APP0. Um segmento DQT contm os valores de uma das tabelas empregues na quantizao da cor realizada durante o processamento do contedo da imagem, antes da fase de compresso. Os campos de um segmento DQT so:
Campo Bytes Contedo

DQT length Table number Table values

2 1 n

Nmero de bytes contidos no segmento, incluindo os dois bytes deste comprimento. Indica qual das componentes de cor (Y, Cb ou Cr) empregar esta tabela. Cada um dos n (n=DQTlength-3) bytes deste campo contm um elemento da tabela de quantizao. O valor de n , usualmente, 64.

Segmento SOF0 Este segmento descreve os principais parmetros da imagem. Os seus dois bytes iniciais contm o valor hexadecimal FFC0 e os seus campos so:
Campo Bytes Contedo

SOF0 length Bit precision Image height


31

2 1 2

Nmero de bytes contidos no segmento, incluindo os dois bytes deste comprimento. Nmero de bits ocupados por cada componente de cor na imagem original, normalmente 8. Altura da imagem, em pxeis.

Um thumbnail uma imagem reduzida da imagem contida no ficheiro, normalmente com dimenses iguais ou inferiores a 3232 pxeis, e que pode desempenhar a funo de cone da imagem. 32 Se Xthumbnail ou Ythumbnail forem nulos, no existe thumbnail no ficheiro e o campo (RGB)n no includo no segmento.
DEI Instituto Superior Tcnico 31

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Image width Component number Component Info

2 1 9

Largura da imagem, em pxeis. Nmero de componentes de cor empregues pela imagem, obrigatoriamente 3. Contm trs bytes por cada uma das componentes da cor, com o valor hexadecimal IIHVTT, em que: II Identificador da componente (1, 2 ou 3) H factor de amostragem horizontal da componente de cor V factor de amostragem vertical da componente de cor TT nmero da tabela de quantizao empregue para esta componente de cor (ver segmento DQT)

Segmento DHT Cada segmento DHT, identificado pelos seus dois bytes iniciais contendo o valor hexadecimal FFC4, contm uma das tabelas de Huffman empregues na compresso do contedo da imagem. Os campos de um segmento DHT so:
Campo Bytes Contedo

DHT length Type and table Mark

2 1 16

Nmero de bytes contidos no segmento, incluindo os dois bytes deste comprimento. Byte com o valor TN, em que T o tipo de tabela (AC se T=1 ou DC se T1) e N o nmero da tabela. Bytes contendo mscaras para os valores definidos pela tabela. A sua soma indica quantos valores da tabela esto armazenados no campo Values. Valores a introduzir na tabela de Huffman descrita por este segmento.

Values

Segmento SOS Este tipo de segmento introduz o segmento onde se encontra o contedo (comprimido) da imagem. O valor hexadecimal do identificador de um segmento SOS FFDA. Os campos da informao contida num segmento SOS so:
Campo Bytes Contedo

SOS length Number of components

2 1

Nmero de bytes contidos no segmento, incluindo os dois bytes deste comprimento. Nmero de componentes de cor da imagem (n), usualmente 3.

32

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Component ID and Huffman tables

2n

Este conjunto de 2n bytes associa 2 bytes com o valor hexadecimal IIDA a cada uma das componentes de cor, sendo II identificador da componente de cor (1-Y, 2-Cb, 3-Cr) D Nmero da tabela DC de Huffman a ser empregue para descomprimir esta componente A Nmero da tabela AC de Huffman a ser empregue para descomprimir esta componente

Padding

length- Bytes de preenchimento do restante do bloco, se tal 3-2n for necessrio.

Imagem Comprimida O contedo comprimido da imagem colocado imediatamente a seguir ao segmento SOS. Este contedo encontra-se separado por componentes e, na sua leitura, ter-se- que ter o cuidado de verificar se o byte seguinte a um byte com o valor FF contm ou no 0. Se assim for, o byte contendo o valor FF pertence cadeia comprimida da imagem e o segundo byte descartado. Se isto no suceder, ento estamos perante um incio de um novo segmento que, como tal, dever ser processado.

7 Formatos de Imagem para Aplicaes em Medicina


Existe um grande nmero de formatos de imagem empregues em aplicaes de Medicina. Estes formatos variam de fabricante para fabricante de equipamentos mdicos e, muitas vezes, de gerao para gerao de equipamentos de um mesmo fabricante. Alguns destes formatos baseiam-se em extenses a formatos de carcter geral adaptados ao tipo de aplicaes e aos equipamentos. Para alm dos dados das imagens, os formatos empregues em Medicina apresentam geralmente enormes quantidades de informao, agrupada em blocos de comprimento e estrutura muito variveis. Esta informao descreve dados como a identificao do paciente e respectivos dados clnicos, datas e horas dos exames mdicos, tipo de exames mdicos, tcnicas empregues nesses exames, sequncia dos cortes (principalmente em TAC33 e IRM34) e seriao de imagens35. As imagens contidas nestes formatos esto normalmente localizadas na parte final dos respectivos ficheiros, depois de toda a informao sobre o paciente e sobre o exame ou exames realizados. Nesta seco iremos apresentar, a ttulo de exemplo, um formato de imagem empregue para armazenar imagens produzidas num equipamento de IRM.

Tomografia Axial Computorizada. Imagem por Ressonncia Magntica. 35 Durante um exame TAC, normalmente realizada uma srie de imagens correspondentes a seces da zona anatmica a ser examinada. O conjunto de seces de um exame permite reconstituir um modelo tridimensional da zona examinada.
34

33

DEI Instituto Superior Tcnico

33

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

7.1

O formato GE Sygna

O formato GE Sygna um dos muitos formatos de imagens empregues em aplicaes de Medicina e, tambm, um dos muitos formatos utilizado em equipamentos de TAC e IRM da General Electric36 (GE). Este formato permite guardar imagens em tons de cinzento com uma profundidade mxima de 16 bits por pxel, ou seja 65536 nveis de intensidade, com ou sem compresso. O contedo das imagens encontra-se na parte final do ficheiro. Este contedo encontra-se organizado por varrimento vertical das linhas de cima para baixo e, dentro de cada linha, da esquerda para a direita. No incio do ficheiro existe um bloco de controlo que descreve o contedo do ficheiro e contm os parmetros da imagem nele guardada. Os campos destes parmetros so:
Campo Bytes Contedo

Identificador Offset da imagem Largura Altura Profundidade Compresso

4 4 4 4 4 4

Identificador do formato da imagem, a cadeia de caracteres IMGF, em ASCII. Posio (em bytes) do primeiro byte do contedo da imagem relativamente ao incio do ficheiro. Largura da imagem, em pxeis. Altura da imagem em pxeis. Nmero de bits por pxel, usualmente 16. Tipo de compresso aplicada ao contedo da imagem armazenada pelo ficheiro.

Alm da informao referente aos parmetros da imagem, o bloco de controlo pode conter outra informao referente localizao e comprimento de outros blocos de informao existentes no ficheiro. Os tipos de blocos que podem ser encontrados num ficheiro deste tipo so: Identificador (nico) da imagem Bloco de compactao Bloco auxiliar, contendo informao necessria para descomprimir imagens comprimidas Bloco do histograma da imagem, contendo dados estatsticos sobre o emprego efectivo dos nveis de intensidade utilizados pela imagem Bloco descritor do plano de texto. O plano de texto destina-se a registar em placa fotogrfica informao sobre o paciente e exame realizado Bloco descritor da base de dados, para associar a imagem ao conjunto de imagens que permitem descrever os volumes varridos por exames TAC ou IRM Bloco de dados introduzidos pelo operador, normalmente empregue para anexar comentrios e anotaes imagem

36

Este formato tem a curiosidade de ter sido empregue pela Universidade do Colorado em Denver ao colaborar no Visible Human Project do NIH.
34 DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Bloco do conjunto de imagens, que, entre outra informao, contm informao sobre o equipamento empregue no exame realizado Bloco do exame mdico, contendo informao sobre o tipo de exame mdico, data e local onde foi realizado, identificao do paciente e outros dados como idade e sexo do paciente Bloco descrevendo a srie de imagens a que a imagem pertence, contendo referncias anatmicas zona a que foi realizado o exame e ao tipo de protocolo de varrimento empregue na obteno das imagens do exame Bloco da imagem, contendo informao sobre as caractersticas fsicas (dimenses reais), resoluo da imagem e outra informao referente zona do paciente a que foi realizado o exame

Alguns destes blocos podem estar ou no presentes no ficheiro. A ausncia de um bloco assinalada por um comprimento nulo do bloco. prtica corrente em aplicaes mdicas imprimir as imagens em chapas fotogrficas para posterior exame pelos clnicos da mesma forma que examinam chapas radiolgicas. Este tipo de meio permite representar um nmero de intensidades de tons de cinzento maior do 256 e, por esta razo, cada pxel da imagem tem a profundidade de 16 bits. Para visualizar este tipo de imagens em monitores normais necessrio proceder reduo do nmero de nveis de intensidade. Uma forma expedita de o fazer consiste em converter a imagem para o formato PGM (Portable GrayMap) na sua variante em ASCII (tipo P2), declarando no prlogo da imagem o maior valor de intensidade da imagem37 como a maior intensidade nela encontrado. claro que obteremos assim um ficheiro de comprimento extremamente elevado. Para obviar a este inconveniente, poder-se-, alternativamente, criar um ficheiro PGM de tipo binrio (P5), fazendo corresponder nveis de cinzento compreendidos entre 0 e 255 aos nveis de cinzento entre 0 e o nvel mximo presente na imagem original.

8 Comparao de Formatos
Os formatos de imagem descritos neste captulo possuem caractersticas e funcionalidade muito variadas que a tabela 8.1 apresenta. O nmero destas caractersticas e os valores que podem assumir confundem o utilizador principiante ou mdio que pretende seleccionar um formato de imagem. Normalmente, o utilizador est preocupado com dois aspectos: o tamanho dos ficheiros e a qualidade das imagens finais. Mas a natureza destas pode ser muito variada e, no raro, o utilizador confrontado com resultados inesperados e, por vezes, desastrosos. Apresentamos de seguida dois casos de imagens digitais que consubstanciam dois casos extremos:
37

Imagens de contedo com qualidade fotogrfica Imagens contendo grficos simples

Um conversor de formato de imagem poder ser subsequentemente empregue para converter o ficheiro do formato PGM para outro formato em que a imagem ocupe menos espao.
DEI Instituto Superior Tcnico 35

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

PBM Nmero cores suportadas Tipo de cor Compresso Mapa de cores de 2, 16.777.216

DIB

GIF

PNG

JFIF

2, 16, 256, 2, 4, 8, 16, 2, 4, 16, 16.777.216 16.777.216 32, 64, 128, 256, 256 16.777.216, 248 RGB RGB RGB YCbCr RLE a 4 e LZW 8 bits/pxel (s/perda) LZ77 mod. JPEG (s/perda) (c/perda)

RGB no no

s c/ 2, 16 obrigatrio s c/ 2, 4, no e 256 em todos os 16, 256 cores tipos cores no opcional, por linhas opcional, por pxeis no

Entrelaamento no Varrimento vertical Transparncia Extenses convencionais Outras caractersticas

descendente ascendente no no

descendente descendente blocos Sim, 1 cor .gif Sim, plano no alfa .png .jpg

.pbm, .pgm, .bmp .ppm

canal GIF canal PNG c/sequncia c/sequncia controlvel controlvel; corr. gama; CRC; network byte order

Tabela 8.1 Quadro comparativo das capacidades de vrios formatos de imagem.

comparando o tamanho dos respectivos ficheiros quando convertidos para os formatos GIF, PNG, JFIF e PPM, a partir de imagens em formato DIB contendo toda a informao das imagens originais. A imagem de qualidade fotogrfica da figura 8.1 uma imagem de 512512 pxeis que emprega 230.426 cores. Os valores do tamanho dos ficheiros correspondentes a esta imagem38, depois de convertida para vrios formatos que a tabela 8.2 apresenta, permitem verificar que no existem diferenas significativas entre os formatos DIB e PPM, tal como era de esperar. Os ficheiros em formato PNG, embora sejam menores, no apresentam no entanto uma reduo significativa do seu tamanho em relao queles formatos dado que o respectivo algoritmo de compresso no adequado a uma imagem desta natureza, mesmo quando empregam filtragem adaptativa.

Os valores apresentados na tabela dependem, como bvio, da imagem empregue. No entanto, valores obtidos com outras imagens de teste muito divulgadas (Lenna, por exemplo) no alteram a natureza das concluses que aqui so apresentadas.
36 DEI Instituto Superior Tcnico

38

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Figura 8.1 Imagem de qualidade fotogrfica

A reduo significativa do tamanho dos ficheiros permitida pelo formato GIF acompanhada pela inevitvel reduo do nmero de cores devido ao limite ao nmero de cores imposto pelo formato. A consequncia uma ntida reduo da qualidade da imagem para um nvel que deixa de ser aceitvel. Isto bem visvel no exemplo da figura 8.2 que apresenta em ampliao uma rea de uma imagem cuja qualidade foi bastante degradada devido reduo do nmero de cores implcita na converso da imagem para o formato GIF. Os vrios produtos empregues na converso da imagem para o formato JFIF definem escalas de nvel de qualidade cuja correspondncia difcil, seno impossvel, de estabelecer. A tabela 8.3 apresenta essas escalas e os valores adoptados em cada um dos produtos para os nveis de teste da qualidade designados por mximo, mdio e mnimo na converso para formato JFIF. MS Photo Editor DIB/BMP GIF PNG JFIF
s/entre c/entre s/entre c/entre max med min binrio ASCII

Paint Shop Pro 786486 261332 (256) 266523 (256) 636923 667648 313125 (161704) 51151 (151270) 32300 (113683) 786475 2893594

Adobe Photoshop 786486 248878 (256) 254103 (256) 781799 788863 491285 (176062) 87798 (156760) 53248 (133424)

786486 169369 (136) 755065 342808 (159067) 50717 (149903) 31768 (111645)

PPM

Tabela 8.2 Nmero de bytes ocupados pela imagem da Figura 8.1 em diferentes formatos produzidos por trs produtos. A imagem original tem as dimenses de 512512 pxeis e 230.426 cores (os nmeros entre parntesis assinalam o emprego pelo formato de um nmero de cores diferente deste).

DEI Instituto Superior Tcnico

37

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Figura 8.2 Ampliao de uma zona de uma imagem convertida para formato GIF com reduo drstica do nmero de cores de que resulta uma rea com variaes abruptas de cor em vez de uma variao contnua.

A reduo para cerca de metade do seu tamanho original em formato DIB dos ficheiros quando se empregou o formato JFIF com a qualidade mxima permitida est relacionada com a reduo da quantidade de informao referente a cada pxel da imagem. Com uma qualidade mdia, o nmero de cores reduz-se para pouco mais do que metade do nmero de cores original, mas os factores de compresso obtidos so da ordem de 10 ou mais e o comprimento dos ficheiros entre 3 a 4 vezes mais pequeno do que os ficheiros GIF correspondentes, tudo isto sem que se detecte qualquer diferena entre a imagem original e a imagem comprimida. Os ficheiros JFIF correspondentes qualidade mnima so ainda mais pequenos mas, neste caso, j possvel detectar algumas diferenas entre a imagem original e as imagens comprimidas, excepto no caso da imagem produzida pelo Adobe Photoshop cuja compresso no to grande como a obtida pelos outros produtos. Mesmo assim, verifica-se que as imagens JFIF de pior qualidade so de qualidade muito superior s imagens em formato GIF. Produto (escala) Nvel de qualidade Mximo Mdio Mnimo 100 50 25 1 50 75 12 5 2 MS Photo Editor (1-100) Paint Shop Pr (99-1) Photoshop (0-12)

Tabela 8.3 Escala de nvel de qualidade da compresso JPEG empregues por diferentes produtos e valores para esses produtos referentes qualidade mxima, mdia e mnima empregues no estudo comparativo.

38

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Os valores da tabela 8.2 mostram que uma imagem comprimida por produtos diferentes resulta, em geral, em ficheiros de tamanhos diferentes. Isto deve-se forma diversa com que os produtos implementam os mesmos algoritmos de compresso. Da tabela tambm possvel concluir que o emprego de entrelaamento tem o efeito de aumentar um pouco, embora no significativamente, o espao ocupado pelos ficheiros que utilizam esta tcnica. A imagem da figura 8.3 situa-se no outro extremo do espectro de tipos de imagens relativamente s imagens de qualidade fotogrfica. A imagem, com as dimenses de 717494 pxeis, apresenta 10 cores e contm um grfico simples em que, quando a cor varia, a variao de cor abrupta de um pxel para o pxel contguo. Na imagem existem grupos de dimenso aprecivel de pxeis contguos da mesma cor. A tabela 8.4 apresenta os comprimentos em bytes dos ficheiros resultantes da converso da imagem da figura para vrios formatos. Tal como para a imagem de qualidade fotogrfica, no existem diferenas significativas entre os formatos DIB e PPM no que respeita ao tamanho dos respectivos ficheiros. Mas os ficheiros resultantes da converso da imagem para os formatos GIF e PNG apresentam agora tamanhos muito semelhantes. Se o nmero mximo de cores da imagem for reduzido de 16.777.216 para 256 antes da converso para o formato PNG, os ficheiros obtidos sero nitidamente mais pequenos que os ficheiros da mesma imagem em formato GIF. A converso desta imagem para o formato JFIF resulta sempre em ficheiros de comprimento maior do que os dos formatos GIF ou PNG. Mas, mais importante, esta converso acompanhada por uma ntida degradao da imagem. Com efeito, mesmo empregando o formato JFIF no maior nvel de qualidade que possvel, as imagens convertidas por qualquer dos produtos apresentam artefactos devidos a aliasing. Este efeito acentua-se ainda mais para as imagens JFIF correspondentes aos nveis de qualidade mdia e mnima, sendo os resultados particularmente catastrficos neste ltimo caso. A degradao da qualidade das imagens muito ntida e acompanhada pela multiplicao incontrolada do nmero de cores efectivamente empregues nas imagens, com cores e linhas muito esborratadas.

Figura 8.3 Imagem contendo um grfico simples

DEI Instituto Superior Tcnico

39

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

MS Photo Editor DIB/BMP GIF PNG


s/entre c/entre s/entre c/entre 256 cores max med min binrio ASCII

Paint Shop Pro 1063142 17581 17904 19097 28482 12899 161770 (2764) 44262 (28097) 31495 (30223) 1062637 4161787

Adobe Photoshop 1063142 16268 16667 29861 39103 14975 (18) 226607 (444) 73789 (21443) 54583 (26423)

1063142 19271 (18) 18951 14795 (18) 174285 (111) 44330 (27550) 31768 (29756)

JFIF

PPM

Tabela 8.4 - Nmero de bytes ocupados pela imagem da Figura 8.3 em diferentes formatos produzidos por trs produtos. A imagem original tem as dimenses de 717494 pxeis e 10 cores (os nmeros entre parntesis assinalam o emprego pelo formato de um nmero de cores diferente).

A figura 8.4 permite apreciar em ampliao os artefactos introduzidos na imagem da figura 8.3 na sua converso para o formato JFIF. Na figura 8.5 possvel apreciar a degradao progressiva da qualidade da imagem da figura 2.2 quando esta convertida para o formato JFIF com cada vez menor nvel de qualidade. Os exemplos anteriores mostram que o formato JFIF o formato ideal para imagens de qualidade fotogrfica, mas que no deve ser empregue com imagens com pequeno nmero de cores ou com variaes sbitas de cor entre pxeis contguos. Para este caso os formatos GIF ou PNG so muito mais apropriados e, se o nmero de cores for inferior a 256 cores, conveniente reduzir primeiro a profundidade da imagem para 256 cores e, em seguida, convert-la para o formato PNG.

correcto

incorrecto (JFIF)

Figura 8.4 rea ampliada da imagem da figura 8.3 mostrando os artefactos introduzidos pela converso da imagem para o formato JFIF.

40

DEI Instituto Superior Tcnico

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

90

80

70

60

50

40

20

10

Figura 8.5 Degradao progressiva da qualidade de uma imagem para a qual o formato JFIF totalmente inapropriado. Os nveis de qualidade de cada imagem correspondem a uma escala com nvel mximo de qualidade igual a 100 e um nvel de qualidade mnima de 1.

O emprego do formato JFIF deve ser feito com alguns cuidados. Em primeiro lugar h que ter cuidado com o nvel de reduo de qualidade a empregar, pois a sua influncia na qualidade dos resultados varia de imagem para imagem e, tambm, com as dimenses da imagem, sendo conveniente realizar algumas experincias antes de optar por um determinado nvel. Um segundo aspecto, talvez mais importante do que o primeiro, consiste no cuidado a ter quando se reduzem as dimenses de uma imagem em formato JFIF. A reduo das dimenses de imagens que j tenham sofrido perdas significativas resulta em imagens de muito m qualidade porque a informao necessria ao processo de reduo das dimenses insuficiente. Neste caso, a forma correcta de proceder consiste em, a partir de uma imagem JFIF com a mxima qualidade possvel, reduzir primeiro as suas dimenses e, s depois, comprimi-la com perda.

DEI Instituto Superior Tcnico

41

J. M. Brisson Lopes

Computao Grfica: Formatos de Imagem

Exerccios
1. 2. Explique como foram calculados os tempos ao fim dos quais se encontra completa cada uma das passagens do algoritmo de entrelaamento da figura 1.3. Faa o mesmo para o caso da imagem da figura 1.4. Com base nos resultados que obteve, explique a vantagem do algoritmo entrelaamento Adam 7 em relao ao algoritmo de entrelaamento empregue pelo formato GIF. A taxa de transmisso efectiva que se verifica durante o carregamento de uma imagem GIF, com as dimenses de 320240 pxeis, por um navegador da WWW de 5.500 bit/s. Calcule os tempos ao fim dos quais as sucessivas passagens de entrelaamento se encontram completas. Explique por que razo, para uma imagem do tipo True Color, no tem vantagem o emprego de um mapa de cores. Se, numa imagem do tipo High Color de mn pxeis em que cada componente de cor ocupa 1 byte, for empregue um mapa de cores em que o nmero de cores possa ser inferior ao nmero limite (65.536 cores), determine o nmero de cores para o qual o emprego do mapa de cores resulta numa representao da imagem com o mesmo comprimento que se obtm quando o mapa no empregue. Para o resultado do exerccio anterior, explique o que sucederia para valores do nmero de cores superiores e inferiores ao valor que determinou. Para uma imagem do tipo High Color de mn pxeis em que cada componente de cor ocupa 1 byte, qual o tamanho da imagem a partir do qual o emprego de um mapa de cores contendo 65536 cores deixa de ter interesse? Calcule o factor de compresso mnimo permitido pelo formato JFIF para uma imagem do tipo True Color quando o modelo de cor YCbCr, usado por este formato, emprega 8 bits para representar a luminncia e 4 bits para representar as componentes de cromaticidade do modelo. Determine o nmero de bytes ocupado por uma imagem de 200150 pxeis, com 8 bits por pxel, em que a metade superior verde e a inferior amarela, quando a imagem comprimida pelo algoritmo de compresso RLE. Compare o resultado obtido com o comprimento da imagem no comprimida. Compare os resultados que obteve no exerccio anterior com os que obteria se a imagem fosse constituda por uma metade esquerda de cor verde e uma metade direita de cor amarela. Explique a razo das diferenas que encontrar. Explique as vantagens e desvantagens do emprego da mscara para obter efeitos de transparncia empregue pelo formato PNG em relao transparncia que possvel obter com o formato GIF com base numa dada cor.

3.

4. 5.

6. 7.

8.

9.

10.

11.

42

DEI Instituto Superior Tcnico

Você também pode gostar