Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Here's a very good reference:</p> <p>Matthew Brown and David G. Lowe, "<em><a href="http://www.cs.bath.ac.uk/brown/papers/ijcv2007.pdf" rel="noreferrer">Automatic panoramic image stitching using invariant features</a></em>," International Journal of Computer Vision, 74, 1 (2007), pp. 59-73.</p> <p>The process is basically this:</p> <ol> <li>Extract image features at repeatable keypoints.</li> <li>Do image-to-image matching to find out overlap areas between images.</li> <li>Do bundle adjustment to align all the matching images.</li> <li>Rendering tricks so that the output looks nice.</li> </ol> <p>The above reference uses SIFT features, described in this paper:</p> <p>David G. Lowe, "<em><a href="http://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf" rel="noreferrer">Distinctive image features from scale-invariant keypoints</a></em>," International Journal of Computer Vision, 60, 2 (2004), pp. 91-110.</p> <p>Prerequisites to understanding this material include:</p> <ul> <li><a href="http://en.wikipedia.org/wiki/Image_gradient" rel="noreferrer">image gradients</a></li> <li>interest points (<a href="http://en.wikipedia.org/wiki/Corner_detection" rel="noreferrer">corner detection</a>, <a href="http://en.wikipedia.org/wiki/Difference_of_Gaussians" rel="noreferrer">difference of gaussians</a>)</li> <li>descriptor types (simple image patches, SIFT, SURF)</li> <li>approximate <a href="http://en.wikipedia.org/wiki/Nearest_neighbor_search" rel="noreferrer">nearest neighbor search</a> (I'd suggest using the <a href="http://people.cs.ubc.ca/~mariusm/index.php/FLANN/FLANN" rel="noreferrer">FLANN</a> library for this)</li> <li><a href="http://en.wikipedia.org/wiki/RANSAC" rel="noreferrer">RANSAC</a></li> <li>linear algebra (especially <a href="http://en.wikipedia.org/wiki/Homography" rel="noreferrer">homographies</a>)</li> <li><a href="http://en.wikipedia.org/wiki/Non-linear_least_squares" rel="noreferrer">non-linear least-squares minimization</a> techniques (like the <a href="http://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm" rel="noreferrer">Levenberg–Marquardt algorithm</a>)</li> </ul> <p>Koan suggests an excellent textbook in his answer.</p> <p>It's possible to use a lot of existing code to do feature extraction (<a href="http://vlfeat.org/" rel="noreferrer">VlFeat</a> provides Matlab and C++ libraries), RANSAC, and minimization (I don't know what the best libraries are for those, though). OpenCV is also a very good computer vision library.</p> <p>How long do you have for this project? I think it's quite ambitions. Based on having no experience in computer vision, I think a pretty good goal would be to find the transformation between just <em>two images</em> and stitch them together. You'd learn a lot just from that.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload