# How is the basic pipeline of 3D reconstruction from more than two images?

I am doing 3D reconstruction using OpenCV with Python and I have already reconstructed the 3D structure from two images. Let us named the images as image_1 and image_2. So, I want to add another view from the third image, image_3. What I understood, it has to do with Bundle Adjustment, but I have a problem on understanding how things should be done.

So, to make my pipeline more simple, I have decided to use the Python's sba module, which is explained as the wrapper for Lourakis' sparse bundle adjustment C library. Basically, what I understood is that I will need to pass the 3D points of a structure, and their corresponding 2D points from multiple images. For the example given with source code, it looks something like this:

|0.188427 -0.036568 -0.851884| 3 | 0 |500.7 521.2| 1 |902.8 974.4| 2 |147.9 580.2|


From the first to eighth column, this is what it represents:

1. The 3D point
2. The number of views/images that 3D point visible
3. Mask (here means that 3D point is visible in the first image (0'th)
4. The 2D points of that 3D point in the first image

The 5th, 6th, 7th, 8th column all have the same meaning as the 3rd and 4th column.

As for my condition, I have made a 3D reconstruction called structure_1 from image_1 and image_2. Then I have also made a 3D reconstruction called structure_2 from image_2 and image_3.

Then, consider that a point called point_1 is visible in image_1, image_2 and image_3.

This means, I have two 3D points (from structure_1 and structure_2) for point_1. How should I make it as the example in the source code? The source code already has a 3D point from three views as shown in above snippet.

edit retag close merge delete

Sort by ยป oldest newest most voted

search engine is your friend with good keywords : "Multiple view geometry in computer vision" Richard Hartley Andree Zisseman (p 363)

more

I have read a bit on that topic (I own that book). But I believe that is just for 3 images. How if the images are arbitrary? Any idea? I also have made some search and looks like OpenCV's solvePnP can be used, although I am not really sure how. Any links/keywords that I can try to look more? That would be very helpful.

( 2017-03-10 00:07:36 -0600 )edit

Official site

GitHub

Wiki

Documentation