How to test SfM for multiple view?

Hello everyone, I try to test the SfM with my own data. I want to know
(1) in this command, load (fullfile(imageDir,'cameraParams.mat')) , Is it need to do camera calibration to load cameraParams.mat? If need, I already try the camera calibration toolbox in matlab, but it's not ok. So, I do the cameraParams.mat in SfM demo folder is moved to my current own image data folder. And then
(2) i use helperEstimateRelativePose , but they showed this error
Error using helperEstimateRelativePose (line 70)
Unable to compute the Essential matrix
Error in sfM_multi_own (line 39) [relativeOrient, relativeLoc, inlierIdx] = helperEstimateRelativePose(matchedPoints1, matchedPoints2, cameraParams);
I don't know how to do and I'm really confused. Please help me! I want to listen for your suggestion seriously.

6 Comments

now I face the same error as you.
i don't know how to resolve this until now.
Victor Medina
Victor Medina on 20 Oct 2017
Edited: Victor Medina on 20 Oct 2017
I just managed to solve this same error. In my case, it seems I was using too many images, so the resulting equation system was overdetermined and, therefore, the matrix could not be computed. I just tested with a number of images similar to the example (6, in my case) and enough camera movement from frame to frame, and it works like it should.
Hope this helps.
@Victor Medina ... how'd you solve this problem? i cannot solve it even after number of images reduced to 6. still it gives me the same error. can you please help me out sir?
same error please help
Have you guys solved this?
I modified the helperEstimateRelativePose function decreased the confidence and increased the max distance but still getting the same error

Sign in to comment.

Answers (1)

jhz
jhz on 20 Sep 2018
Consider increasing the maximum distance or decreasing the desired confidence. You can do this by modifying the Matlab built-in function helperEstimateRelativePose.m: line 43. Then you can add as many images as you want. After modification, it should look like this:
[E, inlierIdx] = estimateEssentialMatrix(matchedPoints1, matchedPoints2,...
cameraParams, 'Confidence', 50, 'MaxDistance', 5);
But be careful editing the built-in functions. In my case, I modified the function and saved into another folder by another name and add that folder into path. I hope this will help someone.

Asked:

on 7 Sep 2017

Community Treasure Hunt

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

Start Hunting!