2012-03-11 22 views
12

Tengo la intención de escribir un programa para detectar y diferenciar ciertos objetos de un fondo casi sólido. El primer plano y el fondo tienen una gran diferencia de contraste que aumentaría aún más para ayudar en el proceso de identificación del objeto. Estoy planeando utilizar la técnica de transformación Hough y OpenCV.¿Cómo identificar diferentes objetos en una imagen?

Sample image

Como se ve en la imagen de arriba, me gustaría identificar por separado los objetos circulares y los objetos cuadrados (o cualquier otra forma de un conjunto finito de formas). Como soy bastante nuevo en el procesamiento de imágenes, no tengo idea de si tal situación necesita una red neuronal para implementarse y cada forma debe aprenderse de antemano. ¿Podría una técnica como la coincidencia de plantillas permitirme hacer esto sin una red neuronal?

Respuesta

9

Si tiene la intención de detectar formas que no sea sólo círculos, (y de la imagen que supongo que lo hacen), recomendaría el Chaflán a juego para un comienzo rápido, especialmente cuando usted tiene un buen contraste.

La premisa básica, se explica en términos simples, es el siguiente:

  1. Haces una detección de bordes (por ejemplo, cvCanny en OpenCV)
  2. se crea una imagen de distancia, donde el valor de cada píxel significa la distancia desde el borde más cercano.
  3. Tome las formas que desea detectar, defina puntos de muestra a lo largo de los bordes de la forma e intente hacer coincidir estos puntos en la imagen de distancia. Básicamente, solo agrega los valores en la imagen de distancia que están "por debajo" de las coordenadas de los puntos de muestra, dada la posición específica de los objetos.
  4. Encuentre un buen algoritmo de minimización, la efectividad de esto depende de su aplicación.

Este enfoque básico es una solución general, por lo general funciona bien, pero sin mayores avances, es muy lento.

Por lo general, es una buena idea separar primero los objetos de interés, por lo que no siempre debe realizar la búsqueda completa en la imagen completa. Encuentra un buen threshold, para que puedas separar los objetos. Aún no sabes qué objeto es, pero solo tienes que hacer la coincidencia en las proximidades de este objeto.

Otra buena idea es, en lugar de hacer la búsqueda completa en la imagen de alta resolución, primero hacerlo en una resolución muy baja.El resultado no será muy preciso, pero puede conocer las áreas generales donde vale la pena realizar una búsqueda en una resolución más alta, para que no pierda el tiempo en áreas donde no hay nada de interés.

Existen varias técnicas más avanzadas, pero todavía vale la pena echar un vistazo a la combinación básica de chaflán, ya que es la base de una gran cantidad de técnicas.

Cuestiones relacionadas