Manipulação de imagens

1.Tipos de imagens

1.1 Imagens True-Color

Tem-se geralmente 24 bits/pixel

8 bits para cada componente RGB

2^24 cores possíveis para cada ponto : 16.777.216 cores

 

rgb rgb rgb rgb rgb rgb
rgb rgb rgb rgb rgb rgb
rgb rgb rgb rgb rgb rgb
rgb rgb rgb rgb rgb rgb
rgb rgb rgb rgb rgb rgb

1.2 Imagens com Palette

A imagem é separada em duas partes

Palette

rgb rgb rgb rgb rgb rgb rgb rgb
rgb rgb rgb rgb rgb rgb rgb rgb

Imagem

14 06 04 03 06 12
14 12 10 08 07 06
06 00 09 06 07 11
11 10 05 03 06 03

O número de cores diferentes por imagem é limitado pelo tamanho do Palette

2. Redução do número de cores

    Como exibir uma imagem True-Color em um dispositivo com Palette ?
    Como exibir uma imagem com palette de 256 cores em um dispositivo de 16 cores ?

Genericamente: Como exibir uma imagem com um M cores diferentes
(M trincas RGB distintas) e um dispositivo capaz de exibir N cores
diferentes sendo N < M ?

Algoritmo

1. Tomar a imagem de entrada e determinar quais as N cores que mais vezes aparecem

2. Criar um palette com estas cores

3. Para cada ponto da imagem de entrada

3.1  Determinar qual das entradas do palette construído mais se parece
    com a cor (RGB) do ponto
3.2  Exibir o ponto com a cor obtida

2.1 Cores Parecidas

        Para determinar qual dentre duas cores(RGB) é a que mais se parece com uma terceira basta calcular a distância entre as cores no espaço RGB.

 

        Quanto menor a distância mais pareciadas são Cor 1 e Cor 2

3. Exibição de imagens em tons de cinza

3.1 Tom de cinza

        Uma cor é um tom de cinza sempre que suas componentes R, G e B são iguais
        Preto  R:0   G:0   B:0
        Branco R:255 G:255 B:255
        Cinza  R:30  G:30  B:30
        Cinza  R:200 G:200 B:200

3.2 Grau de luminosidade
 
        O grau de luminosidade de uma cor significa quanto o olho humano pode perceber desta cor.
        Pode ser calculado por

                                           Luminosidade = R*0.3 + G*0.59 + B *0.11