He escrito un programa de ordenador que puede detectar monedas en una imagen estática (.jpeg, .png, etc.) el uso de algunas técnicas estándar de visión de computadora (Desenfoque Gaussiano, umbralización, Hough-Transformar etc.). El uso de las proporciones de monedas recogido de una determinada imagen, que puedo establecer con certeza que las monedas son las que. Sin embargo, quiero añadir a mis niveles de confianza y también determinar si una moneda que deduzco que ser de tipo a (a partir de relaciones de radio) es también de la correcta colo[u]r. El problema es que para los Británicos monedas et al. (cobre, plata, oro), los respectivos colores (esp. de cobre de oro) son muy similares.
Tengo una rutina que extrae el promedio de color de una determinada moneda en términos de la RedGreenBlue (RGB) 'espacio de color' y rutinas para convertir este color en HueSaturationBrightness (HSB o VHS) 'color-espacio".
RGB no es muy agradable trabajar con en el intento de diferenciar entre las tres monedas de colores (ver adjunto [básico] imagen para ver un ejemplo). Tengo los siguientes rangos y valores típicos para los colores de los diferentes tipos de monedas:
Nota: el valor típico de aquí es uno de los seleccionados, utilizando un "pixel-sabio' de una imagen real.
**Copper RGB/HSB:** typicalRGB = (153, 117, 89)/(26, 0.42, 0.60).
**Silver RGB/HSB:** typicalRGB = (174, 176, 180)/(220, 0.03, 0.71).
**Gold RGB/HSB:** typicalRGB = (220, 205, 160)/(45, 0.27, 0.86)
Probé por primera vez el uso de la "distancia Euclidiana" entre un determinado media moneda de color (el uso de RGB) y los valores típicos para cada tipo moneda dada anteriormente el tratamiento de los valores RGB como un vector; para el cobre tendríamos:
$$D_{cobre} = \sqrt((R_{tipo} - R_{cobre})^{2} + (G_{tipo} - G_{cobre})^{2} + (B_{tipo} - B_{cobre})^{2})$$
donde el valor más pequeño de la diferencia ($D$) nos diría que el tipo de dado de la moneda es más probable que sea. Este método ha demostrado ser muy imprecisos.
También he probado solo comparar el tono de las monedas con los valores típicos de los tipos proporcionados por encima. Aunque en teoría esto proporciona una mejor "espacio de color" para lidiar con brillo variable y los niveles de saturación de las imágenes, no era lo suficientemente preciso.
Pregunta: ¿Cuál es el mejor método para determinar un tipo de monedas basadas en el color (a partir de una imagen estática)?
Muchas gracias por su tiempo.
Edición 1
Nota: he probado todas las ideas que se discuten a continuación y que han logrado nada. La variación en las condiciones de iluminación (incluso dentro de la misma imagen) hacen de este un problema muy difícil y debe ser tomado en consideración.
Edición 2 (Sumario de Resultados)
Gracias por sus respuestas. Además de la investigación de mi propia (incluyendo sus respuestas y comentarios) ha puesto de relieve lo difícil de este problema es lidiar con en el caso genérico de arbitraria de iluminación, arbitrarias de la cámara (dispositivo móvil), la fluctuación de la moneda de color (incluso para la misma especie/tipo), etc. La primera vez que miré en el color de la piel (reconocimiento de un campo muy activo de investigación) como un punto de partida y todavía hay muchos problemas, incluso con el reconocimiento del color de la piel para los Caucásicos solo (vea este artículo para una revisión de las técnicas actuales), y el hecho de que este problema tiene tres diferentes colores de los objetos que pueden tener continuo y variable chromacities hacer este tema de la visión de computadora muy difícil de clasificar y tratar en consecuencia (en realidad se podría hacer un buen Tel. D. en ella!).
Me miró dentro de la Gama de Restricción Método de la muy útil el post por D. W. a continuación. Esto fue a primera vista muy prometedor como un pre-procesamiento de paso para transformar la imagen y las diferentes monedas de los objetos a los colores que son independientes de las condiciones de iluminación. Sin embargo, incluso esta técnica no funciona a la perfección (y consiste en una biblioteca de imágenes/histogramas para las asignaciones – que yo no quiero entrar en) y tampoco la mucho más compleja Arquitectura de Red Neuronal metodologías. De hecho, este papel de los estados en el resumen que:
"current machine colour constancy algorithms are not good enough for colour-based
object recognition.".
Que no es para decir que no hay mucho más arriba-a-fecha de artículos sobre este tema, pero no los encuentro y no parece ser un área de investigación activa en este momento.
La respuesta por AVB fue también muy útil y he mirado en L*a*B* brevemente.
"The nonlinear relations for L*, a*, and b* are intended to mimic the nonlinear
response of the eye. Furthermore, uniform changes of components in the L*a*b* colour
space aim to correspond to uniform changes in perceived colour, so the relative
perceptual differences between any two colours in L*a*b* can be approximated by
treating each colour as a point in a three dimensional space."
Por lo que he leído, la transformación de este espacio de color para mi dispositivo dependiente de las imágenes va a ser difícil, pero voy a mirar en detalle en esto (con vista a algún tipo de aplicación) cuando tengo un poco más de tiempo.
No estoy conteniendo la respiración para una solución concreta a este problema y después de que el intento con L*a*B* I será descuidar la moneda de color y buscando seguro de que mi actual geométricas algoritmos de detección (precisa Elíptica Hough Transformar etc.).
Gracias a todos ustedes. Y como nota final a esta pregunta, aquí está la misma imagen con un geométricas nuevo algoritmo de detección, que no tiene color de reconocimiento: