¿Cómo obtener el valor RGB de un color usando fototransistor o fotodiodo?

Estoy haciendo un analizador de color que puede medir las porciones de rojo, verde y azul de un color (por ejemplo, 128,255,0). Se supone que no debo usar sensores de color prefabricados y necesito 1% DE PRECISIÓN.

Usé tres LED: R, B y B para medir secuencialmente los valores. Cuando el led verde está encendido. el reflejo es captado por el fototransistor. La desviación de voltaje se convierte en desviación de corriente usando el circuito V a I de OPAMP para que la intensidad del reflejo verde pueda medirse y calibrarse 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. (ej. [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 y incorrecta. Por ejemplo, obtengo un voltaje más alto (mayor intensidad) cuando mido blanco (255,255,255) que verde (0,255,0). Idealmente, debería haber obtenido 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 algún método para separar el reflejo en R, G, B con alta precisión? Gracias de antemano. (Estoy usando una impresión de Photoshop en un papel de impresión fotográfica mate como color)

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

¿Ha intentado medir la cantidad de C, M e Y en su lugar?
@IgnacioVazquez-Abrams Realmente no entiendo cómo me puede ayudar. Estoy muy complacido si puedes elaborarlo bastante más. Gracias
"Se supone que no debo usar sensores de color prefabricados" , solo por interés, ¿por qué no?
¿Qué tipo de muestras está analizando? (¿Cómo sabe que su muestra [255,255,255] realmente tiene la misma reflectividad en verde que su muestra [0,255,0]?)
1% de precisión? ¿En qué ambiente controlado, en qué situación de iluminación? No se acercará ni un poco con ninguna configuración aleatoria... Necesita al menos controlar la iluminación y tener una fase de calibración para cada LED diferente, emparejamiento de diodos. La impresión de colores tampoco funcionará con ninguna impresora aleatoria...
@RogerRowland En realidad, esto es para un proyecto en la universidad. No utilizar sensores de color prefabricados es uno de los objetivos. Gracias.
@ThePhoton Esto es para un proyecto universitario y me entregarán tarjetas de colores impresas para medir. Se entrega una muestra de tarjetas de voluntad para calibrar. La reflectividad es el problema al que me he enfrentado. Entiendo que [0,255,0] y [255,255,255] tienen reflejos diferentes. Estoy buscando un método alternativo para evitar esto. Gracias.
El comentario de Ignatio es una pista. Los colores del papel no son los mismos que los colores de la pantalla: es sustractivo en lugar de aditivo. Vas a necesitar no solo calibrar sino también post-procesar las señales.
@FRob La iluminación de fondo estará completamente controlada. Tengo que medir los valores RGB de las tarjetas de color dadas por la universidad (estoy haciendo esto como un proyecto universitario) para no tener el problema de diferentes impresoras, papeles, etc. Y los mismos LED y fototransistores. se utilizará durante todo el período del proyecto. Gracias.

Respuestas (2)

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

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

Una impresión fotográfica está calibrada para mostrar los colores correctos cuando la ve el ojo humano. Esto no significa que reflejará todos los componentes de color en proporción directa a los valores de la imagen digital. Los pigmentos o tintes utilizados en las impresoras a 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 absorbí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 nítida, 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 depositar menos tinta para permitir que se vea más papel blanco. Pero los rastros de azul y rojo en el 'verde' podrían hacer que se vea turbio o descolorido, lo que la impresora puede compensar agregando negro. La impresora también puede alterar las proporciones de color para obtener un tono más preciso. El resultado final se ve bien, pero no coincide exactamente con el valor RGB digital de 0,255,0. Lo que está viendo en realidad no es verde puro, sino una mezcla de muchos colores diferentes que 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 bastante estrecha de luz verde. Si esto no se alinea con la respuesta espectral de la tinta, entonces 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 alto 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 fototransistores estándar alcanzan su punto máximo en el infrarrojo cercano y la respuesta cae rápidamente hacia el extremo azul del espectro. Esto podría sesgar la respuesta de modo que el verde 'amarillo' produzca una lectura más alta que el verde 'azul'.

En pocas palabras: la impresora modifica los valores RGB de la imagen para producir un resultado que se ve bien para el ojo humano, por lo que para obtener un resultado significativo, la 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ídalo!).

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Muchas gracias por la respuesta y ahora tengo una buena comprensión de lo que está mal. Pero me pregunto cómo funcionan los sensores RGB.
Los sensores RGB suelen utilizar 3 fotodiodos de silicio con filtros individuales rojo, verde y azul. Algunos también tienen un filtro frontal con un matiz azul, que iguala la respuesta RGB y elimina los infrarrojos. Aquí hay un ejemplo:- hamamatsu.com/jp/en/product/alpha/R/4153/S7505-01/index.html . Al elegir cuidadosamente los materiales y las densidades de los filtros, la respuesta espectral se puede adaptar a aplicaciones específicas.

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

Eso probablemente no sea del todo cierto. "Verde" para su detector no es "cualquier" verde, sino que sigue el espectro de emisión del LED verde. Consulte, por ejemplo , https://en.wikipedia.org/wiki/Light-emitting_diode#/media/File:Red-YellowGreen-Blue_LED_spectra.png . 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 tendría que reflejar todo ese espectro. El blanco lo hace, la mayoría de los tipos de "verde" no.

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 que le interesa y registre los valores que entrega su sensor para cada uno de ellos. A partir de eso, puede interpolar los tonos intermedios. De esta manera, obtiene una calibración para sus tipos específicos de LED, filtros y fotosensor sin tener que recopilar y combinar todos los números de las hojas de datos para un modelo teórico.

Muchas gracias. Sin embargo, me pregunto cómo se fabrican los sensores RGB. XDD