2012-08-07 27 views
7

Hay un algoritmo para averiguar la longitud de onda del color dado el valor de matiz (entre 0 grados y 360 grados). ¿Hay alguna función incorporada en MATLABpara lo mismo?matiz Hue a longitud de onda

+2

Técnicamente, existen múltiples formas de obtener un matiz si está dispuesto a mezclar longitudes de onda, y algunas púrpuras no pueden representarse en una sola longitud de onda. –

+0

@MarkRansom, ¿cuál sería el más fácil en matlab? – SegFault

+0

No puedo decir nada específico sobre Matlab. Probablemente necesites convertir el espacio de color. Puede encontrar que la tabla colorimétrica oficial de CIE es útil: http://www.cie.co.at/index.php/LEFTMENUE/index.php?i_ca_id=298 –

Respuesta

0

Respuesta corta: NO. En general, un tono determinado puede producirse mediante una triple infinidad de longitudes de onda.

+0

¿Puede explicar esta oración? – rhavin

+0

Consulte la explicación en: https://en.wikipedia.org/wiki/Color_vision#Mathematics_of_color_perception –

7

Mientras Mark Ransom y Franco Callari tienen toda la razón de que no puede recuperar el espectro de un color perceptual, ni asignar inequívocamente los valores de matiz a longitudes de onda, definitivamente podría armar algo si solo quiere la longitud de onda monocromática correspondiente.

La parte del ciclo de matiz entre 270 y 360 es otro problema. No hay nada correspondiente a magenta en el espectro de luz, así que supongamos que solo usamos valores de matiz entre 0 y 270.

Estimando que la parte utilizable del espectro visible es 450-620nm, con longitud de onda L (en nm) y valor de matiz H (en grados), puede improvisar esto:

L = 620 - 170/270 * H 

620 es la longitud de onda máxima, 170 es la gama de longitud de onda y 270 es el rango tonalidad.

Creo que esto debería ir en la dirección correcta, pero solo he comprobado 4 o 5 colores. Es posible que pueda obtener mejores resultados al comparar entre la entrada hues y los colores correspondientes en un visible spectrum chart, y luego ajustar los valores de alguna manera.

+0

¿Tiene alguna referencia para esta fórmula? –

+0

@AkshayHazari: Puedes buscar los números que utilicé en cualquier libro de texto de física. En cuanto a la fórmula en sí, no, simplemente lo inventé. Pero expliqué cómo lo obtuve. – Junuxx

+0

Tenía una función para reconocer un color dominante en una imagen al agrupar los colores de la imagen y verificar qué color es el más cercano. Si pudiera obtener una longitud de onda o un valor único que representara un color, reduciría en gran medida la complejidad. ¿Hay alguna forma de que pueda modificar esto un poco y usarlo, hasta ahora no he encontrado nada, cerca de representar valores rgb o hue como usted. –

0

no puedo proporcionar una solución sencilla, pero hay algo que debe tener en cuenta:

  • La parte visible del Spektrum es aproximadamente entre 380 nm (UV-frontera) y 780 nm (IR-frontera). Pero lo que ves (hue) depende de las células de cono activadas. Por encima de 660nm, el M-cone no se activa en absoluto, por lo que todo entre 660 nm y 780 nm es 0 ° de matiz.
  • a 580nm tiene amarillo con tono 60 °, el verde más puro está a aproximadamente 535nm, por lo que es 120 °, y el azul más puro (240 °) está a aproximadamente 457 nm.
  • si aplica una función lineal, el amarillo debe estar a 597 nm, que no es así, por lo que necesitaría un enfoque más complejo.
  • sobre azul, el cono rojo todavía se activa hasta que veamos el violeta, pero no volveremos a alcanzar el rojo en las frecuencias más altas, por lo que no podrá superar los 300 ° aproximadamente.
  • el rango de matiz entre 300 ° y 360 ° no tiene equivalencia en spektrum visible, solo se puede simular mezclando luz de alta frecuencia (azul o violeta) con luz roja, lo que da como resultado algo entre magenta y rojo en el violeta línea.
Cuestiones relacionadas