I am working on an open source project s2p which creates digital height model from satellite stereo imagery. The procedure of how s2p works can be roughly summarized with the following steps.

  1. Split a large stereo image pair into smaller tiles (aka windows).
  2. Use SIFT and RANSAC to find feature points and rectify each pair of small tiles.
  3. Run stereo matching algorithm (eg, sgbm) on rectified small tiles and create disparity map.
  4. Triangulate disparity map and create height map.

My questions are:

  1. In step 2. and 3., the aim is to find matching pixels in a pair of images, why does it choose two different methods (SIFT and sgbm) to do it.

  2. I feel like SIFT and sgbm are two different methods trying to solve the same problem. Can sgbm be used in step 2. as well?

  3. Is there any material can give more detail explanation of what the difference is between this two methods and why we need both in a pipeline?

I feel like I am missing something here. Any help is appreciated. Thank you.


1 Answer 1


After weeks of reading, researching and experiments, now I have more knowledge to answer my own question.

Both of SIFT and SGBM can be used to find matching points but they are very different in the following ways:

  1. SIFT can be used to find features between images which are translated, rotated, and re-scaled (affine transformed?). But SGBM can only be used to be applied on rectified image pairs. I.e., the y-axis is aligned and there is only x-axis difference between image pairs.
  2. Therefore, SIFT is first used to rectified image pairs and then SGBM is used to create disparity map.
  3. All information are scatter around different sources, papers, books.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.