# Panorama

Panoramas are not just planar, it can also be spherical and cylindrical.

  • Capture images
  • Detection and matching
  • Warping => Aligning images
  • Blending, Fading, Cutting
  • Cropping

Given x number of views, it is possible to generate any synthetic camera view as long as it has the same center of projection

Image Re-projection

Intro Homography

Computing Homography

Solving Homography

RANSAC

# RANSAC approach

Loop till you find a convergence/popular H

  1. select four feature pairs (at random)
  2. Compute homography H (exact)
  3. Compute inliers where:
  4. Keep largest set of inliers
  5. Recompute least-squares H estimate on all of the inliers

Not that there are more inliers than outliers, but that the outliers are wrong in different ways.

# Panorama - From Scratch

  • Load images
  • Pass each image through a feature detector like cv2.ORB/cv2.SIFT that extracts the keypoints and compute descriptors
  • Optionally, you can draw circles around the keypoints by passing them over the image through cv2.drawKeyPoints to visualize
  • Match the keypoints using matcher like the brute force matcher cv2.BFMatcher
  • Create two sequences of corresponding matched points based on what was returned by the matcher above
  • Compute homography (since our objects are planar) using RANSAC to reject outliers
  • Create panorama by applying the homography matrix as a warp to the images (look in lecture video for clarity)
  • Apply blending and cuts for more sleek panorama