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.
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!).
"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.
Ignacio Vázquez-Abrams
Manamperi budista
Rogelio Rowland
el fotón
FRob
Manamperi budista
Manamperi budista
pjc50
Manamperi budista