2011-12-05 22 views
6

Digamos que tengo un conjunto de 5 marcadores. Estoy tratando de encontrar las distancias relativas entre cada marcador usando un marco de realidad aumentada como ARToolkit. En mi cámara, los primeros 20 fotogramas me muestran los primeros 2 marcadores solo para poder calcular la transformación entre los 2 marcadores. Los segundos 20 fotogramas me muestran solo los marcadores 2 y 3, y así sucesivamente. Los últimos 20 cuadros me muestran los marcadores 5 y 1. Quiero construir un mapa en 3D de las posiciones de los marcadores de los 5 marcadores.Medir con precisión la distancia relativa entre un conjunto de fiduciales (aplicación de realidad aumentada)

Mi pregunta es, sabiendo que habrá inexactitudes con las distancias debido a la baja calidad del video, ¿cómo puedo minimizar las imprecisiones dada toda la información que he reunido?

Mi enfoque ingenuo sería utilizar el primer marcador como punto base, de los primeros 20 fotogramas tomar el promedio de las transformaciones y colocar el 2 ° marcador y así sucesivamente para el 3 ° y 4 °. Para el quinto marcador colóquelo entre el 4 y el 1 colocándolo en el medio de las transformaciones entre el 5 ° y el 1 °, el 4 ° y el 5 °. Sin embargo, creo que este enfoque tiene un sesgo hacia la primera ubicación del marcador y no tiene en cuenta que la cámara vea más de 2 marcadores por cuadro.

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

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

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

permite decir el mapa del mundo real es como sigue:

enter image description here

Digamos que tengo 100 lecturas para cada una de las transformaciones entre el puntos según lo representado por las flechas en la imagen. Los valores reales están escritos arriba de las flechas.

Los valores que obtengo tienen algún error (se supone que sigue 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 puedo estimar el mapa? El resultado ideal debería ser lo más cercano posible a los valores reales.

Mi enfoque ingenuo tiene el siguiente problema. Si el promedio de las transformaciones de 1 a 2 está un poco apagado, la ubicación de 3 puede estar desactivada aunque la lectura de 2 a 3 sea muy precisa. Este problema se muestra a continuación:

enter image description here

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

+0

¿Quizás es mejor en dsp.stackexchange.com? – endolith

Respuesta

0

Puede usar el método least-squares para encontrar la transformación que mejor se adapte a todos sus datos. Si todo lo que quiere es la distancia entre los marcadores, este es solo el promedio de las distancias medidas.

Suponiendo que sus posiciones de marcador son fijas (por ejemplo, a un cuerpo rígido fijo), y desea su posición relativa, entonces simplemente puede registrar sus posiciones y promediarlas.Si existe la posibilidad de confundir un marcador con otro, puede rastrearlos de cuadro a cuadro 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 está rígido, y así sucesivamente), entonces su problema es mucho 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 marcador anterior, 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 está moviendo, el mejor rendimiento requerirá algún tipo de modelo para su dinámica, que se debe utilizar para seguir su postura con el tiempo. Dado un modelo dinámico, puede usar un Kalman filter para hacer el seguimiento; Los filtros de Kalman están bien adaptados para integrar el tipo de datos que describes.

Al incluir las ubicaciones de sus marcadores como parte del vector de estado de Kalman, es posible que pueda deducir su ubicación relativa a partir de datos puramente del sensor (que parece ser su objetivo), en lugar de requerir esta información. a priori. Si desea poder manejar una cantidad arbitraria de marcadores de manera eficiente, es posible que deba encontrar alguna mutación inteligente de los métodos habituales; su problema parece estar 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 plantean un completo 3D (en lugar de sólo una posición 3D), los datos adicionales hará que sea más fácil de mantener información precisa sobre el objeto estás rastreando Sin embargo, las recomendaciones anteriores aún se aplican:

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

nuevos puntos que vienen a la mente:

  • Tratar de manejar una cadena de transformaciones relativas pueden no ser la mejor manera de abordar el problema; como nota, es propenso a errores acumulados. 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 de filtros Kalman, una buena estimación de la incertidumbre de sus mediciones mejorará el rendimiento.
+0

Gracias por la respuesta, Las posiciones del marcador son fijas. La única información que tengo por cuadro es la transformación 3D entre los marcadores que se muestran en el marco. Los errores probablemente serán de una distribución gaussiana. En realidad, no tengo las posiciones de los marcadores, pero puedo distinguir un marcador de otro. – jzz

+0

Si entiendo correctamente, está haciendo un seguimiento óptico de, como máximo, 2 puntos a la vez. No creo que esto proporcione suficiente información para una transformación completa en 3D. ¿No obtendrás, en el mejor de los casos, datos de posición 3D para tus 2 marcadores? – comingstorm

+0

Cada uno de mis marcadores es en realidad un cuadrado, así que puedo estimar la posición de la cámara en relación con cada marcador en función de las 4 esquinas del fiducial. Similar a esto: [link] (http://www.hitl.washington.edu/artoolkit/documentation/tutorialcamera.htm) – jzz

Cuestiones relacionadas