top of page

Create Your First Project

Start adding your projects to your portfolio. Click on "Manage Projects" to get started

MyAutoPano: Multi-Image Panorama Stitching from Scratch

Project type

University project

Date

January 2026

Location

Worcester, MA

Tech stack: Python, OpenCV, NumPy, Harris/Shi-Tomasi Corner Detection, RANSAC, Homography Estimation, Poisson Blending
A from-scratch implementation of a complete panorama stitching pipeline that takes an arbitrary number of overlapping images and produces a single seamless wide-field-of-view output. Built every classical computer-vision building block — corner detection, feature description, matching, robust homography estimation, and image blending — and extended the pairwise stitching logic to handle multi-image sequences with automatic rejection of non-overlapping inputs.
Highlights

Implemented Harris corner detection (and Shi-Tomasi as an alternative) to extract a dense set of candidate keypoints across each input image.
Implemented Adaptive Non-Maximal Suppression (ANMS) to retain only the strongest, spatially well-distributed corners — preventing keypoint clustering that causes warping artifacts and ensuring uniform feature coverage across the frame.
Built custom 64-D feature descriptors from 41×41 patches centered on each keypoint: Gaussian blur → subsample to 8×8 → flatten → zero-mean / unit-variance standardization for illumination invariance.
Implemented feature matching via sum-of-squared-differences with Lowe's ratio test to keep only confident correspondences and discard ambiguous matches.
Implemented RANSAC for robust homography estimation: random 4-point sampling, candidate H from DLT, inlier counting via reprojection SSD threshold, early termination on high inlier ratio, and final least-squares refit on the maximum inlier set.
Extended the pairwise pipeline to multi-image stitching by sequentially registering new views into the growing panorama, with automatic rejection of images that fail to produce sufficient inlier correspondences (and a graceful error path when no images share enough common features).
Implemented image blending to handle exposure, white-balance, and vignetting inconsistencies between source images, producing seamless transitions across stitch boundaries.

Good things take time

bottom of page