Para esta imagen en particular, no es necesario trabajar en el espacio a todo color, sino que puede trabajar en la intensidad solos (la parte "V" del HSV - "valor", es decir, la intensidad).
Ya sea que utilice el espacio Valor o espacio de Hue, como se ha mencionado Penélope, dependerá de las imágenes naturales elabora para sus objetos reales. Para el caso general, es posible que necesite usar una combinación de matiz y valor (intensidad) para segmentar las imágenes correctamente. En lugar de trabajar en el espacio vectorial de hue-value, es más sencillo trabajar en los planos de imagen H y V por separado y luego combinar los resultados. (La segmentación en espacios de vectores 3D es ciertamente posible, pero probablemente sería innecesariamente complicado para este proyecto).
El algoritmo de cuenca en OpenCV podría ser una buena opción para sus necesidades. http://www.seas.upenn.edu/~bensapp/opencvdocs/ref/opencvref_cv.htm
Una palabra de advertencia sobre el método de Otsu: está bien para separar dos modos cuando un histograma de valores de intensidad (o valores de tono) es una distribución bimodal, pero para imágenes naturales que no es común tener verdaderas distribuciones bimodales. Si los objetos de fondo y/o en primer plano varían en intensidad y/o matiz de un lado a otro de un objeto, entonces Otsu puede tener un bajo rendimiento.
Otsu ciertamente puede extenderse para múltiples modos, como se explica en Digital Image Processing por Gonzalez and Woods y otros libros de texto introductorios sobre el tema. Sin embargo, un gradiente de fondo causará problemas incluso si usa Otsu para separar un par de modos a la vez.
También querrá asegurarse de que si la lente de su cámara se acerca o aleja, aún encontrará los mismos umbrales de binarización. La técnica básica de Otsu usa todos los píxeles en el histograma de la imagen. Eso significa que podría codificar todos los píxeles de la imagen para producir ruido puro con el mismo histograma de imagen que su imagen original, y el método de Otsu generaría el mismo umbral.
Un truco común es confiar en los píxeles cerca de los bordes. En su ejemplo, podemos considerar una imagen como una región con bordes afilados, esquinas agudas y (con suerte) valores HSV uniformes. Los píxeles de muestreo cerca de los bordes se pueden realizar de varias formas, incluidas las siguientes:
- Encuentra puntos de borde fuertes (usando Canny o alguna técnica más simple). A lo largo de la dirección del gradiente de borde, y en las distancias +/- D desde el punto de borde, muestree los niveles de gris del primer plano (relativo) y el fondo (relativo). La distancia D debería ser mucho más pequeña que el tamaño de los objetos en cuestión.
- Encuentra puntos de ventaja fuertes. Use los niveles de gris en los puntos de borde mismos como estimaciones del umbral deseado probable. En su ejemplo, tendrá dos picos fuertes: uno en el borde entre object1 y object2, y el otro en el borde entre object2 y object3.
Dado que sus objetos tienen esquinas, puede usarlos para ayudar a identificar los límites de objeto y/o los píxeles de borde adecuados para el muestreo.
Si tiene objetos nominalmente rectangulares, también puede usar un borde Hough o algoritmo de borde RANSAC para identificar líneas en la imagen, encontrar intersecciones en las esquinas, etc.
Dicho todo esto, para casi cualquier imagen natural que involucra objetos apilados uno encima del otro se va a ejecutar en varias complicaciones:
- Sombras
- color y la intensidad gradientes a través de un objeto nominalmente de color consistente
- bordes de diferente nitidez si los objetos son unas distancias variables del sistema óptico
Si sabe con certeza cuántos objetos s están presentes, puede probar una técnica K Means. http://aishack.in/tutorials/knearest-neighbors-in-opencv/
para tareas más complejas de segmentación, como cuando no se conoce el número de objetos, puede utilizar el Mean Shift técnica, aunque recomiendo probar las técnicas más simples primero.
El primer paso y la solución más fácil es utilizar una iluminación adecuada. Para reducir los reflejos y las sombras, use iluminación difusa. Para muchas aplicaciones, la iluminación más cercana a la idealmente difusa es la iluminación de "día nublado": http://www.microscan.com/en-us/products/nerlite-machine-vision-lighting/cdi-illuminators.aspx
Más simplemente, podría probar una o más luces de "rebote" como las que se usan en la fotografía de estudio. http://www.photography.com/articles/taking-photos/bounce-lighting/
"los colores deben tener valores de Hue muy diferentes en este espacio" Truco útil, lo recordaré. – SigTerm