Processamento Digital de Imagens

Processamento de  Cores



    Nesta aula abordaremos os principais conceitos básicos relacionados com imagens digitais


Importante: O resumo abaixo deve ser complementado, pelo aluno, com a leitura dos textos sugeridos na bibliografia do curso. O texto e as figuras abaixo foram retiradas de http://www.dpi.inpe.br/cursos/pdi/pdi4-cores_arquivos/frame.htm


Tópicos


Introdução

    Considerações iniciais:
    Formação da imagem através do olho humano

   

  • O olho humano é como um instrumento ótico
  •  A luz passa através da pupila e é focalizada na retina pela lente
  • A retina contém um grande número de fotoreceptores sensíveis a luz: cones (diurna) e bastonetes (noturna)
  •  Os fotoreceptores tranformam a energia eletromagnética (luz) em energia neural formando a imagem
  •  A percepção de cor está relacionada com a composição do comprimento de onda da luz que atinge os olhos. A Figura abaixo mostra como as cores estão relacionadas com o comprimento de onda. No espectro visível nossos olhos são sensibilizados pelas cores respectivas.

  • A figura abaixo mostra uma aproximação das curvas de sensibilidade relativa do olho humano para cada uma das componentes R, G e B.






Sistema de Cores Aditivo (RGB)
  • A figura abaixo mostra que através da composicao aditiva das cores primárias R - Red (Vermelha), G - Greeen (Verde) e B - Blue (Azul)  é possivel a criação de infinitas cores derivadas.
  • A cor preta pura é formada pela ausência dessas 3 componentes  enquanto que a cor branca pura é gerada pela mistura de valores máximos de componentes R, G e B.





  • A figura abaixo apresenta uma representação das cores através do Cubo de Cores no sistema de referência 3-D com eixos representando as cores R, G e B.





  • 0s valores de intensidade no cubo variam de 0 a 1. O valor 0 significa ausência total da componente de cor e o valor 1 significa intensidade máxima relacionada à componente.
  • Por essa representação cada cor é então modelada como uma combinação linear de intensidades das componentes  R, G e B.  Assim:

Cor(r,g,b) = r*R + g*G + b*B

          onde r, g e b são porcentagens ou proporções (entre 0 e 1) das componentes primárias R, G e B.

Segue, abaixo, uma tabela com as cores dos vértices do Cubo de Cores

 Red 
 Green 
 Blue 
Cor
0
0
0
Preto
0
0
1
Azul
0
1
0
Verde
0
1
1
Cyan
1
0
0
Vermelho
1
0
1
Magenta
1
1
0
Amarelo
1
1
1
Branco




 Cyan 
 Magenta 
 Amarelo 
Cor
1
1
1
Preto
1
1
0
Azul
1
0
1
Verde
1
0
0
Cyan
0
1
1
Vermelho
0
1
0
Magenta
0
0
1
Amarelo
0
0
0
Branco



Formação das cores em um monitor de vídeo

  • A figura abaixo mostra um esquema geral da formação das cores em um monitor de vídeo.



  • A tela possui pontos revestidos de fósforo (RGB)
  •  O canhão emite feixe de elétrons até atingir um ponto na tela que excita o fósforo o qual emite luz
  •  A combinação dos três canhões produz a sensação de cor



Up

Determinação e Armazenamento das Cores das Imagens Digitais

       Introdução

quant1




Tabela em Níveis de Cinza




Cor
Red
Green
Blue

0
0
0
0

1
1
1
1

2
2
2
2

3
3
3
3

.
.
.
.

.
.
.
.

.
.
.
.

253
253
253
253

254
254
254
254

255
255
255
255

  • Observe que a formação dos níveis de cinza segue uma regra de formação básica: A intensidade é sempre a mesma para todos as componentes R, G e B (Diagonal do Cubo de Cores). Como essa regra é muito simples, em geral as imagens de cinza não tem sua tabela guardada, explicitamente, junto com a imagem digital. Basta saber que a imagem tem um lut em níveis de cinza e saber o número de bits de codificação da imagem.
  • Se dividirmos cada valor das componentes R, G e B da tabela acima, obteremos uma tabela normalizada com valores de intensidade entre 0 e 1. Isto explica porque se utilizam tambem valores de intensidade entre 0 e 1 para especificar uma determinada tabela de cores.

Tabelas com indexação de cores (ou pseudo-cores)

  • Da mesma forma que a tabela em níveis de cinza, a tabela com indexação de cores é composta por índices das cores (ou número das cores) e a intensidade de R, G e B que compõe cada cor. A única diferença está em não se restringir que as intensidades das componentes sejam sempre a mesma para cada cor. Assim, pode-se dizer que a tabela de níveis de cinza é uma caso particular de uma tabela com indexação de cores.
  • Diferentemente da imagem digital representada com cores em níveis de cinza, a imagem digital com cores indexadas (ou pseudo-cores) necessita que  a sua tabela de cores esteja gravada explicitamente em algum  arquivo digital (geralmente são gravadas no cabeçalho do mesmo arquivo da imagem digital)
  • Segue um exemplo de tabela indexada para uma imagem colorida de 8 bits

 Índice
 Red
 Green
 Blue
 Cor 
