image thumbnail
from Demo files from Image Processing Webinar by Robert Bemis
This package contains demos that were used during an Image Processing webinar

demo5_register_aerial_photos.m
% Example 5 - Align aerial photos
% -------------------------------

% start with clean slate
close all, clear all, clc

% Step 1: Read Images 
base_image=imread('westconcordorthophoto.png');
figure('pos',[26 122 470 449]), imshow(base_image), title('base image')
input_image=imread('westconcordaerial.png');
figure('pos',[535 83 476 483]), imshow(input_image), title('input image')

% Step 2: Choose Control Points 
load control_points
cpselect(rgb2gray(input_image),base_image,input_points,base_points)

% Step 3: Infer Geometric Transformation 
T=cp2tform(input_points,base_points,'projective')

% Step 4: Transform Unregistered Image 
reg_im=imtransform(input_image,T);
figure('pos',[535 122 470 449]), imshow(reg_im), title('transformed image')

% Step 5: Register both images (same coordinates)
[m,n]=size(base_image);
reg_im=imtransform(input_image,T,'XData',[1 n],'YData',[1 m]);
figure(3), imshow(reg_im), title('registered image'), set(3,'pos',[535 122 470 449])

% Step 6: Simple linear combination (half & half)
base_image=repmat(base_image,[1 1 3]);
comb_im=imlincomb(0.5,base_image,0.5,reg_im);
figure('position',[237 227 470 449]), imshow(comb_im), title('composite result')

% Step 7: Overlay registered (color) data into base (gray) image
BW=reg_im>0;
base_image(BW)=reg_im(BW);
figure('position',[237 227 470 449]), imshow(base_image), title('partial replacement')

% Copyright 2003-2010 RBemis The MathWorks, Inc. 

Contact us at files@mathworks.com