es posible que desee llevarlo más lejos: renderice una imagen como lo captaría el ojo humano o incluso como lo percibiría el ser humano.
Hay dos formas de interpretar esto. Yo haré las dos cosas.
Interpretación 1: renderice una imagen que parezca perceptualmente realista.
Al final del día, su imagen aún debe mostrarse en algún lugar. Aquí está la clave: desea renderizar su imagen de tal manera que cuando * muestre * esa imagen en un dispositivo de visualización en particular, produzca la misma sensación que la imagen radiométrica original habría producido.
Aquí le mostramos cómo desempaquetar esa idea.
En el mundo real, los espectros radiométricos (es decir, distribuciones reales de luz) ingresan al ojo y estimulan aproximadamente 1 cuatro receptores de luz. Las estimulaciones de los receptores producen las sensaciones de color que asociamos con las imágenes.
Al renderizar, no tenemos control arbitrario sobre los espectros que producimos. Afortunadamente, dado que (generalmente) tenemos solo tres conos, cada uno de los cuales produce solo un valor escalar, la visión del color puede reproducirse utilizando exactamente tres primarios. La conclusión es que puede producir cualquier sensación de color mediante el uso de una combinación lineal de tres longitudes de onda solamente (hasta unos pocos colores que podrían tener que ser negativos, en cuyo caso, solo usa primarios diferentes).
No tienes elección de primarias. Casi todos los dispositivos de visualización en color utilizan el estándar sRGB, que proporciona tres primarios (que en realidad no suelen tener una sola longitud de onda). Eso está bien porque resulta que todo es abstracto y no tienes que preocuparte.
Para aclarar el desorden que es la representación perceptivamente precisa, aquí está el algoritmo:
- Renderice su imagen usando los cálculos radiométricos correctos. Trazas longitudes de onda individuales de luz o cubos de longitudes de onda. Lo que sea. Al final, tiene una imagen que tiene una representación del espectro recibido en cada punto.
- En cada píxel, toma el espectro que renderizó y lo convierte al espacio de color CIE XYZ . Esto funciona para integrar el producto del espectro con las funciones estándar del observador (ver definición CIE XYZ) .
- Esto produce tres valores escalares, que son los colores CIE XYZ.
- Use una transformación matricial para convertir esto a RGB lineal, y luego use una transformación lineal / de potencia para convertir RGB lineal a sRGB .
- Convierta de punto flotante a uint8 y guarde los valores de sujeción fuera de rango (su monitor no puede representarlos).
- Envíe los uint8 píxeles al framebuffer.
- La pantalla toma los colores sRGB, hace la transformación inversa para producir tres primarios de intensidades particulares. Cada uno escala la salida del elemento de imagen del que es responsable. Los elementos de la imagen se iluminan, produciendo un espectro. Este espectro será (con suerte) un metamer para el espectro original que renderizó.
- Percibes el espectro como habrías percibido el espectro renderizado.
Interpretación 2: Intente simular los datos finales que el ojo humano podría recibir para fines de visualización o compensación para pantallas LDR.
Este tiene un significado menos útil, creo. Esencialmente, estás tratando de producir una imagen que modifique la forma en que el cerebro la percibe por diversión / beneficio.
Por ejemplo, hubo un artículo en SIGGRAPH este año donde simularon imágenes posteriores y reducción de color para hacer que las imágenes parecieran perceptivamente diferentes. Por supuesto, la única razón por la que hacen esto es porque las pantallas con las que estamos trabajando son todas de rango dinámico bajo (LDR). El punto es simular los efectos que alguien podría ver si se exponen a un rango real de alto rango dinámico (HDR) como datos de imagen reales.
En la práctica, esto no funciona muy bien. Para las imágenes posteriores, por ejemplo, vemos imágenes posteriores debido a un estímulo muy brillante que agota las células de color. Si, en cambio, trata de estimular el efecto con una imagen falsa, puede parecer algo similar, pero como es un mecanismo completamente diferente, no es muy convincente.
Este tipo de gráficos en realidad está poco explorado en la literatura si quieres intentarlo. El documento mencionado es un ejemplo de los enfoques más o menos más avanzados que tenemos. Sin embargo, creo que el consenso actual es que realmente no vale la pena intentar simular (al menos en este momento), ya que en el mejor de los casos solo estaría aproximando los efectos de la visión real al sustituir los diferentes, y que esto realmente no trabajo.
1 Rod + 3 * conos, el caso habitual. Aproximadamente porque los humanos pueden tener tan solo cero receptores de luz funcionales hasta un máximo conjeturado de siete (siendo el más alto observado cinco).