0
0
0
120
Azul claro
1
0
0
255
Azul escuro
2
0
80
0
Verde Claro
3
127
127
127
Cinza Médio
4
0
255
0
Verde Puro
5
255
255
0
Amarelo
6
120
0
0
Vermelho Médio
7
255
0
0
Vermelho Puro
8
255
255
255
Branco
.
.
.
.
...
.
.
.
.
...
255
255
0
255
Magenta


  • A figura abaixo representa uma mesma imagem com tabela em níveis de cinza e tabela com indexação de cores.




Tabelas para codificação True Color

  • Na apresentação da imagem em cores verdadeiras, ou mais popularmente chamada de True Color, cada pixel da imagem tem associado a si um valor de R, G e B que depende do número de bits usado na codificacao das cores da imagem. Neste caso, quando usamos 8 bits de codificação, cada componente (R, G e B) está associada a um valor entre 0 e 255, e esse valor é armazenado junto com cada pixel da imagem. Neste caso tem-se uma possibilidade maior de cores mas gasta-se mais memória para armazenar a imagem.



Up

Composição colorida de imagens multiespectrais







Figura: Bandas 3, 4, 5 e composição colorida, para componentes R, G e B respectivamente, de uma imagem digital da região de São Paulo



 
Up

Exercícios

Laboratório - Transformacao de uma imagem colorida, codificada com 24 bits, para uma imagem em níveis de cinza, 8bits.
  1. Faça um programa em Java, ou em C, para ler uma imagem colorida do tipo RAW, transforma-la em uma imagem em níveis de cinza e gravar o resultado numa imagem de saída. Dicas: a) Visualize uma imagem colorida,  no formato jpg   (tiff, gif ou outro formato), no IrfanView, exporte-a em formato raw e rode o seu programa sobre essa imagem.
  2. Visualize as imagens de entrada e saída no IrfanView e compare-as. O que você observou? A imagem de saída está melhor ou pior do que a de entrada? O que voce observou quanto ao tamanho dos arquivos das imagens raw obtidas?
  3. Para o mesmo programa, gere uma imagem negativa da imagem em nível de cinza de entrada. Visualize o resultado no IrfanView.
  4. Faça um relatório sobre o laboratório e envie para o professor. 
       Observação: O relatório deve ser digital e deve ser enviado para o e-mail do professor ( carlos@dpi.inpe.br ) contendo:
Identificação do aluno ( nome, nro de matrícula, outros...) e data.
Nome do experimento do laboratório.
Uma introdução explicitando o objetivo do trabalho do laboratório.
Uma descrição da  metodologia utilizada para resolver o problema.
Uma descrição dos resultados obtidos com análises pertinentes.
Uma seção de conclusão com opiniões próprias de cada aluno e sugestões gerais relacionadas com o experimento.

  
Outros exercícios
  1. Explique como é formada uma tabela de níveis de cinza para uma imagem codificada com 10 bits. Quantos níveis de cinza podem ser criados para essa imagem?

  2. Utilizando o critério de tamanho de memória (ou de disco) ocupada explique a diferença entre as imagens codificadas como True Color, em níveis de cinza e por cores indexadas.
  3. Quais as diferenças entre os sistemas de cores RGB e CYM? Qual deles é mais utilizado? Por que?

  4. Para transformar uma imagem colorida True Color, 24 bits, para uma imagem em níveis de cinza 8 bits, pode-se utilizar a média dos valores de resposta radiométrica das 3 componentes R, G e B ( nc = (r+g+b)/3 ) presentes em cada pixel da imagem. Voce concorda com esta afirmativa? Porque?

  5. Pesquise sobre outras formas de transformar imagens codificadas como True Color para imagens em Níveis de Cinza. Qual sua opinião sobre utilizar  uma média  simples entre  os valores mínimo e máximo das componentes  R, G e B ( nc=(Max(r,g,b)+Min(r,g,b))/2 ) ? Esta é melhor ou pior que a  opção da questão anterior?  Por que?

  6. Monte uma tabela indexada de cores utilizando apenas os valores mínimo (0) e máximo (255) em cada uma das componenter R, G e B da tabela. Quantos elementos tem essa tabela? Quais as cores estarão presentes na mesma?

  7. Suponha que voce tenha uma imagem em níveis de cinza, codificada com 8 bits, e queira transforma-la em uma imagem colorida de 8 bits. Como voce resolveria esse problema? Qual critério voce usaria para escolher as cores presentes em sua imagem colorida de forma que ela tivesse uma aparência mais real possível.?

  8. Explique como é o procedimento de se compor as bandas de uma imagem multiespectral para se gerar uma imagem colorida. Qual a vantagem de se aplicar esse procedimento às imagens multiespectrais?

Up