geometric transformation and image registrationstaff.cs.psu.ac.th/sathit/dip/geometric...

43
Geometric Transformation and Image Registration

Upload: others

Post on 17-Jan-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Geometric Transformation and Image Registration

Page 2: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

WHAT WILL WE LEARN?

• What do geometric operations do? • What are they used for? • What are the techniques used to enlarge/reduce

a digital image? • What are the main interpolation methods used in

association with geometric operations? • What are affine transformations and how can

they be performed using MATLAB? • How can I rotate, flip, crop, or resize images in

MATLAB? • What is image registration and where is it used?

Page 3: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

What do geometric operations do?

Geometric operations modify the geometry of an image,

by repositioning pixels in a constrained way.

Page 4: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

What are they used for?

(1) Correcting geometric distortions introduced during the image acquisition process (e.g., due to the use of a fish-eye lens).

Page 5: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

What are they used for?

(2) Creating special effects on existing images, such as twirling, bulging, or squeezing a picture of someone’s face.

Page 6: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

What are they used for?

• Image registration—the process of matching the common features of two or more images of the same scene, acquired from different viewpoints or using different equipment.

Page 7: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Two basic components of geometric transformation

1. Mapping Function: This is typically specified using a set of spatial transformation equations (and a procedure to solve them) .

2. Interpolation Methods: These are used to compute the new value of each pixel in the spatially transformed image.

Page 8: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Geometric Spatial Transformations

An image, f, defined over a (w, z) coordinate system, To produce an image, g, defined over an (x, y) coordinate system.

This transformation (of the coordinates) may be expressed as

𝑥, 𝑦 = 𝑇 𝑤, 𝑧

• For example, – if (x, y) = T {(w, z)} = (w/2, z/2),

– Output image is simply as shrinking of f by half in both spatial dimensions, as illustrated in the Figure.

Page 9: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

( , )wx T w z

( , )zy T w z

Page 10: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Affine transformation

Transfer functions: Tw and Tz can be expressed in polynomial form of w and z, which is linear combination of x and y is called affine

transformation:

11 12 13x t w t z t

21 22 23y t w t z t

Page 11: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Affine transformation

One of the most commonly used forms of spatial transformations is the affine transform. The affine transform can be written in matrix form as

11 12 13

21 22 23

1 0 0 1 1

x t t t w

y t t t z

Page 12: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Affine transforms

Page 13: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

tform structure

• IPT represents spatial transformations using a so-called tform structure.

• A method to create such a structure is by using function maketform, whose call syntax

tform = maketform(transform_type,

transform_parameters)

• The first input argument, transform_type, is one of these strings: 'affine’, 'projective', 'box', ‘composite' ,or ‘custom'.

Page 14: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Ex: Generate transformation matrix a) Rotation by 30◦;

Since 30◦ = pi/6 cos(pi/6) = cosd(30) = 0.866 and sin(pi/6) = sind(30) = 0.500:

cos(𝜃) sin(𝜃) 0−sin(𝜃) cos(𝜃) 0

0 0 1

=0.866 0.500 00.500 0.866 00 0 1

>>Ta = maketform('affine',[cosd(30) sind(30) 0; -sind(30) cosd(30) 0; 0 0 1]); >>Ia = imtransform(I,Ta);

Page 15: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Ex: Generate transformation matrix

b) Scaling by a factor 3.5 in both dimensions;

Scaling matrix: 𝑆𝑥 0 00 𝑆𝑦 0

0 0 1

=3.5 0 00 3.5 00 0 1

>>%Scaling in MATLAB

>>S = [3.5 0 0; 0 3.5 0; 0 0 1];

>>Tb = maketform('affine', S);

>>Ib = imtransform(I,Tb);

Page 16: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Ex: Generate transformation matrix

(c) translation by [25, 15] pixels;

Translation matrix: 1 0 00 1 0𝑇𝑥 𝑇𝑦 1

=1 0 00 1 025 15 1

>>% Translation in MATLAB

>>xform = [1 0 25; 0 1 15; 0 0 1]';

>>Tc = maketform('affine',xform);

>>Ic = imtransform(I, Tc, 'XData', ...

>>[1 (size(I,2)+xform(3,1))], 'YData', ...

>>[1 (size(I,1)+xform(3,2))],'FillValues', 128 );

