Panorama StitchingHarris Corner Detector: All 9000+ corners
500 Strongest corners
Adaptive Non-Maximal Suppression in action (with a ridiculous radius to prove that it works)
Suppressed corners (same ridiculous radius)
Suppressed corners with a much more sensible radius
Sample corner set after RANSAC, and the resulting panorama
More ResultsColoradoManual
Automatic
Source images
Gesling StadiumManual
Automatic
Source Images Home Battlestation
Manual
Automatic: Failure!!! In this run, the curve of my jacket and the body of my acoustic were seen as the same feature point, since they are very similar and the jacket curve doesn't appear in the left image. RANSAC didn't eliminate this error; since the points are on opposite sides of the image, any homography which did not include the points caused a massive skew in the error, making the bad match the "best" selection. Source Images Work BattlestationManual
Automatic
Source Images
Bells and WhistlesBillboard projection
Hands-on Image Blending and Auto-cropping
First, I converted to greyscale and took the logical XOR of the two images when placed on the blending canvas. It was safe to multiply both images by this mask, as there is no overlap, and it represents areas of full intensity for each image. Since I am cropping to the un-warped image, the right bound was simply its right border. The left border is a little more tricky. I didn't want any rough edges, so I solved for the leftmost edge intersection between the two images, and made the area inbetween full left, as shown below. Next, I used MATLAB's color map function to generate a small swatch of gray gradient, which I then scaled and rotated to the appropriate direction. If I add that gradient to two copies of the mask in opposing direcitons, one for each image, I get a mask for each image. This method ensures that the sum of the masks (in the areas where both images have data) will always be one, so they are weighted appropriately and there will be no strange edge brightness variations. I can now do an element-wise multiplication of each image by the appropriate mask, and add the two images together to get my final mask.
Once the images are weighted appropriately and placed on the final canvas, the image is cropped to eliminate strange errors. The top of the image is set to the maximum y value of the upper right coordinates of the two images. The bottom of the image is set to the minimum y value of the lower right coordinates of the two images. The right of the image is set to the minimum x value of the top right and bottom right coordinates of the image on the right, and the left is set to 0 since the left image is unwarped. As stated before, the left and right boundaries for the blending are set by the end of the first image, and the intersection point between the two to eliminate weird ghosting effects.
Graffiti
|