Electrical Engineer
Project Dates: 2/1/2013 - 2/15/2013
Summary:
Designed a program in MATLAB to create a mosaic / panoramic image out of two images. The algorithm takes two images, finds common features between the two then stitches the images together after using a homography to warp the coordinates of one of the images to the coordinate system of the other image.
Algorithm Design:
A Harris corner detector was used to find corner features in the two images. The detector considered sparse sets and evaluated the score of each corner detected to ensure optimal corner detection results. The first image was then divided into several smaller windows of between 100 to 400 pixels. Each window was compared to a pixel set of the same size in the corresponding image using normalized cross correlation. If a set of features from a window in the first image was a 90% or greater match to a set of features in the second image, a correspondence is generated.
After all of the windows have been correlated, the correspondences between the two images are compared. The coordinates of the second image are warped into the coordinate space of the first image using a homography based on an estimative projective geometric transform between the correspondences of the two images. The MATLAB homography function has RANSAC built in to estimate the densest set of correspondences and ignore the outliers while creating the new coordinate set for the second image. The homography of the second image, and the first image are then both written into a new larger image space. This image space contains the stitched image.
Project Dates: 2/1/2013 - 2/15/2013
Summary:
Designed a program in MATLAB to create a mosaic / panoramic image out of two images. The algorithm takes two images, finds common features between the two then stitches the images together after using a homography to warp the coordinates of one of the images to the coordinate system of the other image.
Algorithm Design:
A Harris corner detector was used to find corner features in the two images. The detector considered sparse sets and evaluated the score of each corner detected to ensure optimal corner detection results. The first image was then divided into several smaller windows of between 100 to 400 pixels. Each window was compared to a pixel set of the same size in the corresponding image using normalized cross correlation. If a set of features from a window in the first image was a 90% or greater match to a set of features in the second image, a correspondence is generated.
After all of the windows have been correlated, the correspondences between the two images are compared. The coordinates of the second image are warped into the coordinate space of the first image using a homography based on an estimative projective geometric transform between the correspondences of the two images. The MATLAB homography function has RANSAC built in to estimate the densest set of correspondences and ignore the outliers while creating the new coordinate set for the second image. The homography of the second image, and the first image are then both written into a new larger image space. This image space contains the stitched image.
First image with corners detected
Second Image Corners Detected
Correspondences between images
Correspondences mapped between images
Homography of 2nd image, mapped to coordinate system of 1st image
Resulting stitched image