Panorama Stitching (Artificial Vision)
computer vision python
Overview
An end-to-end computer vision pipeline implemented in Jupyter Notebooks to reconstruct wide-angle panoramic photographs from sequential overlapping images, handling perspective warps, illumination differences, and camera lens distortions.
Key Features
- SIFT Feature Extraction: Detected invariant local keypoints and 128-dimensional descriptors robust to scaling, rotation, and illumination shifts.
- Adaptive Non-Maximal Suppression (ANMS): Enforced uniform spatial distribution of keypoints across the image plane to prevent clustering in high-contrast corners.
- Robust Feature Matching: Implemented Lowe's ratio test (d1 / d2 < 0.75) with bidirectional mutual nearest-neighbor validation to filter out spurious matches.
- Homography with DLT & RANSAC: Computed projective homography transformation matrices using Direct Linear Transform (DLT) coupled with RANSAC outlier rejection.
- Weighted Multi-Band Blending: Applied distance-transform weighted blending along overlap seams to eliminate visible cut lines and vignetting.
Architecture & Implementation
Sequential image pairs are processed through SIFT detection, ANMS keypoint selection, Lowe ratio descriptor matching, and RANSAC homography estimation. Images are projected onto a shared planar canvas and fused using smooth alpha masks.
Results & Performance
Successfully stitched multiple overlapping camera images into clean, seamless panoramas with aligned architectural geometry and invisible seam transitions.
Tech Stack
Python OpenCV NumPy Matplotlib Jupyter Computer Vision