Bird
Raised Fist0
Computer Visionml~5 mins

Homography and image alignment in Computer Vision - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a homography in computer vision?
A homography is a mathematical transformation that relates the positions of points between two images of the same planar surface or scene taken from different viewpoints. It is represented by a 3x3 matrix that maps points from one image to another.
Click to reveal answer
beginner
Why do we need image alignment in computer vision tasks?
Image alignment helps to match two or more images by adjusting their positions, scales, or rotations so that corresponding points overlap. This is important for tasks like panorama stitching, object recognition, and 3D reconstruction.
Click to reveal answer
intermediate
What are the main steps to compute a homography matrix between two images?
1. Detect key points in both images.
2. Extract descriptors for these points.
3. Match key points between images.
4. Use matched points to estimate the homography matrix, often with RANSAC to remove outliers.
Click to reveal answer
intermediate
How does RANSAC help in homography estimation?
RANSAC (Random Sample Consensus) helps by repeatedly selecting random subsets of matched points to estimate the homography and then choosing the estimate that fits the most points (inliers). This reduces the effect of incorrect matches (outliers).
Click to reveal answer
advanced
What is the difference between affine transformation and homography?
Affine transformation preserves parallel lines and includes translation, rotation, scaling, and shearing. Homography is more general and can represent perspective distortions, mapping any plane to another plane, including changes in viewpoint.
Click to reveal answer
What does a homography matrix primarily represent?
AA color adjustment between images
BA noise filter for images
CA 3D rotation of an object
DA transformation between two planes in images
Which algorithm is commonly used to remove outliers when estimating homography?
ARANSAC
BK-Means
CPCA
DGradient Descent
Image alignment is important for which of the following tasks?
APanorama stitching
BAudio processing
CText summarization
DDatabase indexing
Which of these transformations can homography represent but affine transformation cannot?
ARotation
BPerspective distortion
CTranslation
DScaling
What is the minimum number of point correspondences needed to compute a homography matrix?
A2
B3
C4
D5
Explain the process of estimating a homography matrix between two images.
Think about how you find matching points and then find the best transformation.
You got /4 concepts.
    Describe why homography is useful for image alignment and give an example application.
    Consider how images taken from different angles can be matched.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of computing a homography matrix in image alignment?
      easy
      A. To increase the brightness of an image
      B. To detect edges in an image
      C. To segment objects in an image
      D. To find a transformation that maps points from one image to another

      Solution

      1. Step 1: Understand homography concept

        Homography is a matrix that relates points between two images taken from different views.
      2. Step 2: Identify its use in image alignment

        It helps to map points from one image to corresponding points in another to align them.
      3. Final Answer:

        To find a transformation that maps points from one image to another -> Option D
      4. Quick Check:

        Homography = Point mapping [OK]
      Hint: Homography maps points between images [OK]
      Common Mistakes:
      • Confusing homography with edge detection
      • Thinking homography changes image brightness
      • Mixing homography with image segmentation
      2. Which OpenCV function is used to compute the homography matrix from matched points?
      easy
      A. cv2.warpPerspective()
      B. cv2.findHomography()
      C. cv2.matchTemplate()
      D. cv2.resize()

      Solution

      1. Step 1: Identify function for homography calculation

        cv2.findHomography() computes the homography matrix from matched point sets.
      2. Step 2: Differentiate from other functions

        cv2.warpPerspective applies the homography, matchTemplate finds template matches, resize changes image size.
      3. Final Answer:

        cv2.findHomography() -> Option B
      4. Quick Check:

        Compute homography = findHomography [OK]
      Hint: Find homography matrix with cv2.findHomography() [OK]
      Common Mistakes:
      • Using warpPerspective to compute homography
      • Confusing template matching with homography calculation
      • Trying to resize image to get homography
      3. Given the following code snippet, what will be the shape of aligned_img after applying homography?
      import cv2
      import numpy as np
      img1 = cv2.imread('img1.jpg')
      img2 = cv2.imread('img2.jpg')
      pts1 = np.array([[10,10],[100,10],[100,100],[10,100]])
      pts2 = np.array([[12,14],[102,12],[98,110],[14,108]])
      H, _ = cv2.findHomography(pts1, pts2)
      aligned_img = cv2.warpPerspective(img1, H, (img2.shape[1], img2.shape[0]))
      medium
      A. Same height and width as img1
      B. Shape is (4, 2) because of points
      C. Same height and width as img2
      D. Shape depends on H matrix size

      Solution

      1. Step 1: Understand warpPerspective parameters

        The third parameter in warpPerspective sets output image size as (width, height).
      2. Step 2: Check given size argument

        It uses (img2.shape[1], img2.shape[0]) which is width and height of img2.
      3. Final Answer:

        Same height and width as img2 -> Option C
      4. Quick Check:

        Output size = img2.shape [OK]
      Hint: warpPerspective size param sets output image shape [OK]
      Common Mistakes:
      • Assuming output shape matches img1
      • Thinking homography matrix size affects output shape
      • Confusing point arrays with image shape
      4. You wrote this code to align two images but get a distorted output. What is the likely error?
      H, status = cv2.findHomography(pts1, pts2)
      aligned = cv2.warpPerspective(img1, pts1, (img2.shape[1], img2.shape[0]))
      medium
      A. Using pts1 instead of H in warpPerspective
      B. Swapping pts1 and pts2 in findHomography
      C. Not converting points to float32
      D. Missing cv2.imshow to display image

      Solution

      1. Step 1: Check warpPerspective arguments

        warpPerspective expects the homography matrix as the second argument, not point arrays.
      2. Step 2: Identify incorrect argument usage

        Code passes pts1 (points) instead of H (homography matrix), causing distortion.
      3. Final Answer:

        Using pts1 instead of H in warpPerspective -> Option A
      4. Quick Check:

        warpPerspective needs homography matrix [OK]
      Hint: Pass homography matrix, not points, to warpPerspective [OK]
      Common Mistakes:
      • Passing points instead of homography matrix
      • Swapping source and destination points in findHomography
      • Ignoring data type requirements for points
      5. You want to stitch two images taken from different angles into a panorama. Which sequence of steps correctly uses homography for alignment?
      hard
      A. Detect keypoints -> Match points -> Compute homography -> Warp one image -> Blend images
      B. Resize images -> Compute homography -> Detect edges -> Warp images -> Blend images
      C. Match points -> Resize images -> Compute homography -> Warp images -> Detect keypoints
      D. Warp images -> Detect keypoints -> Compute homography -> Match points -> Blend images

      Solution

      1. Step 1: Detect and match keypoints

        First, find keypoints in both images and match them to get corresponding points.
      2. Step 2: Compute homography and warp image

        Use matched points to compute homography, then warp one image to align with the other.
      3. Step 3: Blend images to create panorama

        Finally, blend the aligned images smoothly to form a panorama.
      4. Final Answer:

        Detect keypoints -> Match points -> Compute homography -> Warp one image -> Blend images -> Option A
      5. Quick Check:

        Correct panorama steps = Detect keypoints -> Match points -> Compute homography -> Warp one image -> Blend images [OK]
      Hint: Detect -> Match -> Compute -> Warp -> Blend for panorama [OK]
      Common Mistakes:
      • Resizing images before matching points
      • Warping images before computing homography
      • Detecting keypoints after warping images