Page 17: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Ex: Generate transformation matrix (d) shear by a factor [2, 3].

Shear matrix: 1 𝑆𝑦 0

𝑆𝑥 1 00 0 1

=1 3 02 1 00 0 1

>>% Shearing

>>Td = maketform('affine', [1 3 0; 2 1 0; 0 0 1]);

>>Id = imtransform(I,Td);

Page 18: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

tform_type by ‘custom’ Ex. Scaling horizontal by 3 and vertical by 2

1

, , 3 ,2

, , 3, 2

x y T w z w z

w z T x y x y

Syntax: xy = forward_fcn(wz, tdata)

>> forward_fcn = @(wz, tdata) [3*wz(:,1), 2*wz(:,2)]

Syntax: wz = inverse_fn(xy, tdata)

>> inverse_fcn = @(xy, tdata) [xy(:,1)/3, xy(:,2)/2]

Page 19: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Create tform >> tform1 = maketform(‘custom’, 2, 2, forward_fcn, inverse_fcn, [])

Makeform will return: tform1 = ndims_in : 2 ndims_out : 2 forward_fcn : @(wz, tdata) [3*wz(: , 1) , 2*wz(: , 2) ] inverse_fcn : @(xy, tdata) [xy(:, 1)/3, xy(:, 2)/2 ] tdata : [ ]

Page 20: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Ex: forward and invert functions

>> wz = [1 1; 3 2]

>> xy = tformfwd(wz, tform1)

xy =

3 2

9 4

>> wz2 = tforminv(xy, tform1)

wz2 =

1 1

3 2

, , 3 ,2

3 0

0 2

x y T w z w z

x w

y z

3 3 0 1 9 3 0 3,

0 2 0 22 1 4 2

3 0 3 0

3 2 1 1 , 9 4 3 20 2 0 2

1, , 3, 2

1 3 0

0 1 2

w z T x y x y

w x

z y

Page 21: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

maketform • For example, one way create an affine tform is to provide the T

matrix directly, as in >> T = [2 0 0; 0 3 0; 0 0 1]; >> tform = maketform('affine', T) tform = ndims_in: 2 ndims_out: 2 forward_fcn: @fwd_affine inverse_fcn: @inv_affine tdata: [1x1 struct] >> tform.tdata ans = T: [3x3 double] Tinv: [3x3 double]

>> tform.tdata ans = T: [3x3 double] Tinv: [3x3 double] >> tform.tdata.T ans = 2 0 0 0 3 0 0 0 1 >> tform.tdata.Tinv ans = 0.5000 0 0 0 0.3333 0 0 0 1.0000

Page 22: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Forward/Inverse Transformation • tformfwd computes the forward transformation, 𝑇 𝑤, 𝑧 , syntax

for tformfwd is XY = tformfwd(WZ, tform).

Ex >> WZ =[1 1; 3 2];

>> XY = tformfwd(WZ, tform)

XY =

2 3

6 6

• tforminv computes the inverse transformation, 𝑇−1 𝑤, 𝑧 . Ex

>> WZ1=tforminv(XY, tform) WZ1 = 1 1 3 2

Page 23: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

0 100 200 3000

50

100

150

200

w

z

0 100 200 3000

50

100

150

200

x

y T=300020001

𝑇 =100210001

0 100 200 3000

50

100

w

z

0 100 200 3000

50

100

x

y

1.50002.00001.0

cos(𝜋4) sin(𝜋

4) 0

−sin(𝜋4) cos(𝜋

4) 0

0 0 1

1 0 00.2 1 00 0 1

=1.27281.06070−1.13141.41420001

-100 -50 0 50 1000

50

100

150

200

w

z

-100 -50 0 50 1000

50

100

150

200

x

y

Page 24: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Geometric distortion

Page 25: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Geometric distortion

(305,396) (272,396)

(328,285) (276,285)

(312,140) (284,140)

Page 26: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Restored image

Page 27: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Applying Spatial Transformations to Images

Most computational methods for spatially transforming an image fall into one of two categories:

1. forward mapping,

2. inverse mapping.

• Methods based on forward mapping scan each input pixel in turn, copying its value into the output image at the location determined by T { (w, z)}.

