%%Start with a clean workspace clear all;close all;clc;%#ok %%Load image fixedFull = double(imread('cameraman.tif')); rows = 30:226; cols = rows; fixed = fixedFull(rows,cols); %%Specify motion parameters theta = 5;%degrees rowshift = 1.65;%pixels colshift = 5.32;%pixels %%Create rotated/translated image RT = @(img,colshift,rowshift,theta) imrotate( imtransform(img, maketform('affine', [1 0 0; 0 1 0; colshift rowshift 1]), 'bilinear', 'XData', [1 size(img,2)], 'YData', [1 size(img,1)], 'FillValues', 0),theta,'crop'); %#ok movingFull = RT(fixedFull, colshift, rowshift, theta); moving = movingFull(rows,cols); %%Show both images figure; imshowpair(moving,fixed,'montage'); %%Register images [rowshift1, colshift1, theta1, imgReg] = RegisterViaReddy(fixed, moving); tform1 = imregcorr(moving, fixed, 'rigid');
The function handle RT first translates an image and then rotates it. The resulting image is the same size as the input image. The outputs of my own RegisterViaReddy function are
>> [rowshift1, colshift1, theta1] ans = -1.7600 -5.1000 -5.3402
These are nearly the opposites of the known rowshift, colshift, and theta parameters. I wrote my code this way so that
RT(moving,colshift1,rowshift1,theta1);
generates something that looks like the fixed image.
I do not understand how to get these parameters from the output of imregcorr (tform1). I understand that acosd(tform1.T(1,1)) is 5.1799 and is hence the rotation angle. However, tform1.T is
0.9959 0.0903 0 -0.0903 0.9959 0 4.1423 -10.3337 1.0000
How do I extract meaningful translation parameters from this? I know I can generate something that looks like the fixed image using
imwarp(moving, tform1);
but the resulting array is 214x214 whereas fixed and moving are 197x197. Is there any way to get the translation offsets that I input from the output of imregcorr?
% Define a pure transformation, apply this transformation to input point (w,z) = (0,0) tx = 1.65; ty = 5.32; T = [1 0 0; 0 1 0; tx ty 1]; w = 0; z = 0; xy = [w z 1]*T
This means that for a rigid transformation, the tform object returned by imregcorr is off the form:
tform = [cos(theta) sin(theta) 0; sin(theta) -cos(theta) 0; tx ty 1];
theta = 5; Trotate = [cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1]; Translate = [1 0 0; 0 1 0; 1.65 5.32 1]; Translate*Trotate Trotate*Translate
3) Take a look at the example for imregtform. It uses imwarp to apply a given affine transformation matrix and then demonstrates how this transformation can be recovered.
% Start with a clean workspace clear all;close all;clc;%#ok % Load image fixedFull = double(imread('cameraman.tif')); rows = 30:226; cols = rows; fixed = fixedFull(rows,cols); % Specify motion parameters theta = 5;%degrees rowshift = 1.65;%pixels colshift = 5.32;%pixels % Create rotated/translated image RT = @(img,colshift,rowshift,theta) imrotate( imtransform(img, maketform('affine', [1 0 0; 0 1 0; colshift rowshift 1]), 'bilinear', 'XData', [1 size(img,2)], 'YData', [1 size(img,1)], 'FillValues', 0),theta,'crop'); %#ok movingFull = RT(fixedFull, colshift, rowshift, theta); moving = movingFull(rows,cols); % Show both images figure; imshowpair(moving,fixed,'montage'); % Register images tform1 = imregcorr(moving, fixed, 'rigid'); movingReg = imwarp(moving,tform1,'OutputView',imref2d(size(fixed))); figure, imshowpair(movingReg,fixed);
Matlabsolutions.com provides guaranteed satisfaction with a
commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain
experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support
to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been
empanelled after extensive research and quality check.
Matlabsolutions.com provides undivided attention to each Matlab
assignment order with a methodical approach to solution. Our network span is not restricted to US, UK and Australia rather extends to countries like Singapore, Canada and UAE. Our Matlab assignment help services
include Image Processing Assignments, Electrical Engineering Assignments, Matlab homework help, Matlab Research Paper help, Matlab Simulink help. Get your work
done at the best price in industry.