J'ai une carte de disparité d'une image .J'ai besoin de la convertir en un ensemble de points 3D et de normales.Comment puis-je faire et existe-t-il une telle implémentation existante qui peut le faireConvertir la carte de disparité en points 3D
Répondre
La bibliothèque Gnu Triangulated Surface?
Lorsque je l'ai fait avant que j'aie une carte de profondeur (ou carte de disparité si vous préférez) et - connaissant le calibrage original de la caméra - ai pu effectuer la re-projection en R3 pour les points. Connaissant le voisinage de chaque point (par leurs pixels voisins d'origine), il est assez trivial de créer ensuite une triangulation de base pour les relier.
(Si vous ne saviez pas ce que vous auriez à tenter une forme de triangulation de Delaunay ou un autre algorithme plus avancé ...)
Assurez-vous que vous obtenez l'ordre de sommet correct pour chaque triangle pour assurer que toutes les les normales pointent de manière correcte/cohérente.
Meshlab est très pratique pour tout post-traitement supplémentaire.
Jetez un oeil à cette fonction OpenCV: http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#reprojectimageto3d
une carte de disparité vous donne x, y et f (z). Vous avez besoin de l'étalonnage de la caméra pour savoir comment transformer la disparité en z.
J'ai une carte de disparité de une image
Une carte de disparité d'une image serait généralement complètement à plat ...
cvFindStereoCorrespondenceBM(frame1r, frame2r, disp, BMState);
/* cvShowImage("camera1", frame1);
cvShowImage("camera2", frame2); */
// cvConvertScale(disp, disp, 16, 0);
cvNormalize(disp, vdisp, 0, 256, CV_MINMAX);
cvShowImage("disparity", vdisp);
cvReprojectImageTo3D(disp, Image3D, &_Q);
cvShowImage("depthmap",Image3D);
cet extrait de code vous aiderait j'espère. Voici l'explication du code est la suivante: Lorsque je rectifie les images des caméras droite et gauche et en définissant le BMstate
j'ai passé cela en cvFindStereoCorrespondenceBM
pour trouver l'image de disparité. Ensuite, définissant une matrice de dimension 3 pour stocker les points 3D comme Image3D
. Par la fonction dans OpenCV cvReprojectImageTo3D
passant la matrice Q que nous obtenons en correspondance stéréo, on obtient l'ensemble des points 3D correspondant à cette image 2D
Votre réponse serait plus utile si elle explique _why_ c'est une chose utile à faire; les extraits de code virtuellement purs ont tendance à ne pas avoir beaucoup de upvotes. –
Donald Fellows, Édité l'explication – nbsrujan
@ here is calculation which may help you
% %Z = fB/d
% where
% Z = distance along the camera Z axis
% f = focal length (in pixels)
% B = baseline (in metres)
% d = disparity (in pixels)
% % After Z is determined, X and Y can be calculated using the usual projective camera equations:
%
% X = uZ/f
% Y = vZ/f
% where
% u and v are the pixel location in the 2D image
% X, Y, Z is the real 3d position
% Note: u and v are not the same as row and column. You must account for the image center. You can get the image center using the triclopsGetImageCenter() function. Then you find u and v by:
% u = col - centerCol
% v = row - centerRow
% Note: If u, v, f, and d are all in pixels and X,Y,Z are all in the meters, the units will always work i.e. pixel/pixel = no-unit-ratio = m/m.
il serait préférable d'ajouter quelques explications avec le code. SO n'est pas une "bibliothèque de code", mais un site d'aide. Ajouter une explication est la meilleure façon de répondre à une question, non seulement le code est important, mais comment cela fonctionne et le principe de fonctionnement est aussi important que la solution à un problème. –
- 1. Générer des points 3D à partir de la Disparité
- 2. Matlab: De la carte de disparité aux coordonnées 3D
- 3. Code de la carte de disparité?
- 4. Comment mesurer la profondeur de la carte de disparité?
- 5. convertir des points sur la carte en polygones
- 6. Disparité Discrete Cosine Transformation disparité
- 7. Opencv 3D à partir des points de la paire stéréo
- 8. Carte radar 3D en JavaScript
- 9. OpenCV2.4 python - Carte de correspondance et de disparité stéréo
- 10. distance points 3D
- 11. Conversion de points 3D à 2D
- 12. Convertir la scène 3D en vue 2D
- 13. Inverser les points 2D en 3D
- 14. Transformer des points 3D en 2D
- 15. Erreur lors de l'obtention de points 3D de Disparity
- 16. Points d'intersection entre 2 disques en 3d
- 17. Affiner les cartes de disparité?
- 18. Convertir les coordonnées de la carte en système de coordonnées
- 19. Carte en 3D avec latitude et longitude
- 20. Convertir en notation par points
- 21. Valeurs de disparité négative?
- 22. Afficher les points sur ma carte carte
- 23. trouver des points de selle en 3D heightmap
- 24. 3D aabb en tant que clé sur la carte
- 25. comment obtenir la valeur de profondeur d'une balle à partir d'une carte de disparité
- 26. Convertir tableau 2D en 3D avec PHP
- 27. Disparité de type de sérialisation WCF
- 28. Carte de profondeur de HTC EVO 3D
- 29. génération uniforme de points sur la boîte 3D
- 30. Convertir le modèle 3D en images 2D
Si vous avez seulement besoin d'avoir le point 3d cette fonction peut être améliorée de la vitesse ... si vous en avez besoin, votez et j'ajouterai le code de vitesse. –