2012-02-04 31 views
8

Me gustaría poder procesar una imagen de primer plano de un árbol de mango para poder identificar y contar los mangos. Un mango es más o menos una forma ovalada o elipse que es singularmente diferente de las hojas y ramas en la imagen. Me gustaría poder contar mangos que podrían estar cubiertos en un 20% por otros objetos (pero aún son obvios para el ojo humano). Creo que hay un algoritmo en MatLab que podría hacer esto y agradecería cualquier ayuda o sugerencia.Reconocimiento de forma - contando mangos

+0

http://opencv.willowgarage.com –

+0

también http://stackoverflow.com/questions/6307263/ellipse-detection-using-hough-transform –

Respuesta

4

Creo que la solución más robusta para ese problema es segmentar por color los mangos del fondo (es decir, hojas de árbol) y contar el número de connected components en la imagen binaria resultante. Como señaló btown, puede obtener los componentes conectados de una imagen binaria utilizando las funciones bwconncomp y labelmatrix.

Para segmentar los mangos por color, primero convierta la imagen a HSV color space y luego realice una binarización usando el componente hue. Creo que el componente de tono de los mangos será diferente de otras partes de la imagen. This blog post da una idea de cómo hacer eso en Matlab.

+1

Un ejemplo es en http://www.mathworks.com/ ayuda/caja de herramientas/images/ref/labelmatrix.html – btown

+0

@btwon Agregó el enlace sugerido a la respuesta a la pregunta. –

+1

Para obtener un ejemplo de segmentación de color, consulte [¿Cómo puedo convertir una imagen RGB a escala de grises pero conservar un solo color?] (Http://stackoverflow.com/q/4063965/52738) – gnovice

1

Tal vez usted podría:

  1. proceso de pre la imagen (en escala de grises/umbral etc.).
  2. Extraiga todos los condados/componentes conectados de la imagen binaria.
  3. Calcula el área y el perímetro de cada componente de contorno/conectado.
  4. calcular el factor de forma/redondez usando:

Factor de Forma - (4 * pi * Area)/(perímetro^2). Esto da una indicación en cuanto a la forma de los objetos. Los círculos tienen la mayor área con una relación de perímetro y esta fórmula se aproximará a un valor de 1 para un círculo perfecto . Los cuadrados son alrededor de 0.78. Un objeto delgado similar a un hilo tendría el factor de forma más bajo que se aproxima a 0.

Redondeo - (Perímetro^2)/4 * PI * Área). Esto le da el valor recíproco de Shape Factor para aquellos que están acostumbrados a usarlo. Un círculo tendrá un valor ligeramente mayor o igual a 1. Otras formas de aumentarán su valor.

¿Podría aproximar un factor de forma para un mango "ideal" y ver si alguno de los componentes se encuentra dentro de la aproximación?

Ver this para más detalles.

+0

Usar medidas de forma en esta situación específica puede ser un poco difícil porque algunos objetos (mangos) pueden estar parcialmente ocluidos por las hojas. –

+0

Verdadero; podría utilizar este enfoque junto con el suyo para validar las formas irregulares (mangos oscurecidos) retrocediendo y obteniendo la información del color del tono dada la ubicación del contorno irregular del "mango potencial".De hecho, puedes hacer esto para todos los contornos para la validación. Sin embargo, tendrías que saber qué rango de valores de matiz considera un mango adelantado. +1 por su enfoque! – Jeb