How can I store the feature descriptors for all 3D points found in Structure from Motion?

조회 수: 4 (최근 30일)
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.

답변 (1개)

Qu Cao
Qu Cao 2021년 4월 20일
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
Markus Iversflaten
Markus Iversflaten 2021년 4월 22일
I've managed to extract the features that were used to create the 3D points now. However, it seems that the features are not ordered correctly, even though I am extracting them in the order of the pointTracks:
features = zeros(length(tracks),64);
for i=1:length(tracks)
track = tracks(i);
viewID = track.ViewIds(1);
index = find(track.Points(1,:) == vSet.Views.Points{viewID}.Location,1);
feature = vSet.Views.Features{viewID}(index,:);
features(i,:) = feature;
end
I believe that running this line:
xyzPoints = triangulateMultiview(tracks, camPoses, intrinsics);
might "scramble" the 3D points, so that they are no longer ordered in the same way as tracks. Am I right about this? If so, how can I remedy this?
Qu Cao
Qu Cao 2021년 4월 22일
편집: Qu Cao 2021년 4월 22일
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.

댓글을 달려면 로그인하십시오.

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by