La conversion de la disparité de la carte de points 3D
J'ai une disparité carte d'une image .J'ai besoin de convertir un ensemble de points 3D et les normales.Comment puis-je faire et est-il un exemple de mise en œuvre existantes qui peuvent
Quand j'ai fait cela avant j'avais un profondeur de la carte (ou de la disparité de la carte si vous préférez) et - la connaissance de l'origine de la caméra de calibrage a été en mesure d'effectuer la re-projection en arrière dans R3 pour les points.
Savoir le voisinage de chaque point (de par leur origine pixels voisins), il est tout à fait banale pour ensuite créer une base de triangulation pour vous connecter.
(Si vous ne savez pas ce que vous auriez à tenter une forme de triangulation de Delaunay ou d'autres plus avancées de l'algorithme...)
Assurez-vous d'obtenir au sommet de l'ordre correct pour chaque triangle pour s'assurer que toutes les normales point de la bonne façon/manière cohérente.
Meshlab est très pratique pour tout complément d'un post-traitement.
Si vous avez seulement besoin d'avoir le point 3d cette fonction peut être améliorée en vitesse... si vous en avez besoin, de voter et je vais ajouter de la vitesse de code.
cet extrait de code, vous aidera, je l'espère. Ici l'explication de code est le suivant: Lorsque je redresse les images de droite et de gauche, de caméras et de définir les BMstate j'ai passé en cvFindStereoCorrespondenceBM pour trouver la disparité de l'image. Suivant la définition d'une matrice de dimension 3 pour stocker les points 3D comme Image3D. Par la fonction opencv cvReprojectImageTo3D passant le Q de la matrice de laquelle nous obtenons le stéréo de la correspondance que nous obtenir un Ensemble de points 3D correspondant à cette image 2D
Votre réponse serait plus utile si elle expliqué pourquoi c'est une chose utile à faire, pratiquement purs extraits de code ont tendance à ne pas obtenir beaucoup de upvotes. Donald Boursiers ,Édité l'explication
@ 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. Ce n'est pas un "code de la bibliothèque", mais un coup de site. L'ajout de l'explication est la meilleure façon de répondre à une question non seulement les questions de code, mais comment en est-il de travail et le principe de fonctionnement sont aussi importants que la solution à un problème.
Une disparité carte vous donne x, y et f(z). Vous avez besoin de le calibrage de la caméra afin de savoir comment transformer disparité de z.
J'ai une disparité carte de une image
Une disparité carte d'une image généralement être complètement à plat...
Non, une disparité de la carte est un ensemble de (x, y, disparité), avec x et y dans l'espace image, que vous pouvez transformer en un ensemble de points 3d, l'OP est de savoir comment faire. Vous avez raison, je vais changer ma réponse.
La Gnu Surface Triangulée bibliothèque?
Quand j'ai fait cela avant j'avais un profondeur de la carte (ou de la disparité de la carte si vous préférez) et - la connaissance de l'origine de la caméra de calibrage a été en mesure d'effectuer la re-projection en arrière dans R3 pour les points.
Savoir le voisinage de chaque point (de par leur origine pixels voisins), il est tout à fait banale pour ensuite créer une base de triangulation pour vous connecter.
(Si vous ne savez pas ce que vous auriez à tenter une forme de triangulation de Delaunay ou d'autres plus avancées de l'algorithme...)
Assurez-vous d'obtenir au sommet de l'ordre correct pour chaque triangle pour s'assurer que toutes les normales point de la bonne façon/manière cohérente.
Meshlab est très pratique pour tout complément d'un post-traitement.
OriginalL'auteur tiluki
Jetez un oeil à cette fonction OpenCV: http://docs.opencv.org/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#reprojectimageto3d
OriginalL'auteur Martin Beckett
cet extrait de code, vous aidera, je l'espère. Ici l'explication de code est le suivant: Lorsque je redresse les images de droite et de gauche, de caméras et de définir les
BMstate
j'ai passé encvFindStereoCorrespondenceBM
pour trouver la disparité de l'image. Suivant la définition d'une matrice de dimension 3 pour stocker les points 3D commeImage3D
. Par la fonction opencvcvReprojectImageTo3D
passant le Q de la matrice de laquelle nous obtenons le stéréo de la correspondance que nous obtenir un Ensemble de points 3D correspondant à cette image 2DDonald Boursiers ,Édité l'explication
OriginalL'auteur nbsrujan
OriginalL'auteur Snehal kadam
Une disparité carte vous donne x, y et f(z). Vous avez besoin de le calibrage de la caméra afin de savoir comment transformer disparité de z.
Une disparité carte d'une image généralement être complètement à plat...
Vous avez raison, je vais changer ma réponse.
OriginalL'auteur koan