原文:http://blogs.mathworks.com/steve/2006/02/14/spatial-transformations-maketform-tformfwd-and-tforminv/
Several Image Processing Toolbox functions related to spatial transformations use "tform" structures. A tform structure has data and function handles needed for applying a spatial transformation in the forward or the inverse direction, and sometimes in both directions.
maketform
Function maketform has several syntaxes for constructing different types of tform structures. For example, you can construct an affine transform by providing an A matrix:
A = [2 0 0; 0 2 0; 0 0 1]; % Stretch by a factor of 2 in both directions.
tform = maketform('affine', A);
tformfwd
Toolbox function tformfwd transforms points from input space to output space. For example, to apply the affine transform above to the point (u,v) = (2,3), do this:
uv = [2 3];
xy = tformfwd(tform, uv)
tforminv
Function tforminv transforms points from output space to input space. If we apply the inverse transformation to the point xy computed above, we should get back the original point.
uvp = tforminv(tform, xy)
Introducing George
The spatial transformation functions imtransform, tformarray, tformfwd, tforminv, etc., were introduced to Image Processing Toolbox version 3 in 2001.
% http://blogs.mathworks.com/images/steve/37/george.mat
load george
plot(x,y), axis ij, axis equal, axis([-1 1 -1 1]), grid on
Scaling example
A1 = [2 0 0; 0 2 0; 0 0 1];
tform1 = maketform('affine', A1);
uv1 = tformfwd(tform1, [x y]);
subplot(1,2,1)
plot(x,y), axis ij, axis equal, axis([-2 2 -2 2]), grid on, title('George')
subplot(1,2,2)
plot(uv1(:,1), uv1(:,2)), axis ij, axis equal, axis([-2 2 -2 2])
grid on
title('Scaled by 2')
Rotation example
theta = pi/4;
A2 = [cos(theta) sin(theta) 0; -sin(theta) cos(theta) 0; 0 0 1];
tform2 = maketform('affine', A2);
uv2 = tformfwd(tform2, [x y]);
subplot(1,2,1)
plot(x,y), axis ij, axis equal, axis([-2 2 -2 2]), grid on, title('George')
subplot(1,2,2)
plot(uv2(:,1), uv2(:,2)), axis ij, axis equal, axis([-2 2 -2 2])
grid on
title('Rotated by 45\circ')
Translation example
A3 = [1 0 0; 0 1 0; 1 -1 1];
tform3 = maketform('affine', A3);
uv3 = tformfwd(tform3, [x y]);
subplot(1,2,1)
plot(x,y), axis ij, axis equal, axis([-2 2 -2 2]), grid on, title('George')
subplot(1,2,2)
plot(uv3(:,1), uv3(:,2)), axis ij, axis equal, axis([-2 2 -2 2])
grid on
title('Translated')

本文介绍了MATLAB中用于图像处理的空间变换工具箱函数,包括构造不同类型的tform结构的maketform函数,实现从输入空间到输出空间变换的tformfwd函数,以及实现逆变换的tforminv函数。通过缩放、旋转和平移实例展示了这些函数的应用。
1249

被折叠的 条评论
为什么被折叠?



