Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

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.