I shot 19 pictures from one place in my backyard in Frederick, MD using a digital camera. Each output image was 640x480 and had 25% to 50% overlap with its neighboring images.
The final image was put together using a weighted average of all contributing pictures. Pixels closer to the center of each contributing image were weighted more than pixels closer to the edges.
w(x,y) = min(2x > cx ? x : cx - x, 2y > cy ? y : cy - y) * 0.1 + 0.1
I(x,y) = (I1(x,y) * w1(x,y) + ... + In(x,y) * wn(x,y)) / (w1(x,y) + ... + wn(x,y))
The images the compose a mosaic are registered as parent images and child images. Corresponding points are established interactively between the child images and parent image. The root image is the resulting mosaic, and is viewed in a separate window though which the user can preview the borders of contributing images as they would appear in the final mosaic. The user can also zoom in/out, and there is a menu command to generate the mosaic image which is also previewed in this window.
Screen shot of software working on Simon-Newell mosaic (Shows corresponding points used to construct mosaic).
Mosaic of backyard images 1 though 6 (output res: 3227x1391, 6 images, Runtime ~20s)
Simon-Newell Hall created from Paul Heckbert's photographs (output res:1455x879, 2 images, Runtime: ~3s)
Author: Jon Rowlett