¿cómo obtener el valor RGB de un color con fototransistor o fotodiodo?

2

Estoy haciendo un analizador de color que puede medir las partes de un color en rojo, verde y azul (por ejemplo, 128,255,0). No se supone que use sensores de color prefabricados y necesito un 1% de PRECISIÓN.

Utilicé tres LED: R, B y amp; B para medir secuencialmente los valores. Cuando el led verde está encendido. El reflejo es captado por el foto-transistor. La desviación del voltaje se convierte a la desviación de la corriente utilizando el circuito V a I de OPAMP, de modo que la intensidad de la reflexión verde se puede medir y se puede calibrar para mostrar un valor de 0-255 usando un microcontrolador.

Tuve éxito en medir el valor verde de un color solo si el color contenía pociones verdes. (ex [0,255,0], [0,128,0], [0,200,0]). Del mismo modo, puedo obtener valores RGB solo si hay un color presente. Si me dieron un color que es una combinación de R, G, B, entonces la lectura de voltaje es diferente e incorrecta. Por ejemplo, obtengo un voltaje más alto (mayor intensidad) cuando estoy midiendo blanco (255,255,255) que verde (0,255,0). Lo ideal sería que obtuviera la misma cantidad de verde porque esos colores tenían la misma cantidad de verde: 255.

¿Cuál es la causa del problema y cómo puedo usar un método alternativo para lograr mi objetivo? ¿Existe un método para separar la reflexión en R, G, B con alta precisión? Gracias por adelantado. (Estoy usando una impresión de Photoshop en un papel fotográfico mate como color)

EDITAR: Los 3 LED y el fototransistor están completamente cubiertos, asegurándose de que no haya luz de fondo que no interfiera.

    

2 respuestas

5

Para comprender los resultados que está obteniendo, debe considerar las curvas de respuesta espectral de su fuente de luz, el detector y el objeto que se está midiendo. El resultado final es una combinación de todos estos 'filtros' que actúan sobre la señal. Y si desea relacionar eso con los colores que ve , también debe tener en cuenta la respuesta espectral del ojo humano.

  

Estoy usando una impresión de Photoshop en un papel fotográfico mate como color

Una impresión fotográfica está calibrada para mostrar los colores correctos cuando es vista por el ojo humano. Esto significa que no significa que reflejará todos los componentes de color en proporción directa con los valores de la imagen digital. Los pigmentos o tintes utilizados en las impresoras de color no producen colores puros. Una tinta "verde" perfecta (que en realidad es una combinación de cian y amarillo) reflejaría todas las longitudes de onda entre 495 y 570 nm ("verde") mientras que absorbería todas las demás longitudes de onda en el espectro visible ("azul" y "rojo"). Pero las tintas prácticas no tienen una respuesta tan aguda, por lo que la tinta "verde" no reflejará toda la luz verde, y también puede tener algo de azul y rojo.

Para compensar que el color sea demasiado oscuro, la impresora puede colocar menos tinta para dejar que se vea más papel blanco. Pero los rastros de azul y rojo en el "verde" pueden hacer que se vea borroso o borroso, que la impresora puede compensar agregando negro. La impresora también puede alterar las relaciones de color para obtener un tono más preciso. El resultado final se ve bien, pero no es una coincidencia exacta con el valor RGB digital de 0,255,0. Lo que estás viendo no es realmente verde puro, sino una mezcla de muchos colores diferentes que solo se ven como verde puro para el ojo humano.

Otro factor a considerar es la salida espectral de sus LED. La mayoría de los LED verdes emiten una banda de luz verde bastante estrecha. Si esto no se alinea con la respuesta espectral de la tinta, la salida podría ser más baja de lo esperado. Si luego calibra a este valor más bajo y lo llama '255', una imagen en blanco puro podría leer más de lo esperado porque el papel blanco normal refleja más longitudes de onda de luz verde que la tinta 'verde'.

Finalmente, la respuesta del detector podría estar distorsionando los resultados. Los transistores fotoeléctricos estándar alcanzan su punto máximo en el infrarrojo cercano, y la respuesta disminuye rápidamente hacia el extremo azul del espectro. Esto podría sesgar la respuesta para que el verde 'amarillo' produzca una lectura más alta que el verde 'azul'.

Línea inferior: - la impresora modifica los valores RGB de la imagen para producir un resultado que se vea bien al ojo humano, por lo que para obtener un resultado significativo, su combinación de emisor / detector debe replicar la respuesta espectral del ojo humano. Incluso entonces, los resultados no coincidirán exactamente con los valores de color RGB en la imagen digital (¡1%? ¡Olvídelo!).

    
respondido por el Bruce Abbott
2
  

"esos colores tenían la misma cantidad de verde"

Eso probablemente no sea del todo cierto. "Verde" para su detector no es "ningún" verde, pero sigue el espectro de emisión del LED verde. Ver por ejemplo enlace . Observe cómo la emisión verde varía de ~ 520 a ~ 680nm. Para obtener el máximo brillo verde en su sensor, la superficie debería reflejar todo el espectro. El blanco lo hace, la mayoría de los tipos de "verde" no lo hacen.

Probablemente, la forma más fácil de manejar esto es hacer su propia serie de mediciones de calibración. Imprima una docena de colores diferentes del espectro en el que está interesado y registre los valores que su sensor ofrece para cada uno de ellos. A partir de eso, puedes interpolar los tonos entre. De esta manera, obtendrá una calibración para sus tipos específicos de LED, filtros y fotosensores sin tener que reunir y combinar todos los números de las hojas de datos para un modelo teórico.

    
respondido por el JimmyB

Lea otras preguntas en las etiquetas