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.