Pregunta

Espero obtener ayuda con la detección de objetos 2D.Daré una breve descripción del contexto en el que esto se implementará.

Se tomará una imagen del techo.Se colocarán marcadores en el techo para poder determinar la orientación de la cámara.Las fotografías siempre se tomarán mirando hacia arriba.Mi objetivo es detectar uno de estos marcadores en la imagen y determinar su rotación.Entonces, la rotación y el escalado (en menor medida) serán los dos factores principales utilizados en la detección de imágenes.Escribiré el software en C# o matlab (aún no estoy seguro).

Por ejemplo, el marcador podría ser una flecha como esta:

Reference Arrow

Una imagen tomada del techo contendría marcadores.El software necesita detectar un solo marcador y determinar que ha sido girado 170 grados.

Ceiling Arrows

No tengo experiencia previa con el análisis de imágenes.Sé que el procesamiento de imágenes es un tema bastante amplio y esperaba recibir algún consejo sobre qué dirección debería tomar y qué técnicas serían mejores para mi aplicación.¡Gracias!

¿Fue útil?

Solución

Me gustaría recomendar MATLAB o si usted es la intención de utilizar C #, Emgu CV es bastante bueno.

Hough transforma son una gran idea. Una vez que detecta los bordes de la imagen, usando, por ejemplo un detector de bordes de Canny , se obtiene una imagen de bordes (que es imagen binaria con sólo 1 o 0 para valores).

A continuación, la línea recta transformada de Hough (esencialmente) hace girar una línea sobre cada píxel blanco la imagen de bordes en (la resolución de la línea depende de usted) usando una función parametrizada para la línea y calcula el número total de blanco (valorado en 1) píxeles a lo largo de cada línea y tiendas de hilado esta información en una gran acumulador que almacena los datos indexados por los parámetros de la línea.

texto alternativo http://upload.wikimedia.org/wikipedia /en/a/af/Hough_space_plot_example.png

En el ejemplo anterior, la forma paramétrica para una línea es:

rho = x*cos(theta) + y*sin(theta)
  

donde rho es la distancia y theta se   el ángulo

Así como se puede ver el, si nos fijamos en la papelera en una orientación particular puede averiguar cuántas líneas se orienta en ese ángulo. Por supuesto, usted tendrá que hacer algún trabajo extra para averiguar qué líneas están orientadas en ese ángulo, ya que tiene otras 5 líneas por la flecha, pero que no debe ser demasiado duro.

Otros consejos

No estoy directamente en este campo, pero te diría que empezar por mirar en la detección de bordes en concreto. Si usted tiene un fondo en matemáticas / ingeniería de los materiales son bastante fáciles de entender:

Esto pareció despertar algunas ideas: http://www.cfar.umd.edu/~fer/ cmsc426 / conferencias / edge1.ppt

como siempre en la visión por ordenador, el primer problema es la iluminación de la imagen y adquisición. antes de seguir adelante, establecen cómo se imprimirán sus marcadores en el techo, ¿cuál será su forma, lo que la luz que va a utilizar para ver y qué configuración de la cámara se le eligió para mirar los marcadores.

da un buen material, una buena luz y una buena cámara, es posible que tenga ningún problema en absoluto para procesar la imagen. por ejemplo, puede imprimir una flecha llena de un material retrorreflectante, con una cola más larga que tu ejemplo, utilizar una luz de color y un filtro correspondiente de la cámara. Ahora todo lo que tiene en su imagen es flechas ... hay muchas otras formas de adquisición de la imagen que le ayudará allí.

Una vez que tiene las flechas de fricción, un análisis de partículas simples (que consisten en el cálculo de los momentos estadísticos de los objetos en la imagen) le dará una gran cantidad de información: cada flecha debe tener valores casi iguales para los 7 hu momentos, lo que le permite para filtrar objetos de manera eficiente, también la orientación calculada a partir de los momentos centrales le dará el ángulo de la flecha. análisis de partículas de ser sólo estadística, es extremadamente rápido.

Se han desarrollado varios sistemas para detectar marcadores y su orientación de forma robusta:

Si su objetivo principal no es aprender, sino hacer que la aplicación funcione, le sugiero que utilice uno de estos.No es una tarea trivial para un principiante detectar de forma sólida la posición y orientación de un marcador aleatorio en una imagen.

Por otro lado, si estás varonilmente interesado en aprender, también te dirigiría a ARToolKit y sus publicaciones (y sus referencias) que explican cómo implementar de forma sólida la detección de marcadores.

Usted tendrá que explorar la detección de bordes, así que busca en los filtros de Hough. Después de que usted tendrá que buscar en los clasificadores de patrones y extracción de características.

Este papel tiene un algoritmo que aparece a trabajar sin detección de bordes. Este libro extracto está más orientado hacia el tipo de detección de símbolos tiene la intención, una vez que haya hecho la detección de bordes.

A de forma rigurosa para determinar la orientación de una imagen formada adquiridos bajo la geometría proyectiva (la mayoría de las cámaras) está utilizando los puntos de fuga y líneas de fuga . Buenas noticias para usted: su marcador puede ser usado para encontrar esta información! Más buenas noticias, su imagen puede ser rectificado , por lo que las columnas de imagen (el eje y) corresponderán a la dirección arriba-abajo. Encontrará más información sobre este asunto en el capítulo 8 del libro de Hartley y Zisserman, múltiple Ver Geometría en Visión por Computador .

También recuerde que probablemente tendrá que trabajar en el radial problema de distorsión , la distorsión causada por la lente de la cámara. Los otros chicos están justo sobre el problema de detección de flecha: usted tiene que utilizar la detección borde y, después de eso, transformada de Hough o plantilla a juego . Consulte el libro de González y Woods' Imagen Procesamiento Digital para más detalles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top