T1 - Gamut de Cores

Este trabalho foi desenvolvido em conjunto com Fabrício Cardoso. Os resultados encontram-se disponíveis na página Arquivos T1 no 4shared.

O objetivo deste trabalho é gerar as seguintes representações volumétricas de conjuntos de cores nos espaços CIE XYZ, CIE Lab e sRGB:

  1. O conjunto de todas as cores visíveis (obtidas a partir das combinação de fontes espectrais puras).
  2. O conjunto de cores representáveis no espaço sRGB.
  3. O conjunto de cores de Munsell.
  4. O conjunto de cores representáveis num dispositivo dado.

1 - Conjunto de cores visíveis

    A partir de dados de cores no espectro visível, isto é, aquelas de comprimento de onda entre 380 e 780 nanômetros, podemos obter uma representação gráfica desse conjunto realizando uma transformação para os espaços CIE XYZ, CIE Lab e sRGB. Para as transformações, quando necessário, foi usado o branco de referência Iluminante D65 2 graus. A fonte de dados utilizada para este trabalho [1] contém apenas as informações de fontes espectrais puras, gerando como resultado uma curva nos espaços desejados.


    Esta seção divide-se em duas partes: a obtenção das curvas relativas a cada espaço de cores a partir desses dados, baseado nas fórmulas descritas no site de Bruce Lindbloom [2]; a geração do volume de cores visíveis nos espaços contemplados.

    Curvas do espectro de cores visíveis formadas por fontes puras

    Para a obtenção das curvas, os dados relativos às componentes das fontes espectrais puras (x barra, y barra e z barra) foram primeiro transformados para o espaço xyY, com Y = 100*y barra para determinar a geometria das curvas, embora por questões de visualização (quando precisamos converter para o espaço sRGB) foi considerado que Y = 100. As equações utilizadas foram:

    Transformação x barra y barra z barra para xyY:
    x = x barra / (x barra + y barra + z barra)
    y = y barra / (x barra +
y barra + z barra)
    Y = 100 * y barra     (Y = 100 para visualização da cor do ponto)

    Transformação xyY para XYZ:
    X = Y/y * x
    Y = Y
    Z = (1 - x - y)*(Y/y)

    Com os dados transformados para o espaço XYZ, foi traçada a curva das fontes espectrais puras neste espaço. O resultado obtido foi a figura abaixo, visualizado no programa viewCurve.
   

    XYZ: A representação é direta da curva obtida. A opção de não normalizar os pontos obtidos faz com que a curva não tenha a forma de ferradura que é observada no plano de corte X + Y + Z = 1 como visto em outros trabalhos. Nos resultados é apresentada a curva em sua forma normalizada.

    CIELab: Para obter esta curva, foi realizada a transformação do espaço XYZ para o espaço CIELab, como visto em [2].

    sRGB: A representação é obtida pela transformação do espaço XYZ para sRGB, a mesma transformação obtida para a representação das cores de cada ponto no monitor. Para essa representação, foram geradas duas curvas, uma a partir do espaço XYZ normalizado, que resultou em uma curva que descrevia o contorno aproximado do cubo RGB, e outra a partir do espaço não normalizado.

    Malhas do volume de cores visíveis:

    Para detalhar o volume de cores gerado no espaço XYZ, foi sugerido utilizar a técnica de mapeamento transfinito descrita por [3], de modo que a partir da curva obtida na primeira iteração, seriam determinadas segmentações que pudessem ser usadas como as curvas necessárias para gerar a superfície discretizada. Dessa forma, 4 superfícies seriam descritas, de modo a fechar o volume a ser visualizado.
   

    Encontramos em nosso trabalho uma diferença de escala entre nossos pontos e os pontos fornecidos pelo professor como comparação por um fator aproximado de 3.315513. Esse fator é devido à transformação que decidimos utilizar para nossos dados e o branco de referência.

    A cor de cada ponto pertencente à superfície é determinado a partir da transformação do espaço XYZ para o espaço sRGB. A transformação dos pontos de cada curva para o espaço correspondente segue das mesmas utilizadas na parte anterior. A figura ao lado representa a malha do volume de cores visíveis no espaço XYZ, com a cor gerada utilizando a função fixRGB.

    Os programas necessários para a visualização das curvas (viewCurve) e malhas (viewMesh) encontram-se na área de arquivos referente a esse trabalho, compilados para Windows.



2 - Conjunto de cores representáveis no espaço sRGB

    A visualização do volume de cores representáveis em sRGB é um processo semelhante ao anterior. Começamos com um cubo sRGB, seus vértices determinam os limites do espaço de cores em RGB, indo de 0 a 1. O primeiro passo é realizar a divisão das faces deste cubo em triângulos. O passo seguinte envolve discretizar essa malha de triângulos. O programa cube.c cuida dessa parte.

    O próximo passo é a transformação do espaço sRGB para o espaço XYZ, de forma que tenhamos como comparar o espaço de cores representáveis pelo sRGB com o conjunto de cores visíveis determinado no item anterior. Para isso, basta realizar a transformação das coordenadas sRGB para o espaço XYZ e então para o espaço Lab, usando a ferramenta de conversão de cores cc.c
           

3 - Conjunto de cores de Munsell

    Essa parte do trabalho não foi realizada.

4 - O conjunto de cores representáveis em um dispositivo dado

    Essa parte do trabalho não foi realizada.

Apresentação sobre o trabalho:



Referências:

[1] - all_1nm_data.xls disponível em Arquivos T1
[2] - Lindbloom, B. http://www.brucelindbloom.com/
[3] - Vieira, Thales M. et al. A Computational Procedure for Interpolation of Triangular Parametric Surfaces. In: Proceedings of the XXVI Iberian Latin-American Congress on Computational Methods in Engineering CILAMCE 2005, Brazil, 2005.

Comments