Précision de mesure de distance relative entre un ensemble de repères (application de réalité augmentée)

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

Question

Le mot Let je un ensemble de 5 marqueurs. Je suis en train de trouver les distances relatives entre chaque marqueur à l'aide d'un cadre de réalité augmentée tels que ARToolkit . Dans mon thee d'alimentation de la caméra 20 premières images me montrent les 2 premiers marqueurs seulement pour que je puisse travailler la transformation entre les 2 marqueurs. La seconde 20 images me montrent les 2e et 3e marqueurs seulement et ainsi de suite. Les 20 dernières images me montrent les 5e et 1er marqueurs. Je veux construire une carte 3D des positions de marqueurs de tous les 5 marqueurs.

Ma question est, en sachant qu'il y aura des inexactitudes avec les distances en raison de la faible qualité du flux vidéo, comment puis-je réduire les inexactitudes étant donné toutes les informations que j'ai réunis?

Mon approche naïve serait d'utiliser le premier marqueur comme point de base, à partir des 20 premiers cadres prennent la moyenne des transformations et placer le 2ème marqueur et ainsi de suite pour les 3 et 4. Pour la 5ème place du marqueur, il inbetween le 4ème et le 1er en le plaçant au milieu de la moyenne des transformations entre le 5ème et le 1er et le 4ème et 5ème. Cette sensation approche I a un biais vers le premier placement de marqueur bien et ne prend pas en compte la caméra voir plus de 2 marqueurs par image.

En fin de compte, je veux que mon système soit capable de travailler sur la carte du nombre x de marqueurs. Dans une trame donnée jusqu'à marqueurs x peuvent apparaître et il y a des erreurs non systémiques en raison de la qualité d'image.

Toute aide en ce qui concerne l'approche correcte à ce problème serait grandement apprécié.

Edit: Plus d'informations sur le problème:

Disons que la carte de RealWorld est la suivante:

entrer image description ici

Disons que je reçois 100 lectures pour chacune des transformations entre les points représentés par les flèches dans l'image. Les valeurs réelles sont écrites au-dessus des flèches.

Les valeurs que j'obtenir ont une erreur (supposé suivre une distribution gaussienne sur la valeur réelle). Par exemple, l'une des lectures obtenues pour le marqueur de 1 à 2 pourrait être x: y 9,8: 0,09. Étant donné que j'ai toutes ces lectures comment puis-je estimer la carte. Le résultat devrait idéalement être aussi proche des valeurs réelles que possible.

Mon approche naïve a le problème suivant. Si la moyenne des transformations du 1 au 2 est légèrement le placement de 3 peut être désactivé même si la lecture de 2 à 3 est très précis. Ce problème est illustré ci-dessous:

entrer image description ici

Les verts sont les valeurs réelles, les noirs sont les valeurs calculées. Le moyen de transformation de 1 à 2 x est: 10 y:. 2

Était-ce utile?

La solution

Vous pouvez utiliser un méthode moindres carrés, pour trouver la transformation qui donne le meilleur ajustement à toutes vos données. Si vous voulez simplement la distance entre les marqueurs, c'est juste la moyenne des distances mesurées.

En supposant que vos positions de marquage sont fixés (par exemple, à un corps rigide fixe), et que vous voulez leur position relative, alors vous pouvez simplement enregistrer leurs positions et leur moyenne. S'il y a un risque de confusion avec un marqueur autre, vous pouvez les suivre d'une image à et utiliser la continuité de chaque emplacement du marqueur entre ses deux périodes pour confirmer son identité.

Si vous attendez votre corps rigide pour se déplacer (ou si le corps n'est pas rigide, et ainsi de suite), alors votre problème est beaucoup plus difficile. Deux marqueurs à la fois ne suffit pas pour fixer la position d'un corps rigide (qui nécessite trois). Toutefois, notez que, à chaque transition, vous avez l'emplacement de l'ancien marqueur, le nouveau marqueur, et le marqueur en continu, à peu près en même temps. Si vous avez déjà un emplacement prévu sur le corps pour chacun de vos marqueurs, cela devrait fournir une bonne estimation de la pose rigide tous les 20 images.

En général, si votre corps est en mouvement, la meilleure performance exigera une sorte de modèle pour sa dynamique, ce qui devrait être utilisé pour suivre sa pose au fil du temps. Compte tenu d'un modèle dynamique, vous pouvez utiliser un filtre Kalman pour faire le suivi; les filtres de Kalman sont bien adaptés à intégrer le genre de données que vous décrivez.

En incluant les emplacements de vos marqueurs dans le cadre du vecteur d'état de Kalman, vous pourriez être en mesure d'être en mesure de déduire leurs positions relatives à partir de données purement capteur (qui semble être votre objectif), plutôt que d'exiger ces informations a priori . Si vous voulez être en mesure de traiter un nombre arbitraire de marqueurs efficacement, vous devrez peut-être venir avec une mutation intelligente des méthodes habituelles; le problème semble avoir été conçu pour éviter de solution par des procédés classiques de décomposition tels que le filtrage de Kalman séquentiel.


Modifier, selon les commentaires ci-dessous:

Si vos marqueurs donnent une pleine pose 3D (au lieu d'une position 3D), les données supplémentaires, il sera plus facile de maintenir des informations précises sur l'objet que vous suivez. Toutefois, les recommandations ci-dessus appliquent encore:

  • Si le corps marqué est fixé, l'utilisation des moindres carrés ajustement de toutes les données de trame correspondant.
  • Si le corps marqué se déplace, modéliser la dynamique et en utilisant un filtre de Kalman.

De nouveaux points qui viennent à l'esprit:

  • Essayer de gérer une chaîne de transformations par rapport ne peut pas être la meilleure façon d'aborder le problème; comme vous le notez, elle est sujette à erreur accumulée. Cependant, il est pas nécessairement une mauvaise façon, que ce soit, aussi longtemps que vous pouvez mettre en œuvre les mathématiques nécessaires dans ce cadre.
  • En particulier, les moindres carrés ajustement devrait fonctionner parfaitement avec une chaîne ou un cycle de poses relatives.
  • Dans tous les cas, soit pour un des moindres carrés, ou pour le suivi du filtre de Kalman, une bonne estimation de l'incertitude de vos mesures permettra d'améliorer les performances.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top