Image alignment and stitching with MATLAB
Branch: master
Clone or download
Latest commit 02dcbdf Sep 27, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
imgs done! May 7, 2016
lib add Apr 28, 2016
resource done! May 7, 2016
results readme May 7, 2016
LICENSE Create LICENSE Sep 27, 2018
RANSAC.m done! May 7, 2016 Update Jun 12, 2016
RunAllDatasets.m finally amendment May 7, 2016
computeTrans.m done! May 7, 2016
create.m done! May 7, 2016
enlargeImage.m add Apr 28, 2016
estimateHomographies.m add Apr 28, 2016
getMatches.m next: pertub Apr 29, 2016
getSIFTFeatures.m empty Apr 28, 2016
imorder.m readme May 7, 2016
main.m resize May 8, 2016
matchExposures.m genrally finished Apr 29, 2016
merge.m readme May 7, 2016
prog3.pdf first Apr 28, 2016
shuffle.bash done! May 7, 2016
warp.m genrally finished Apr 29, 2016




  • able to handle 360 panorama.
  • Random sequence of images input is welcomed.
  • use color blending and smoothing to make the image more continuous.

how to run

Prerequisite: matlab 2014b or higher
images sets are already in ./imgs

  • If you want to see results directly, go to ./results folder
  • If you want to test all images sets with only one click,run RunAllDatasets.m.(10 image sets, about 1 minute)
  • If you want to specify the image folder, run main.m with path to images folder as argument as follow:
    Note that, this currently support image sets in imgs folder. If you use your own image set, you need to set focus length and other parameters in main.m.

######details of my algorithms are shown below:

360 panorama

  • mapping image to cylindrical coordinate

recognize panorama(random inputs)

I select two random sequence images set:family_house, and west_campus1
They are already shuffled. You can see them in imgs folder.
Or you can run shuffle.bash to shuffle them again.
As described in Brown's paper, I use $N_inlier>k*N_pairs+b$ to compute whether a pair of images match or not
k,b are const. Set to 5.9 and 0.22 respectively.
See recognizing panorama for details


merging and blending

  • Alpha
  • Pyramid
  • Noblend



  • homography transformation.
  • translation transformation.( This is more robust)



  • exposure matching


global adjustment

  • end to end adjustment(comput shift and subtract shift/n to each image)
  • bundle adjustment(difficult way)


getting features

  • use SIFT features(using VLFeat library, professor allowed)
  • SURF features, (SIFT is better)

getSIFTFeatures.m, getMatches.m


  • I resize image larger than 400 pixel in width



A nice tutorial on panorama I find useful.