Comment reconstruire une structure 3D à partir d'un ensemble d'images?
24
J'ai un ensemble de contours (ensemble de segments de ligne) regroupés de la manière suivante:
Sje= { I0, Jeπ4, Je2 π4, … , Je7 π4}
où
désigne une séquence de photos d'un objet concret. Sje
désigne une image, avec j t h point de vue ( j = 0 signifie vue de face). jejjt hj = 0
Voici un exemple de (vue arrière): jeπ
Comment puis-je reconstruire la structure 3D d'un objet avec un donné ?Si
Quelqu'un peut-il m'indiquer certains articles ou même me donner des mots clés? Je sais qu'il y a beaucoup d'articles qui fonctionnent avec des nuages de points et ainsi de suite, mais ceux-ci ne fonctionnent pas car je travaille avec des lignes.
En fait, c'est un sujet assez difficile. La reconstruction 3D classique à vues multiples traite de la correspondance des points en premier lieu, c'est-à-dire de trouver le même point sur chaque image. Compte tenu des paramètres de la caméra (vue) pour chaque image, le point 3D d'origine peut être reconstruit. (À l'aide d'un laser ou d'un projecteur, la scène peut être éclairée afin que l'appariement puisse être fait relativement facilement.)
Dans le livre, il y a une section sur le tenseur trifocal, qui est une contrainte multilinéaire entre 3 vues. Il contient non seulement des contraintes de correspondance de point mais aussi de ligne. Il peut très bien être utilisé pour la reconstruction de bâtiments.
Ainsi, vos contours doivent être adaptés en premier lieu et peuvent peut-être être reconstruits en connaissant les paramètres de la caméra (l'étalonnage de la caméra est également couvert dans le livre). Ensuite, vous aurez des contours en 3D mais rien de plus. Pour les surfaces réelles, vous devez faire une correspondance de points dense. Bien que le tenseur que j'ai mentionné semble bon, il est utilisé pour les lignes droites et je suis sûr qu'une voiture moderne a des lignes courbes partout.
Je ne sais pas comment vous avez obtenu ces contours, mais en voyant l'image que vous avez publiée, je suis assez sceptique quant à la robustesse de cet algorithme, donc la reconstruction sera mauvaise.
Une autre méthode qui m'est venue à l'esprit est la sculpture visuelle de la coque ou de l'espace . Le calcul des contours doit également être effectué. En exécutant la méthode sur chaque contour, vous pouvez avoir le modèle.
Je ne vois pas comment vous obtenez un point 3D hors contour par projection. Il existe des techniques de modélisation 3D traitant des surfaces NURBS étirées entre des splines, mais vous devez fournir des splines caractéristiques pour cela. (Peut-être qu'un artiste 3D pourrait définir le mot caractéristique dans ce contexte, mais pas moi.) Encore une fois, je pense que la forme à partir du contour (identique à la coque visuelle) peut construire un modèle approximatif pour vous. Après cela, vous pouvez l'affiner en fonction des images. Mais il n'y a aucun moyen standard pour cela.
Bálint Fodor
2
Bien que mentionné par Fodor Hartley et Zisserman, le livre vaut vraiment la peine d'être lu, c'est plus pour une compréhension générale que pour des algorithmes pratiques. C'est assez obsolète et ces méthodes ne sont pas efficaces. À propos de votre problème - la formulation du problème elle-même est très rare. Comme cela a été mentionné par Fodor, commencer par faire correspondre les points de fonction au lieu des contours est beaucoup plus facile. En cas de points, la meilleure vue d'ensemble des méthodes modernes disponibles est l'article de Triggs "Bundle Adjustment - A Modern Synthesis". Mais avant d'utiliser l'ajustement de bundle, vous devriez faire correspondre le point correspondant sur les images en utilisant quelque chose comme SIFT ou la correspondance de modèles. Google pour la reconstruction 3Dpour des exemples de quelques méthodes complètes. Vous pouvez également utiliser des packages open source pour cela, il y en a plusieurs disponibles.
Si vous insistez pour utiliser des contours, le problème est beaucoup plus difficile, mais toujours (à peine) traitable. Vous devez d'abord identifier et faire correspondre les contours correspondants dans toutes les images, puis écrire la fonction de coût - de la somme des erreurs de reprojection pour chaque groupe de contours correspondants en fonction de la position de la caméra et de l'orientation de chaque image. Après cela, trouvez l'ensemble de position de la caméra qui minimise cette fonction de coût. Chaque étape de ce processus est extrêmement difficile, et il n'y a pas de bonne vue d'ensemble comme Triggs. Vous pouvez rechercher sur Google certains articles pertinents comme une combinaison de termes "contours" "contours correspondant" "ajustement de l'ensemble" "erreur de reprojection" "reconstruction 3D".
Bien qu'il soit certainement plus facile de gérer les fonctionnalités de type SIFT, il y a un problème que SIFT dans mon domaine attrape souvent des ombres / réflexions sur la surface brillante des voitures, donc en utilisant SIFT, j'obtiens une quantité énorme de fonctionnalités de bruit qui ne dépendent pas d'un réel forme de voiture donc j'ai une diminution de la précision.
om-nom-nom le
Vous pouvez essayer une approche basée sur un modèle si vous savez que vous regardez la voiture. Paramétrez le modèle de voiture générique et essayez de l'adapter à l'image en utilisant tous les pixels de l'image. Écrire la fonction de coût en fonction des paramètres de la caméra et du paramètre du modèle de voiture et les minimiser. Cela peut fonctionner (ou non) - vous semblez avoir un problème assez difficile.
mirror2image
Malheureusement, je n'ai pas compris ce que vous proposiez de faire. Veuillez fournir un exemple (il peut s'agir d'un article externe, d'un travail connexe ou de quelque chose comme ça).
Découvrez la reconstruction du modèle à partir d'images, ce qui est un peu différent de ce que vous faites, mais je parle de la façon de passer des images à un modèle 3D. Consultez également MeshLab , il contient des algorithmes de reconstruction dans lesquels vous pourrez peut-être alimenter vos données.
Bien que mentionné par Fodor Hartley et Zisserman, le livre vaut vraiment la peine d'être lu, c'est plus pour une compréhension générale que pour des algorithmes pratiques. C'est assez obsolète et ces méthodes ne sont pas efficaces. À propos de votre problème - la formulation du problème elle-même est très rare. Comme cela a été mentionné par Fodor, commencer par faire correspondre les points de fonction au lieu des contours est beaucoup plus facile. En cas de points, la meilleure vue d'ensemble des méthodes modernes disponibles est l'article de Triggs "Bundle Adjustment - A Modern Synthesis". Mais avant d'utiliser l'ajustement de bundle, vous devriez faire correspondre le point correspondant sur les images en utilisant quelque chose comme SIFT ou la correspondance de modèles. Google pour la reconstruction 3Dpour des exemples de quelques méthodes complètes. Vous pouvez également utiliser des packages open source pour cela, il y en a plusieurs disponibles.
Si vous insistez pour utiliser des contours, le problème est beaucoup plus difficile, mais toujours (à peine) traitable. Vous devez d'abord identifier et faire correspondre les contours correspondants dans toutes les images, puis écrire la fonction de coût - de la somme des erreurs de reprojection pour chaque groupe de contours correspondants en fonction de la position de la caméra et de l'orientation de chaque image. Après cela, trouvez l'ensemble de position de la caméra qui minimise cette fonction de coût. Chaque étape de ce processus est extrêmement difficile, et il n'y a pas de bonne vue d'ensemble comme Triggs. Vous pouvez rechercher sur Google certains articles pertinents comme une combinaison de termes "contours" "contours correspondant" "ajustement de l'ensemble" "erreur de reprojection" "reconstruction 3D".
la source
Découvrez la reconstruction du modèle à partir d'images, ce qui est un peu différent de ce que vous faites, mais je parle de la façon de passer des images à un modèle 3D. Consultez également MeshLab , il contient des algorithmes de reconstruction dans lesquels vous pourrez peut-être alimenter vos données.
la source