• One problem with the forward mapping procedure is that two or more different pixels in the input image could be transformed into the same pixel in the output image, raising the question of how to combine multiple input pixel values into a single output pixel value.

Page 28: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

imtransform uses inverse mapping instead. An inverse mapping procedure scans each output pixel in turn, computes the corresponding location in the input image using 𝑇−1 (𝑥, 𝑦) , and interpolates among the nearest input image pixels to determine the output pixel value.

Page 29: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

imtransform

The basic calling syntax for imtransform is

g = imtransform(f, tform, interp)

• where interp is a string that specifies how input image pixels are interpolated to obtain output pixels;

• interp can be either 'nearest', 'bilinear', or bicubic' .

• The interp input argument can be omitted, in which case it default to 'bilinear'.

Page 30: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

INTERPOLATION METHODS

• Forward mapping—also known as source-to-target mapping

Page 31: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Backward mapping

• Backward mapping—also known as target-to-source mapping

Page 32: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

INTERPOLATION METHODS

• Zero-Order (Nearest-Neighbor) Interpolation This baseline interpolation scheme rounds off the calculated coordinates (x’, y’) to their nearest integers.

• First-Order (Bilinear) Interpolation at coordinates (x’, y’) is a weighted function of the four pixels surrounding.

• Third order Interpolation: Bicubic. It takes into account the 4×4 neighborhood around the reference pixel and computes the resulting gray level of the interpolated pixel by performing the convolution of the 4×4 neighborhood with a cubic function.

Page 33: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine
Page 34: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

GEOMETRIC OPERATIONS USING MATLAB

A summary of typical geometric operations involving digital images that can easily be implemented using MATLAB and the IPT.

• Zooming, Shrinking, and Resizing

– imresize function allows the user to specify the interpolation method used (nearest-neighbor, bilinear, or bicubic interpolation—the default method).

• Translation, use maketform and imtransform to perform image translation.

Page 35: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

GEOMETRIC OPERATIONS USING MATLAB

• Rotation can also be accomplished using maketform and imtransform.

– imrotate allows the user to specify the interpolation method used: nearest-neighbor (the default method), bilinear, or bicubic.

• Cropping

– imcrop to crops an image to a specified rectangle

• Flipping has two functions for flipping images.

– flipud—which flips a matrix up to down—and

– fliplr—which flips a matrix left to right.

Page 36: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Coordinate system in MATLAB

>> f = imread('PD02Exp.tif');

>> imshow(f) % To show image

>> axis on % to show coordinate valuses

>> xlabel x % Label on x axis

>> ylabel y % Label on y axis

Page 37: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Coordinate system in MATLAB >> theta = 3*pi/4; >> T = [cos(theta) sin(theta) 0; -sin(theta) cos(theta) 0; 0 0 1]; >> tform = maketform('affine', T); >> [g, xdata, ydata] = imtransform(f, tform, 'FillValue', 255); >> imshow(f) >> hold on >> imshow(g, ‘XData’, xdata, ‘YData’, ydata);

Page 38: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Image Registration

Geometric transformations are used frequently to perform image registration, a process that takes two images of the same scene and aligns them so they can be merged for visualization, or for quantitative comparison. In the following sections, we discuss

1. spatial transformations and how to define and visualize them in MATLAB;

2. how to apply spatial transformation images; and 3. how to determine spatial transformations for use in

image registration.

Page 39: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Image Registration Image registration methods seek to align two images of the same scene. • For example, it may be of interest to align two or more

images taken at roughly the same time, but using different instruments, such as an MRI (magnetic resonance imaging) scan and a PET (positron emission tomography) scan.

• Or, perhaps the images were taken at different times using the same instrument, such satellite images of a given location taken several days, months, or even years apart.

• In either case, combining the images or performing quantitative analysis and comparisons requires compensating for geometric aberrations caused by differences in camera angle, distance, and orientation; sensor resolution; shift in subject position; and other factors.

Page 40: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

User define mapping

Page 41: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

Create transform structure >> tform = cp2tform(input_points, base_points, ‘affine’); >> [x xdata, ydata] = imtransform(f, tform);

Page 42: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine

cp2tform

Page 43: Geometric Transformation and Image Registrationstaff.cs.psu.ac.th/sathit/DIP/Geometric Transformation... · 2018-10-18 · association with geometric operations? • What are affine