tipos software sobre realidad ejemplos educacion caracteristicas aumentada aplicaciones c++ opencv augmented-reality

c++ - software - tipos de realidad aumentada



implementación de realidad aumentada de marcador natural (3)

Después de descubrir el poder de OpenCV, decidí usar esa biblioteca para desarrollar el motor de seguimiento de marcador natural en el que estoy trabajando ahora. Pero mi problema es que no tengo idea de un enfoque adecuado para la implementación de dicho rastreador.

He ideado el siguiente plan:

  1. Utilice uno de los algoritmos de seguimiento de objetos (por ejemplo, SIFT, SURF, etc.) para describir y extraer los puntos clave de una alimentación de cámara en vivo.
  2. En función de los puntos clave extraídos, conviértalos en histograma y compare el histograma con histogramas de marcadores almacenados.
  3. Una vez que se encuentra una coincidencia, convierta esa información de posición y páselo al motor responsable de renderizar los objetos en 3D.

Probé el algoritmo SIFT y SURF para describir y extraer puntos clave, y el resultado final es superfps para ambos algoritmos (es decir, menos de 0 fps). Me doy cuenta de que SIFT y SURF son bastante costosos desde el punto de vista computacional y ¿serán adecuados para ese seguimiento en una alimentación de cámara en vivo?

Gracias.


Desarrollar dichos marcadores requiere que tengas un conocimiento profundo del procesamiento de imágenes, imágenes en 3D, seguimiento, etc. No es como desarrollar una aplicación simple.

Es mejor usar los desarrollados;)

FERNS es mucho más eficiente y simple que SIFT. Puedes usarlo. Fue desarrollado por investigaciones en EPFL. Si lees los documentos de AR / Tracking, verás que estos tipos son los líderes de la industria / campo. También se implementa en versiones posteriores de OpenCV (¿creo que en 2.1 o 2.2?)

De lo contrario, siempre puedes obtener el código fuente de ese algoritmo desde aquí: Helechos: Detección de objetos planar

EDITAR:

Básicamente, los algoritmos como FERNS le indicarán la posición / rotación, etc. (esto es, los cambios están representados por una matriz llamada Homografía) una cierta superficie tomará con referencia a otro marco. Esta Homografía es todo lo que necesitas para renderizar en 3D;)

Usando OpenGL o bibliotecas 3D similares, dibuje el objeto usando la Homografía calculada. Si repites este proceso para cada cuadro, tendrás una aplicación AR simple.

Libros de teoría sobre: procesamiento de imágenes e imágenes en 3D

Para entender AR lea: Papel ARToolKit

Más en FERNS: oezuysal''site


SIFT y SURF son funciones visuales exitosas y probablemente sean el enfoque correcto (aunque existen funciones más rápidas para calcular).
SIFT se puede calcular de manera eficiente en GPU. Ver siftGPU .


SIFT es un buen algoritmo, pero no se puede sacar el mejor partido de él. Hay métodos que usan FAST para la detección y luego construyen un descriptor SIFT reducido de los puntos detectados (en lugar de 128 valores que usan, por ejemplo, 32). También se desarrollaron enfoques piramidales para FAST (usted tiene ORB, pero sus descriptores no son lo suficientemente buenos).

Ahora OpenCV acaba de lanzar FREAK y prometen que es el más rápido y robusto, así que lo intentaré pronto. Puedes echar un vistazo a este tipo de tutorial de realidad aumentada en OpenCV.