1 / 30

Accurate Camera Calibration from Multi-view Stereo and Bundle Adjustment

Accurate Camera Calibration from Multi-view Stereo and Bundle Adjustment. Yasutaka Furukawa, University of Illinois at Urbana-Champaign, USA Jean Ponce, Ecole Normale Superieure , Paris, France Reporter : Jheng-You Lin. Outline. Introduction Imaging Model Algorithm Experimental Results.

burke
Download Presentation

Accurate Camera Calibration from Multi-view Stereo and Bundle Adjustment

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Accurate Camera Calibration from Multi-view Stereo and Bundle Adjustment Yasutaka Furukawa, University of Illinois at Urbana-Champaign, USA Jean Ponce, EcoleNormaleSuperieure, Paris, France Reporter:Jheng-You Lin

  2. Outline • Introduction • Imaging Model • Algorithm • Experimental Results

  3. Introduction • Multi-view stereo(MVS) • Bundle Adjustment • Calibration problem

  4. Introduction • Multi-view stereo(MVS) • PMVS(Patched-based Multi-view Stereo) [Furukawa and Ponce, 2007] • Bundle Adjustment • Calibration problem Images → patches (oriented points set and visible information)

  5. Introduction • Multi-view stereo(MVS) • Bundle Adjustment • Fine tune the positions of the scene points and the entire set of camera parameters • Standard Bundle Adjustment (SBA) • Calibration problem

  6. Introduction • Multi-view stereo(MVS) • Bundle Adjustment • Calibration problem • Chart-based calibration (CBC) • Tasi, 1987 and Bouguet 2008 • Structure from motion (SFM) • Ineffective for poorly texture and widely separated images • Selection of feature correspondence (SFC)

  7. Introduction • Contribution • Better feature localization (considered surface geometry estimations) • Better coverage and dense feature correspondences (by visible information and surface geometry) • Can handle weak texture and accumulate errors (two difficult issue for SFM/BA)

  8. Imaging Model • Standard perspective projection model

  9. Imaging Model • Standard perspective projection model Distortion is supposed to be negligible.

  10. Imaging Model • SBA (minimizing the sum of squared reprojection errors)

  11. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). Sub-sample feature correspondences. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0). Filter out features that have moved too much. Refine { Pi, Kj,Rj,tj } by a standard BA with {Pij} . Update Er by the mean and std of reprojection errors.

  12. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). Sub-sample feature correspondences. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0). Filter out features that have moved too much. Refine { Pi, Kj,Rj,tj } by a standard BA with {Pij} . Update Er by the mean and std of reprojection errors.

  13. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). Sub-sample feature correspondences. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0). Filter out features that have moved too much. Refine { Pi, Kj,Rj,tj } by a standard BA with {Pij} . Update Er by the mean and std of reprojection errors.

  14. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). PMVS is robust to errors in camera parameters as long as the image resolution matches the corresponding reprojection errors. Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). Sub-sample feature correspondences. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij: Pij ← argmaxPijNCC(qi j,qi j0).

  15. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). Sub-sample feature correspondences. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0). Filter out features that have moved too much. Refine { Pi, Kj,Rj,tj } by a standard BA with {Pij} . Update Er by the mean and std of reprojection errors.

  16. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). project the points Pi into the images(visible) to obtain an initial set of image correspondences. Pij = F(Pi, Cj). Sub-sample feature correspondences. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0).

  17. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). Sub-sample feature correspondences. divide each image into 10x10 blocks, each block randomly select at most ε features. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) …

  18. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). Sub-sample feature correspondences. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0). Filter out features that have moved too much. Refine { Pi, Kj,Rj,tj } by a standard BA with {Pij} . Update Er by the mean and std of reprojection errors.

  19. Algorithm For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0).

  20. Algorithm For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0). a patch Qi is represented by a δxδ grid of 3D points.

  21. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). Sub-sample feature correspondences. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0). Filter out features that have moved too much. Refine { Pi, Kj,Rj,tj } by a standard BA with {Pij} . Update Er by the mean and std of reprojection errors.

  22. Algorithm Input: Cameras parameters { Kj,Rj,tj } and expected reprojection error Er. Output: Refined cameras parameters { Kj,Rj,tj } . Build image pyramids for all the images. Compute a level L to run PMVS: L ← max(0, floor(log2Er)). Repeat four times Run PMVS on level L of the pyramids to obtain patches {Pi } and their visibility information { Vi } . Initialize feature locations: Pij← F(Pi, { Kj,Rj,tj } ). Sub-sample feature correspondences. For each feature correspondence {Pij | j ∈ Vi } Identify a reference camera Cj0 in Vi with the minimum foreshortening factor. For each non-reference feature Pij( j ∈ Vi, j ≠ j0 ) For L∗ ← L down to 0 Use level L∗ of image pyramids to refine Pij : Pij ← argmax PijNCC(qi j,qi j0). Filter out features that have moved too much. Refine { Pi, Kj,Rj,tj } by a standard BA with {Pij} . Update Er by the mean and std of reprojection errors.

  23. Experimental Results - Datasets

  24. Experimental Results - Datasets CBC (turn table) SFM Add noise Manual Above silhouettes are manually extracted using Photoshop except “dino”.

  25. Experimental Results The proposed method is able to match features in many images even without salient textures. (use of surface geometry and visible information)

  26. Experimental Results • It is impossible to give a full quantitative evaluation.

  27. Experimental Results • It is impossible to give a full quantitative evaluation. • Mean and standard deviation of reprojection errors.

  28. Experimental Results • It is impossible to give a full quantitative evaluation. • Epipolar geometry

  29. Experimental Results • It is impossible to give a full quantitative evaluation. • Epipolar geometry

  30. Experimental Results • Running time in minutes in one iteration. • Dual Xeon 3.2GHz

More Related