colors - tendrá - modo de color rgb
¿Por qué la escala de grises funciona de la manera que lo hace? (4)
Mi pregunta original
Leí que para convertir un píxel RGB en escala de grises RGB, uno debería usar
r_new = g_new = b_new = r_old * 0.3 + g_old * 0.59 + b_old * 0.11
También leí y entiendo que g
tiene una mayor ponderación porque el ojo humano es más sensible al verde. Al implementar eso, vi que los resultados eran los mismos que obtendría al configurar una imagen en ''escala de grises'' en un editor de imágenes como el Gimp.
Antes de leer esto, imaginé que para convertir un píxel a escala de grises, uno lo convertiría en HSL o HSV, luego establecería la saturación en cero (por lo tanto, eliminaría todo el color). Sin embargo, cuando hice esto, obtuve una salida de imagen bastante diferente, aunque también carecía de color.
¿Cómo difiere exactamente s = 0
de la forma "correcta" que leo, y por qué es "incorrecta"?
Hallazgos continuos basados en respuestas y otras investigaciones
Parece que los coeficientes de luminancia a utilizar son objeto de cierto debate. Varias combinaciones y algoritmos de escala de grises tienen resultados diferentes. Los siguientes son algunos ajustes preestablecidos utilizados en áreas como los estándares de TV:
- los coeficientes definidos por ITU-R BT.601 (NTSC?) son
0.299r + 0.587g + 0.114b
- los coeficientes definidos por ITU-R BT.709 (más reciente) son
0.2126r + 0.7152g + 0.0722b
- los coeficientes de tercios iguales,
(1/3)(rgb)
, es equivalente as = 0
Este artículo científico detalla varias técnicas de escala de grises y sus resultados para varias imágenes, además de una encuesta subjetiva de 119 personas.
Sin embargo, al convertir una imagen a escala de grises, para lograr el "mejor" efecto artístico, es casi seguro que no se usarán estos coeficientes predefinidos, sino que se ajustará la contribución de cada canal para producir el mejor resultado para la imagen en particular.
Aunque estos coeficientes de transformación existen, nada lo obliga a usarlos. Siempre que la intensidad total de cada píxel no cambie, las contribuciones de cada canal pueden ser cualquier cosa, desde 0 a 100%.
Los fotógrafos que convierten imágenes a escala de grises utilizan mezcladores de canales para ajustar los niveles de cada canal (RGB o CMYK). En su imagen, hay muchos rojos y verdes, por lo que podría ser conveniente (según su intención) tener esos canales más representados en la intensidad del nivel de gris que en el azul.
Esto es lo que distingue la transformación "científica" de la imagen de una combinación "artística" de las bandas.
Una consideración adicional es el rango dinámico de valores en cada banda, y el intento de preservarlos en la imagen en escala de grises. Aumentar las sombras y / o los reflejos puede requerir aumentar la contribución de la banda azul, por ejemplo.
Un interesante artículo sobre el tema aquí ... "porque los ojos humanos no detectan el brillo linealmente con el color".
Usar s = 0
en HSL / HSV y convertir a RGB da como resultado R = G = B
, por lo que es lo mismo que hacer r_old * 1/3 + g_old * 1/3 + b_old * 1/3
.
Para entender por qué, eche un vistazo a la página de Wikipedia que describe la conversión HSV-> RGB. La saturación s
será 0, por lo que C
y X
lo serán. Terminará con R_1,G_1,B_1
siendo (0,0,0)
y luego agregando m
a los valores RGB finales que resultan en (m,m,m)
= (V,V,V)
. Lo mismo para HSL, el resultado será (m,m,m)
= ( L,L,L
).
EDITAR: OK, acaba de descifrar lo anterior no es la respuesta completa, aunque es un buen punto de partida. Los valores RGB serán todos iguales, ya sea L
o V
, pero aún depende de cómo se calcularon originalmente L
y V
, de nuevo, ver Wikipedia . Parece que el programa / fórmulas que usaste para la conversión usaron la solución 1/3 * R + 1/3 * G + 1/3 * B
o una de las otras dos (hexcone / bi-hexcone).
Entonces, después de todo, usar HSL / HSV solo significa que tendrá que decidir qué fórmula utilizar antes y la conversión a valores de escala de grises RGB más tarde es solo aislar el último componente.
Parece que estos coeficientes provienen de la tecnología CRT antigua y no están bien adaptados a los monitores actuales, a partir de las Preguntas frecuentes sobre el color :
Los coeficientes 0.299, 0.587 y 0.114 computaron correctamente la luminancia para los monitores que tenían fósforos que fueron contemporáneos en la introducción de la televisión NTSC en 1953. Todavía son apropiados para computar el video luma que se discutirán más adelante en la sección 11. Sin embargo, estos coeficientes no calculan con precisión luminancia para monitores contemporáneos.
Sin embargo, no se pudo encontrar el coeficiente de conversión correcto.
Ver también conversión de RGB a monocromo