Openmvg: Processing Large Dataset.

Created on 14 Feb 2018  ·  18Comments  ·  Source: openMVG/openMVG

I will be posting some of results while processing large number of images. I hope other who are processing large dataset may find it useful
Thanks

  • I have tested some commercial softwares and compared with openmvg results. I observed that openMVG outperform all other SFM softwares that I have used in terms of robustness, and accuracy many times.

Most helpful comment

@Yannnnnnnnnnnn I didnt go through the code but when I compared SIFT and SIFT Anatomy I got much less noise in sparse point cloud output. So after that day I started using SIFT Anatomy instead of SIFT.

All 18 comments

Project 1(Kanpur)
Processing 1775 images 24MP each.
Camera - Sony A6000
Type - Corridor
PC - Ryzen 1700X, 32 GB Ram
OpenMVG -1.3 Global SFM
My Pipeline -

  1. I have entered focal length data already.
  2. SIFT Anatomy(since it produce more accurate sparse Point cloud than SIFT) features kept at High.
  3. Performed Global SFM.

36164812-84ab39ce-1113-11e8-90af-127bda08654c

Problems-

  1. You can see in the image where camera has clicked images(blue dot) and where SFM has found optimised camera location (green). My Path was straight but SFM thought it as curved.

Possible solutions-

  1. Splitting images into number of small parts.
  2. Performing Incremental SFM(though I doubt it will work with these number of images)
  1. SFM report.
    SfMReconstruction_Report.html.zip

  2. Python Command
    SfM_Global_mvs.txt

Project1(Kanpur)
Solution 1 ( Splitting Images into ~200 images clusters)
Results -

  1. No bowl effect.
  2. Meshlab Screenshot (Image below is of only one part)
    image
  1. Reprojection Error - 0.54
  2. SFM Report
    SFM Report.zip

Project2 (Agartala)
Images - 1026 20MP each
Camera - Phantom 4 Pro
Type - Corridor
PC - Ryzen 1700X
SFM Reults
OpenMVG - 1.3 Global SFM

  1. SFM Report -
    SFM_Report.zip

  2. Reprojection Error - 0.48

  3. Meshlab Screenshot
    image

  4. Error between GPS X,Y,Z and SFM Computed X,Y,Z
    Error.zip

Thx you very much for the sharing. Appreciated!
Your results seems pretty encouraging!

Project3 (Jabalpur)
Images - 3601, 24MP each
Camera - Sony A6000
Type - Grid
Area - 6.5Km2
PC - Ryzen 1700X
SFM Reults - No bowl
OpenMVG - 1.3 Global SFM

  1. SFM Report
    sfm_report.zip
  1. Reprojection Error - 0.40

  2. Meshlab Screenshot
    image

  3. Time - Most of the time took in Matching and Bundle Adjustment
    Matching - 2 Hours 51 Minutes
    Global Bundle Adjustment - 4 Hour 31 Minutes

@ManishSahu53 Can you explain why the SIFT Anatomy is better? Thanks^_^

@Yannnnnnnnnnnn I didnt go through the code but when I compared SIFT and SIFT Anatomy I got much less noise in sparse point cloud output. So after that day I started using SIFT Anatomy instead of SIFT.

@ManishSahu53 Thx, I will test this on my dataset to see the whether it works.

@Yannnnnnnnnnnn Do share your results here. Thanks

@ManishSahu53 I tested under five datasets.
And my result was SIFT_ANATOMY(3)>SIFT(2).
Actually I didn't find huge difference between them.

compare_sift_anatomy_and_sift.tar.gz

@Yannnnnnnnnnnn trying checking sparse point too. You might see less outliers in case of SIFT_ANATOMY than SIFT. I got much better results when I used large dataset (~1000images).

@Yannnnnnnnnnnn Can you share the results as an array here?
It will avoid people to look and dig inside all the html report.

@ManishSahu53 Hi Manish. How did you do the clustering part? Could you please post some pseudocode or code for this pipeline for clustering for large datasets? Thanks!

@pogilon I did not do any clustering. I ran Global BA.

@ManishSahu53 Thanks. On your comments on Feb 14, you said you did clustering to fix the bowl effect. Could you please post some pseudocode? Thanks!

@AbegNext Clustering is already available in openMVG. I did not do any modification.

@ManishSahu53 can you please share the dataset, I'm working on the similar project, that would be very helpful.

@pmoulon @ManishSahu53 Do you have any update when processing large dataset? I have the same issue when processing dataset with 1300 images, and the sparse point cloud after globalSfM is not good. But if split it into two parts and run globalSfM seperately, the result is normal. How can I get a normal result when running the whole dataset during globalSfM? Thanks a lot!

Was this page helpful?
0 / 5 - 0 ratings