Pregunta

Mi pregunta original

He leído que para convertir un pixel del RGB a escala de grises a RGB, uno debe usar

r_new = g_new = b_new = r_old * 0.3 + g_old * 0.59 + b_old * 0.11

Yo también he leído, y entender, que g tiene una mayor ponderación debido a que el ojo humano es más sensible al verde.La aplicación de eso, vi los resultados fueron los mismos que se obtiene de la configuración de una imagen a 'escala de grises' en un editor de imágenes como el Gimp.

Antes de leer este, me imagino que para convertir un píxel a escala de grises, uno podría convertir a HSL o HSV, a continuación, ajustar la saturación a cero (por lo tanto, la eliminación de todos los colores).Sin embargo, cuando hice esto, tengo una muy diferente de la imagen de salida, aunque también carecía de color.

¿Cómo s = 0 exactamente difieren de las 'correcto' forma en que lo leí, y por qué es 'incorrecto'?

Curso hallazgos basada en respuestas y otras investigaciones

Parece que los coeficientes de luminancia a utilizar es el tema de debate.Varias combinaciones y a escala de grises algoritmos tienen diferentes resultados.Los siguientes son algunos presets que se utiliza en áreas como estándares de TV:

  • los coeficientes definidos por el UIT-R BT.601 (NTSC?) son 0.299r + 0.587g + 0.114b
  • los coeficientes definidos por el UIT-R BT.709 (la más reciente) son 0.2126r + 0.7152g + 0.0722b
  • los coeficientes de la igualdad de terceras partes, (1/3)(rgb), es el equivalente a s = 0

Este artículo científico detalles varios de escala de grises técnicas y sus resultados de diversas imágenes, además de subjetivo de la encuesta de 119 personas.

Sin embargo, al convertir una imagen a escala de grises, para lograr el mejor efecto artístico, uno casi sin duda no será el uso de estos predefinidos coeficientes, pero ajustando la contribución de cada canal para producir la mejor salida para la imagen en particular.

¿Fue útil?

Solución

Aunque existen estos coeficientes de transformación, nada te une a usarlos. Mientras la intensidad total de cada píxel no cambie, las contribuciones de cada canal pueden ser cualquier cosa, que varíe de 0 a 100%.

Los fotógrafos que convierten las imágenes en la escala de grises usan mezcladores de canales para ajustar los niveles de cada canal (RGB o CMYK). En su imagen, hay muchos rojos y verduras, por lo que puede ser deseable (dependiendo de su intención) tener esos canales más altamente representados en la intensidad de nivel gris que 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, e intenta preservarlos en la imagen en escala de grises. El aumento de las sombras y/o los reflejos puede requerir aumentar la contribución de la banda azul, por ejemplo.

Otros consejos

Un artículo interesante sobre el tema aquí ... "Porque los ojos humanos no detectan el brillo linealmente con el color".

http://www.scantips.com/lumin.html

Parece que estos coeficientes provienen de la tecnología CRT antigua y no están bien adaptados a los monitores de hoy, de la Preguntas frecuentes de color:

Los coeficientes 0.299, 0.587 y 0.114 luminancia correctamente calculada para monitores que tienen fósforos que fueron contemporáneos en la introducción de la televisión NTSC en 1953. Todavía son apropiados para calcular el video luma que se discutirán a continuación en la sección 11. Sin embargo, estos coeficientes no calculan con precisión Luminancia para monitores contemporáneos.

Sin embargo, no pude encontrar el coeficiente de conversión correcto.

Ver también RGB a conversión monocromática

Usando s = 0 en HSL/HSV y la conversión a RGB da como resultado R = G = B, así es lo mismo que hacer r_old * 1/3 + g_old * 1/3 + b_old * 1/3.

Para entender por qué, eche un vistazo al Página de Wikipedia Eso describe la conversión hsv-> rgb. Saturación s será 0, entonces C y X Lo será también. Terminarás con R_1,G_1,B_1 siendo (0,0,0) y luego agregar m a los valores finales de RGB que resulta en (m,m,m) = (V,V,V). Lo mismo para HSL, el resultado será (m,m,m) = (L,L,L).

Editar: OK, solo descubrir lo anterior no es la respuesta completa, aunque es un buen punto de partida. Los valores de RGB serán todos los mismos, L o V, pero aún depende de cómo L y V fueron calculados originalmente, nuevamente, ver Wikipedia. Parece que el programa/fórmulas que ha utilizado para convertir usó el 1/3 * R + 1/3 * G + 1/3 * B solución o uno de los otros dos (hexcone/bi-hexcone).

Entonces, después de todo, usar HSL/HSV solo significa que tendrá que decidir qué fórmula usar anteriormente y la conversión a valores de escala de grises RGB más tarde está aislando el último componente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top