Midiendo con precisión la distancia relativa entre un conjunto de fiduciales (aplicación de realidad aumentada)

StackOverflow https://stackoverflow.com/questions/8379902

Pregunta

Digamos que tengo un conjunto de 5 marcadores. Estoy tratando de encontrar las distancias relativas entre cada marcador utilizando un marco de realidad aumentada como Artoolkit. En mi cámara, los primeros 20 marcos me muestran los primeros 2 marcadores solo para que pueda resolver la transformación entre los 2 marcadores. Los segundos 20 marcos me muestran solo los marcadores 2º y tercero, etc. Los últimos 20 cuadros me muestran los marcadores quinto y primer. Quiero construir un mapa 3D de las posiciones de marcadores de los 5 marcadores.

Mi pregunta es, sabiendo que habrá inexactitudes con las distancias debido a la baja calidad de la alimentación de video, ¿cómo minimizo las inexactitudes dada toda la información que he recopilado?

Mi enfoque ingenuo sería usar el primer marcador como punto base, desde los primeros 20 cuadros toman la media de las transformaciones y colocar el segundo marcador y así sucesivamente para el 3 y 4. Para el quinto marcador, colóquelo entre el 4to y el primer colocándolo en el medio de la media de las transformaciones entre la 5ta y 1ª y 4ta y 5ta. Sin embargo, este enfoque que siento tiene un sesgo hacia la primera colocación de marcadores y no tiene en cuenta la cámara que ve más de 2 marcadores por cuadro.

En última instancia, quiero que mi sistema pueda resolver el mapa de X número de marcadores. En cualquier marco dado hasta X, pueden aparecer marcadores X y hay errores no sistémicos debido a la calidad de imagen.

Cualquier ayuda con respecto al enfoque correcto de este problema sería muy apreciada.

Editar: Más información sobre el problema:

Digamos que el mapa RealWorld es el siguiente:

enter image description here

Digamos que obtengo 100 lecturas para cada una de las transformaciones entre los puntos representados por las flechas en la imagen. Los valores reales se escriben sobre las flechas.

Los valores que obtengo tienen algún error (se supone que siguen una distribución gaussiana sobre el valor real). Por ejemplo, una de las lecturas obtenidas para el marcador 1 a 2 podría ser x: 9.8 y: 0.09. Dado que tengo todas estas lecturas, ¿cómo estimo el mapa? El resultado debería estar idealmente lo más cerca posible de los valores reales.

Mi enfoque ingenuo tiene el siguiente problema. Si el promedio de las transformaciones de 1 a 2 está ligeramente fuera de la colocación de 3 puede estar apagada a pesar de que la lectura de 2 a 3 es muy precisa. Este problema se muestra a continuación:

enter image description here

Los Verdes son los valores reales, los negros son los valores calculados. La transformación promedio de 1 a 2 es x: 10 y: 2.

¿Fue útil?

Solución

Puedes usar un mínimos cuadrados Método, para encontrar la transformación que brinda el mejor ajuste a todos sus datos. Si todo lo que desea es la distancia entre los marcadores, esto es solo el promedio de las distancias medidas.

Suponiendo que las posiciones de su marcador estén fijas (por ejemplo, a un cuerpo rígido fijo), y desea su posición relativa, simplemente puede registrar sus posiciones y promediarlas. Si existe un potencial para confundir un marcador con otro, puede rastrearlos de un marco a otro y usar la continuidad de cada ubicación del marcador entre sus dos períodos para confirmar su identidad.

Si espera que su cuerpo rígido se mueva (o si el cuerpo no es rígido, y así sucesivamente), entonces su problema es significativamente más difícil. Dos marcadores a la vez no son suficientes para fijar la posición de un cuerpo rígido (que requiere tres). Sin embargo, tenga en cuenta que, en cada transición, tiene la ubicación del antiguo marcador, el nuevo marcador y el marcador continuo, casi al mismo tiempo. Si ya tiene una ubicación esperada en el cuerpo para cada uno de sus marcadores, esto debería proporcionar una buena estimación de una pose rígida cada 20 cuadros.

En general, si su cuerpo se mueve, el mejor rendimiento requerirá algún tipo de modelo para su dinámica, que debe usarse para rastrear su pose con el tiempo. Dado un modelo dinámico, puede usar un Filtro de Kalman para hacer el seguimiento; Los filtros de Kalman están bien adaptados a integrar el tipo de datos que describe.

Al incluir las ubicaciones de sus marcadores como parte del vector de estado de Kalman, es posible que pueda deducir sus ubicaciones relativas de los datos puramente del sensor (que parece ser su objetivo), en lugar de requerir esta información a priori. Si desea poder manejar un número arbitrario de marcadores de manera eficiente, es posible que deba encontrar una mutación inteligente de los métodos habituales; Su problema parece diseñado para evitar la solución mediante métodos de descomposición convencionales, como el filtrado secuencial de Kalman.


Editar, según los comentarios a continuación:

Si sus marcadores producen una pose 3D completa (en lugar de solo una posición 3D), los datos adicionales facilitarán la mantenimiento de información precisa sobre el objeto que está rastreando. Sin embargo, las recomendaciones anteriores aún se aplican:

  • Si el cuerpo etiquetado es fijo, use un ajuste de mínimos cuadrados de todos los datos de marco relevantes.
  • Si el cuerpo etiquetado se mueve, modele su dinámica y use un filtro Kalman.

Nuevos puntos que vienen a la mente:

  • Intentar manejar una cadena de transformaciones relativas puede no ser la mejor manera de abordar el problema; Como observa, es propenso al error acumulado. Sin embargo, tampoco es necesariamente una mala manera, siempre que pueda implementar las matemáticas necesarias en ese marco.
  • En particular, un ajuste de mínimos cuadrados debería funcionar perfectamente bien con una cadena o anillo de poses relativas.
  • En cualquier caso, para un ajuste de mínimos cuadrados o para el seguimiento del filtro de Kalman, una buena estimación de la incertidumbre de sus mediciones mejorará el rendimiento.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top