Sistemas de Cores

Transcrição

Sistemas de Cores
Sistemas
Sistemas de
de Cores
Cores
Leandro Tonietto
Processamento Gráfico
Jogos Digitais
[email protected]
http://www.inf.unisinos.br/~ltonietto
set-09
Sum
ário
Sumário
Introdução
Cores
RGB
HSV
Referências
4-set-09
Leandro Tonietto
2
Introdu
ção
Introdução
Devemos compreender o que é e como funciona a
captação das cores pelo olho humano; nos ajuda
a entender como utilizar e programar com cores.
Depois, faremos uma revisão sobre os sistemas de
cores (color models) mais utilizados: RGB, HSV,
CMYK, ...
É necessário também estudar um pouco sobre a
representação de cores (estrutura e dados) nas
linguagens de programação.
Por fim, revisaremos alguns exemplos de
manipulação de imagens nas linguagens Java,
Python e C++ / OpenGL.
4-set-09
Leandro Tonietto
3
Cores
Cores
O que é uma cor?
Cor é luz! A forma como o olho humano captura as informações
de cores é através da captação de luz.
Como, então, as cores de diferenciam?
A luz é uma mistura de tipos de luz, cada tipo de luz representa
uma cor.
Os tipos de luz são identificados pelo seu comprimento de onde
(wavelength).
Distância entre picos da onda luz
E as cores preta e branca?
A cor preta é definida como ausência de luz, portanto, ausência
de cor. Objetos da cor preta absorvem todos os comprimentos de
onda completamente.
A cor branca é a combinação de todas as cores, presença de
todos os tipos de luz. Objetos brancos refletem todas os
comprimentos de onda de cor completamente.
4-set-09
Leandro Tonietto
4
Cores
Cores
Wavelength
Define uma cor.
Visible Spectrum (Espectro visível de cores):
Imagem retirada de [1]
4-set-09
Leandro Tonietto
5
Cores
Cores
Cores como partículas
Os objetos são iluminados por muitas (muitas mesmo) partículas
de luz, ou photons.
Cada um destes photons é uma onda.
Todo objeto físico reflete ou absorve photons e, desta maneira,
sua cor é definida.
Objetos mais claros
refletem mais luz
(absorvem menos),
objetos mais escuros
refletem menos luz
(ou absorvem mais).
Imagem retirada de [1]
4-set-09
Leandro Tonietto
6
Cores
Cores
Captação de cores pelo olho humano:
O olho captura as luzes refletidas e as interpreta
como cores.
Bilhões de photons são capturados pelo olho e são
organizados pela retina como uma fotografia,
através da excitação de milhões de células cone...
depois tudo vai pro cérebro e ...
O olho possui três tipos de células cone, capturam
três tipos de photons:
Vermelhas, verdes e azuis (RGB)
Então como são captadas as demais cores?
Pela combinação da intensidade de cada uma destas
componentes de cor.
4-set-09
Leandro Tonietto
7
Cores
Cores
Geração de cores no computador/monitor:
O computador necessita de um hardware que
emita photoeletrons RGB para reprodução de
imagens coloridas
CRT (Cathode Ray Tube):
Dispositivo emite eletrons
Tela possui fósforos (RGB) por ponto visível.
A combinação das intensidades de luz destes 3
componentes reproduz uma cor (wavelength) no monitor.
LCD (Liquid Cristal Display) funciona de maneira
similar. Porém, sem dispositivo de emissão de
eletrons. Em cada ponto visível são “ligadas”
cada uma das componentes de luz, que são
combinadas para reproduzir uma cor.
4-set-09
Leandro Tonietto
8
Conceitos
Conceitos
Resolução
Termo utilizado para representar as dimensões
qualquer matriz de pontos (tela ou imagem, por
exemplo)
Pode ser expressa tanto em número de pontos de
largura e altura, quanto de quantidade total de
pixels.
Exemplo:
640 x 480, 800 x 600, 1280 x 1024, 256 x 256, ...
Ou: 1 Mega pixels, 3 Mega pixels, ... Neste caso, o
produto da largura pela altura.
4-set-09
Leandro Tonietto
9
Conceitos
Conceitos
Profundidade de cores:
Número máximo de cores que ser representadas. Expressa
em bits:
24 bits (RGB):
1 byte (8 bits) para cada componente R, G e B
Total de 224 cores = 16 Mega-cores = 16.777.216 de cores.
True-color: todas as cores que o olho humano consegue perceber.
32 bits (RGBA ou ARGB):
Idem ao anterior, porém possui um componente a mais, o canal Alpha
destinado a representação de opacidade/transparência da cor.
Pode ser utilizado também para representar mais valores por canal
(RGB).
Máscaras: 10-10-10 (sobram 2) ou 8-8-8-8 (usando alpha)
16 bits:
Número reduzido de cores, menor necessidade de armazenamento.
Total de 216 = 64 Kilo-cores = 65.536 cores diferentes
Máscaras: 5-5-5 (sobra 1) ou 5-6-5 (verde a mais por causa do
brilho)
4-set-09
Leandro Tonietto
10
Conceitos
Conceitos
Profundidade de cores:
Número máximo de cores que ser representadas.
Expressa em bits:
8 bits (gray-scale ou indexed-color)
Um byte para representar as cores: 28 = 256 cores possíveis
(índices da paleta)
Utilizado também para representação em tons-de-cinza.
4 bits (indexed-color, 2 pixels por byte)
Um byte representa dois pixels 24 = 16 cores possíveis, ou
melhor, 16 índices possíveis na paleta.
1 bit (b&w – preto e branco, imagem binária)
Preto e branco, duas possibilidades de cores, para bitmap
Um byte pode representar 8 pixels
4-set-09
Leandro Tonietto
11
Sistemas
Sistemas de
de Cor
Cor
Um modelo ou sistema de cores é uma
especificação de um sistema de
coordenadas ou subconjunto de cores
visíveis.
Determina o formato, fórmula ou forma
de composição de componentes de
sistemas (coordenadas) em cores.
Exemplos: RGB, HSV, CMYK, HLS, YIQ, ...
4-set-09
Leandro Tonietto
12
Sistemas
Sistemas de
de Cor
Cor -- RGB
RGB
O sistema RGB é de longe o mais utilizado na computação, porque é
baseado no sistema de captação de cor do olho humano e porque é
o sistema utilizado em monitores.
Além disso, é um sistema muito simples para representação de
cores.
Representação no modelo é inferior ao número de cores possíveis
no espectro de cores. Para maiores informações leia Foley pág. 585
[2].
Sistema é representado como sistema de referência tridimensional
convencional (sistema cartesiano 3D). Porém, ao invés de x, y e z,
o sistema tem as componentes R, G e B (R-red ou vermelho, Ggreen ou verde e B-blue ou azul).
Todas as cores podem ser representadas numa combinação das três
componentes. Exemplo:
Esta cor é a combinação RGB (153, 205, 255)
4-set-09
Leandro Tonietto
13
Sistemas
Sistemas de
de Cor
Cor -- RGB
RGB
Visualmente, podemos representar o modelo como um cubo, aonde
os valores mínimos são 0 e os máximos são 1 ponto-flutuante (ou
255 inteiros).
As cores dos cantos do cubo são
consideras cores puras. É aonde estão
as primárias (R, G e B), as secundárias
(Yellow, Cyan e Magenta) e o preto (B)
e branco (W).
Ainda, do canto preto ao canto branco
residem todas os tons de cinzas,
também chamada de diagonal de
cinzas, com 256 valores possíveis.
Quando representado no domínio [0, 1]
dos números reais; os valores são uma
fração de 255 (n/255). Quando expresso
em bytes estão no domínio [0, 255] dos
números inteiros.
4-set-09
Leandro Tonietto
Imagem retirada de [1]
14
Sistemas
Sistemas de
de Cor
Cor -- RGB
RGB
Exemplos:
(0, 128, 0)
(99, 125, 149)
(86, 20, 80)
(153, 102, 51)
(255, 153, 51)
Imagem retirada de [4]
Imagem retirada de [3]
4-set-09
Leandro Tonietto
15
Sistemas
Sistemas de
de Cor
Cor -- RGB
RGB
Considerações sobre o sistema RGB:
Apesar do modelo RGB estar baseado na forma de captação de cores
pelo olho humano e ser o modelo utilizado pelo monitores de
computador, ele tem um grande inconveniente:
Na sua representação espacial (cubo RGB) não é possível determinar,
visualmente, com exatidão, quais são os valores das componentes que
determinam uma cor de interesse.
Outro ponto negativo, é que o sistema RGB não é adequado para
cálculo de similaridade de cores. Isto Cor-chave e um
porque, se escolhermos uma cor e
raio que delimita
uma região de
tentar isolar as suas similares
proximidade. Não é
numa região (esfera), não temos
possível garantir
como garantir, num mesmo raio em que, em todas as
qualquer direção, que as cores
direções, as cores
nos limites da
vizinhas são similares; elas podem
esfera sejam
ser, visualmente, diferentes.
similares a corchave.
Imagem retirada de [3]
4-set-09
Leandro Tonietto
16
Sistemas
Sistemas de
de Cor
Cor -- RGB
RGB
Exemplo do problema de distância entre
cores:
154, 204, 255
174, 184, 235
134, 224, 235
134, 184, 235
Este problema ocorre principalmente em algoritmos de detecção de região de cores numa
imagem ou para eliminação de cores visualmente semelhantes (por exemplo, chroma-key).
4-set-09
Leandro Tonietto
17
Sistemas
Sistemas de
de Cor
Cor -- RGB
RGB
Cálculo de distância entre cores no sistema RGB:
Mesmo cálculo de distância no espaço 3D: distância
euclidiana:
d=
2
2
2
(cR − oR ) + (cG − oG ) + (cB − oB )
Onde:
c é a cor-chave ou cor central que representa uma região
esférica de cores no cubo RGB.
o é uma cor qualquer que está sendo testada.
R, G e B são os componentes de cor das cores em questão
d será a “distância” entre as duas cores. Quando maior
o d, menos semelhantes são as cores.
4-set-09
Leandro Tonietto
18
Sistemas
Sistemas de
de Cor
Cor -- RGB
RGB
Cálculo de distância entre cores no sistema
RGB:
Entretanto, esta medida de distância não é
trivial para dizer uma cor é diferente de outra.
Não temos uma noção precisa de qual valor de d
deve ser utilizado, pois:
Depende do objetivo em questão, do que se
pretende “selecionar” de cores no cubo
Depende da nível de precisão que se pretende
Depende da cor de interesse, considerando que,
visualmente, a área de semelhança/interesse no
cubo pode ser diferente para cada cor.
4-set-09
Leandro Tonietto
19
Sistemas
Sistemas de
de Cor
Cor -- RGB
RGB
Cálculo de distância entre cores no sistema
RGB:
Uma boa idéia para dar uma noção de medida é
qualquer uma distância relativa (em %).
Isto pode ajudar também na necessidade de
interação com o usuário, uma vez que pode ter
noção um pouco melhor do quão
otimista/pessimista ele está sendo.
Normalmente, esta distância relativa é chamada
de critério de tolerância; percentualmente, o
quão distantes as cores podem ser.
4-set-09
Leandro Tonietto
20
Sistemas
Sistemas de
de Cor
Cor -- RGB
RGB
Cálculo de distância entre cores no sistema RGB:
Para resolver é simples, basta dividir a distância calculada
pela distância máxima (que, obviamente, é a distância entre
as cores preta e branca no cubo RGB, ou a distância de
qualquer diagonal do cubo).
2
2
2
d max = (0 − 255) + (0 − 255) + (0 − 255)
d max = 195075
d max ≈ 441,673
d
∆d =
d max
4-set-09
No código-fonte...:
dd = d / dmax;
if(dd <= tolerancia){
// faz alguma coisa
}
Leandro Tonietto
21
Sistemas
Sistemas de
de Cor
Cor –– HSV
HSV
Sistema que determina um cor através da combinação de
3 componentes. Tem a forma de uma hexa-cone.
Hue Saturation Value
H - Matiz – cor pura [0..360º)
S - Saturação – intensidade de cor pura [0..1]
V - Luminosidade – escuro ou claro [0..1]
Imagem retirada de [3]
4-set-09
Leandro Tonietto
22
Sistemas
Sistemas de
de Cor
Cor –– HSV
HSV
Uma cor é determinada por um ângulo, uma
intensidade e uma luminosidade.
Qualquer ângulo com luminosidade zero, leva a cor
preta.
Qualquer ângulo com
G
Y
intensidade 0 e luminosidade
total (1), leva à cor branca.
Cores puras são obtidas pelo
C
ângulo, com total intensidade
e luminosidade.
Exemplos:
0º vermelho, 60º amarelo,
120º verde, 180º o ciano,
240º o azul e 300º o magenta
4-set-09
Leandro Tonietto
B
M
Imagem retirada de [3]
23
R
Sistemas
Sistemas de
de Cor
Cor –– HSV
HSV
Considerações sobre o HSV:
O sistema de cores que é visualmente mais
“confiável” que o RGB.
Permite, com mais facilidade que o RGB,
determinar uma região de cores similares, pois
basta determinar um ângulo central e um
mínimo e máximo.
É necessária conversão para RGB para ser
utilizado no computador.
Na conversão, o preto pode ser uma
combinação de diversas possibilidades de H
e S.
4-set-09
Leandro Tonietto
24
Referências
áficas
Referências bibliogr
bibliográficas
1. WRIGHT Jr., Richard S.; LIPCHAK, Benjamin; HAEMEL,
Nicholas. OpenGL Superbible: Comprehensive Tutorial
and Reference. 4ed.: Addison-Wesley. 2007.
2. FOLEY, J.D. et al. Computer graphics: principles and
practice. Reading: Addison-Wesley, 1990.
3. TONIETTO, Leandro; WALTER, Marcelo. Análise de
Algoritmos para Chroma-key. Unisinos, 2000.
4. BITTENCOURT, João. Apresentação de introdução ao
processamento gráfico. Disponível para download no site
da disciplina.
5. Microsoft Windows Bitmap File Format Summary.
FileFormat.Info.
http://www.fileformat.info/format/bmp/egff.htm.
4-set-09
Leandro Tonietto
25

Documentos relacionados