Fundamentos de Computação Gráfica
Prof. Marcelo Gattass
Guilherme Schirmer de Souza
•O objetivo dessa apresentação é fazer uma breve
descrição teórica do segundo trabalho
da
disciplina de Fundamentos de Computação Gráfica
além de mostrar os resultados obtidos.
•O trabalho consistia em transformar uma imagem
em uma determinada temperatura de cor para
outra. Além disso, também era proposto no
trabalho a correção do RGB da imagem de acordo
com o color checker existente na mesma.
•Os materiais emitem radiação quando aquecidos a
uma determinada temperatura. A distribuição
espectral dessa radiação depende da temperatura e
da natureza do corpo emissor. Um corpo negro é
um emissor de energia radiante, cuja distribuição
espectral dessa energia depende apenas da
temperatura.
•A temperatura de cor de uma luz visível é
determinada
pela
comparação
de
sua
cromaticidade com um corpo negro emissor de
energia radiante ideal.
•A tabela abaixo mostra a correspondência de
alguns tipos de luz visível com a temperatura de
emissão de radiação de alguns corpos negros.
Temperature
Source
1700 K
Match flame
1850 K
Candle flame
2800–3300 K
Incandescent light bulb
3350 K
Studio "CP" light
3400 K
Studio lamps, photofloods,
etc.
4100 K
Moonlight, xenon arc lamp
5000 K
Horizon daylight
5500–6000 K
Typical daylight, electronic
flash
6500 K
Daylight, overcast
9300 K
CRT screen
Note: These temperatures are merely approximations;
considerable variation may be present.
•Para poder transformar uma temperatura de cor
em outra, primeiramente é necessário obter a
cromaticidade do branco da temperatura de cor
inicial. Esses valores são obtidos através das
seguintes equações:
zc 1  xc  yc
•Após isso, esses valores devem ser convertidos
para a base XYZ:
xc
X
yc
Y 1
zc
Z
yc
•Dessa forma são obtidas as cores das temperaturas
de cor de início e de destino na base XYZ.
•O processo de conversão de todos os pontos das
imagem de uma temperatura de cor para outra é o
seguinte:
Ponto RGB
RGB->XYZ
BradFord
XYZ->RGB
Novo Ponto
RGB
•O processo de conversão de um ponto no RGB
para XYZ se dá pelo seguinte processo:
var_R = ( R / 255 )
var_G = ( G / 255 )
var_B = ( B / 255 )
//R = From 0 to 255
//G = From 0 to 255
//B = From 0 to 255
if ( var_R > 0.04045 ) var_R = ( ( var_R + 0.055 ) / 1.055 ) ^ 2.4
else
var_R = var_R / 12.92
if ( var_G > 0.04045 ) var_G = ( ( var_G + 0.055 ) / 1.055 ) ^ 2.4
else
var_G = var_G / 12.92
if ( var_B > 0.04045 ) var_B = ( ( var_B + 0.055 ) / 1.055 ) ^ 2.4
else
var_B = var_B / 12.92
var_R = var_R * 100
var_G = var_G * 100
var_B = var_B * 100
//Observer. = 2°, Illuminant = D65
X = var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805
Y = var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722
Z = var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505
•O método de Bradford é um método de adaptação
cromática que consiste em uma transformação
linear de uma cor de origem na base XYZ para uma
cor de destino na mesma base. Essa transformação
leva em conta o branco padrão de cada temperatura
(origem e destino) para fazer essa conversão.
Assim, temos:
onde (Xs, Ys, Zs) é a cor de origem e (Xd,Yd,Zd) é a
cor de destino, (Xws, Yws, Zws) é a cor da
temperatura de cor da origem e (Xwd, Ywd, Zwd) é
a cor da temperatura de cor de destino. [Ma] e
[Ma]-1 são as matrizes constantes de Bradford para
a conversão:
 0.8951  0.7502 0.0389 
[ M A ]   0.2664 1.7135  0.0685
 0.1614 0.0367 1.0296 
 0.986993 0.432305  0.008529
[ M A ]1   0.147054 0.518360 0.040043
 0.159963 0.049291 0.968487 
•O processo de conversão de um ponto XYZ para o
RGB se dá da seguinte forma:
ref_X = 95.047
ref_Y = 100.000
ref_Z = 108.883
//Observer = 2°, Illuminant = D65
var_X = X / 100
var_Y = Y / 100
var_Z = Z / 100
//X = From 0 to ref_X
//Y = From 0 to ref_Y
//Z = From 0 to ref_Y
var_R = var_X * 3.2406 + var_Y * -1.5372 + var_Z * -0.4986
var_G = var_X * -0.9689 + var_Y * 1.8758 + var_Z * 0.0415
var_B = var_X * 0.0557 + var_Y * -0.2040 + var_Z * 1.0570
if ( var_R > 0.0031308 ) var_R = 1.055 * ( var_R ^ ( 1 / 2.4 ) ) - 0.055
else
var_R = 12.92 * var_R
if ( var_G > 0.0031308 ) var_G = 1.055 * ( var_G ^ ( 1 / 2.4 ) ) - 0.055
else
var_G = 12.92 * var_G
if ( var_B > 0.0031308 ) var_B = 1.055 * ( var_B ^ ( 1 / 2.4 ) ) - 0.055
else
var_B = 12.92 * var_B
R = var_R * 255
G = var_G * 255
B = var_B * 255
•Ajuste de Cor (ou balanço de cor) é o ajuste das
relativas quantidades de vermelho, verde e azul em
uma imagem, de forma que as cores neutras sejam
reproduzidas corretamente. Para ajustar as cores de
uma determinada imagem basta utilizar o seguinte
método:
onde RGB é cor balanceada e R’G’B’ é a cor a ser
ajustada. A cor (R’w, G’w, B’w) é cor da imagem
escolhida como branco, e serve como base para o
balanceamento das outras. Esse branco geralmente
é obtido de um determinado color-checker.
•Color checker é um quadro com 24 cores que
representam objetos naturais de grande interesse
como pele humana e o céu azul por exemplo. Esse
quadro serve como um padrão objetivo para
determinar o balanço de cor de qualquer sistema de
cor, ajudando a determinar as diferenças de
reprodução de cor (vide Figura 1).
Figura 1
•Conversão de uma imagem da temperatura de cor
de 2940K para 5450K.
•Ajuste de cor da imagem com temperatura de cor
2940K.
•Notas de aula.
•http://www.brucelindbloom.com/index.html?Eqn
_ChromAdapt.html
•http://www.hi-def.com/colorTemp.html
•http://en.wikipedia.org/wiki/Color_temperature
•http://en.wikipedia.org/wiki/Planckian_locus
•http://en.wikipedia.org/wiki/White_balance
•http://www.babelcolor.com/main_level/ColorChe
cker.htm#ColorChecker_data
•http://usa.gretagmacbethstore.com/index.cfm/ac
t/Catalog.cfm/catalogid/1742/category/ColorCheck
er%20Charts/browse/null/MenuGroup/__Menu%
20USA%20New/desc/ColorChecker.htm
•Gomes, Jonas; Velho, Luiz. Computação
Gráfica:Imagem. 2ª Edição. Rio de Janeiro, IMPA,
2002.
Download

Apresentação - PUC-Rio