você pode ir além: renderize uma imagem como o olho humano a capturaria ou mesmo como o ser humano a perceberia.
Existem duas maneiras de interpretar isso. Eu vou fazer as duas coisas.
Interpretação 1: Renderize uma imagem que pareça perceptivamente realista.
No final do dia, sua imagem ainda precisa ser exibida em algum lugar. Aqui está a chave: você deseja renderizar sua imagem de modo que, quando você * exibir * essa imagem em um dispositivo de exibição específico, produzirá a mesma sensação que a imagem radiométrica original teria produzido.
Veja como descompactar essa ideia.
No mundo real, espectros radiométricos (ou seja, distribuições reais de luz) entram no seu olho e estimulam aproximadamente 1 quatro receptores de luz. Os estímulos dos receptores produzem as sensações de cor que associamos às imagens.
Na renderização, não temos controle arbitrário sobre os espectros que produzimos. Felizmente, como nós (normalmente) temos apenas três cones, cada um dos quais produz apenas um valor escalar, a visão de cores pode ser reproduzida usando exatamente três primárias. A conclusão é que você pode produzir qualquer sensação de cor usando apenas uma combinação linear de três comprimentos de onda (até algumas cores que talvez precisem ser negativas; nesse caso, basta usar diferentes cores primárias).
Você não tem uma escolha de primárias. Quase todos os dispositivos de exibição em cores usam o padrão sRGB, que fornece três primárias (que na verdade geralmente não têm um único comprimento de onda). Tudo bem, porque tudo é abstraído e você não precisa se preocupar.
Para esclarecer a bagunça que é a renderização perceptualmente precisa, eis o algoritmo:
- Renderize sua imagem usando cálculos radiométricos corretos. Você rastreia comprimentos de onda individuais de luz ou baldes de comprimentos de onda. Tanto faz. No final, você tem uma imagem que tem uma representação do espectro recebido em todos os pontos.
- Em cada pixel, você pega o espectro renderizado e o converte no espaço de cores CIE XYZ . Isso funciona para integrar o produto do espectro às funções padrão de observador (consulte a definição CIE XYZ) .
- Isso produz três valores escalares, que são as cores CIE XYZ.
- Use uma transformação de matriz para converter isso em RGB linear e, a partir daí, use uma transformação linear / de potência para converter RGB linear em sRGB .
- Converta do ponto flutuante para o uint8 e salve, fixando valores fora do intervalo (o monitor não pode representá-los).
- Envie os pixels uint8 para o buffer de moldura.
- A tela pega as cores sRGB, faz a inversão para produzir três primárias de intensidades particulares. Cada um dimensiona a saída de qualquer elemento de imagem pelo qual ele é responsável. Os elementos da imagem acendem, produzindo um espectro. Esse espectro será (espero) um metâmero para o espectro original que você renderizou.
- Você percebe o espectro como teria percebido o espectro renderizado.
Interpretação 2: Tentativa de simular os dados finais que o olho humano pode receber para fins de visualização ou compensação para exibições de LDR.
Este tem um significado menos útil, eu acho. Essencialmente, você está tentando produzir uma imagem que ajusta a maneira como o cérebro a percebe por diversão / lucro.
Por exemplo, houve um artigo na SIGGRAPH este ano em que eles simularam imagens posteriores e redução de cores para fazer com que as imagens pareçam perceptualmente diferentes. Obviamente, a única razão pela qual eles fazem isso é porque os monitores com os quais trabalhamos são todos de baixo alcance dinâmico (LDR). O objetivo é simular os efeitos que alguém pode ver se exposto a uma exibição real de alta faixa dinâmica (HDR) como dados de imagem reais.
Na prática, isso acaba não funcionando muito bem. Para imagens posteriores, por exemplo, vemos imagens posteriores devido a um estímulo muito brilhante que esgota as células coloridas. Se você tentar estimular o efeito com uma pós-imagem falsa, pode parecer um pouco semelhante - mas como é um mecanismo completamente diferente, não é muito convincente.
Esse tipo de gráfico é realmente pouco explorado na literatura, se você quiser tentar. O artigo mencionado é um exemplo das abordagens mais ou menos avançadas que temos. Eu acho que o consenso atual, no entanto, é que não vale a pena tentar simular (pelo menos nesse momento), já que na melhor das hipóteses você apenas aproximaria os efeitos reais da visão substituindo os diferentes, e que isso realmente não trabalhos.
1 Rod + 3 * cones, o caso usual. Aproximado, porque os seres humanos podem ter até zero receptores de luz funcionais até um máximo de sete conjeturados (sendo o mais alto já observado cinco).