How can I store the feature descriptors for all 3D points found in Structure from Motion?
Mostrar comentarios más antiguos
I am running the example on Structure from Motion from MathWorks. I have managed to find 3D points from my 2D images, but I also need to store feature descriptors for each 3D point, so that I can perform 3D-2D matching later on. How do I go about this? I can save the features for each image separately, but I don't know how to later match them to each 3D point.
Respuestas (1)
Qu Cao
el 20 de Abr. de 2021
0 votos
You can use imageviewset to store the feature points associated with each view and the connections between the views. You can also use worldpointset to store the correspondences between 2-D image points and 3-D world points.
4 comentarios
Markus Iversflaten
el 20 de Abr. de 2021
pointTrack doesn't store the index of the image point. A workaround is to find the index by comparing the image [x, y] positions. Note that the positions are stored in the imageviewset. Since pointTrack stores both the view ID and the image point position, you should be able to identify the image point corresponding to a view in the pointTack. Basically, you need to do something like the following:
vSet = imageviewset;
% Add views
tracks = findTracks(vSet);
% Find the image point of the first view in the first point track
find(tracks.Points(1,:) == vSet.Views.Points{viewId})
We understand this is a pain. We will consider enahnce this feature in a feature release.
Markus Iversflaten
el 22 de Abr. de 2021
The first view in each point track may not correspond to the same view. You may need to do some debugging by inspecting the data in tracks.
In triangulateMultiview, xyzPoints and tracks have 1-to-1 correspondence. The order is not changed.
Categorías
Más información sobre Structure from Motion en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!