Skip to content

codin-eric/augmented_reality_research

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Realidad Aumentada - Re encontrar el amor por álgebra con Python

Esta es la investigación de la charla dada en el meetup de PyAr "ChoriPython".
Basado fuertemente en el blogpost "Augmented reality with Python and OpenCV" de Bites of Code
https://bitesofcode.wordpress.com/2017/09/12/augmented-reality-with-python-and-opencv-part-1/

Contenido.

En el notebook marked vas a encontrar todo el código que utilicé para la parte de marked AR
En el notebook render vas a encontrar todo el cóigo que utilicé para la parte de crear tu propio motor de render

Investigación

Marked AR vs Markerless AR

  • Marked AR se basa en una imagen de referencia para encontrar en un stream de video

Alt text

  • Markerless AR utiliza algoritmos de Machine Learning para poder identificar modelos en el stream de video Alt text

## Marked AR Los pasos a seguir para poder realizar Marked AR son: - Crear una referencia - Encontrar nuestra referencia en el stream de video - Identificar su posición y orientación en el espacio - Rotrotransladar un objeto virtual a la posición ## Crear una referencia Empecé creando un aruco marker en un post-it
![Alt text](img/aruco_marker.jpg?raw=true "Aruco markers")
Opté por utilizar ORB (Oriented FAST and Rotated BRIEF) ya que los otros populares, SIFT y SURF son algoritmos con copyrights
Al correr ORB detection en ambas imagenes conseguimos los key points que debemos localizar ![Alt text](img/aruco_marked.png?raw=true "Aruco markers") ![Alt text](img/stream_key_points.png?raw=true "Aruco markers")
Luego para identificar cada uno de los keypoints de la referencia en el stream de video utilizo Brute-force descriptor matcher. Esto da como resultado el siguiente set de matches. Lo que se puede ver es que de un set de 100 matches hay muchisimos falsos positivos.

Alt text
Al cambiar la referencia podemos ver que de 100 matches solo 3 son falsos positivos Alt text
Una vez que tenemos la referencia de cada punto podemos calcular como fue que se movieron, esto se logra con algo llamado la matriz homografica Alt text

Si aplicamos esta matriz a cualquier plano 2D obtendremos la posición que debera tener en referencia a la imagen que estamos buscando. Por lo tanto obtendremos lo siguiente.
Alt text

Renderizar cualquier objeto de blender en nuestro proyecto.

Esta parte del proyecto esta altamente basada en la serie de videos "Code-It-Yourself! 3D Graphics Engine" de javidx9

[Code-It-Yourself! 3D Graphics Engine]

Todo

  • Poner mas lindas las imágenes
  • Implementar el motor de render a la lógica de AR
  • Implementar una lógica de markerless AR

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published