我是靠谱客的博主 朴素抽屉,这篇文章主要介绍20060214-Spatial transformations: maketform, tformfwd, and tforminv,现在分享给大家,希望可以做个参考。

原文: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:

复制代码
1
2
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:

复制代码
1
2
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.

复制代码
1
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.

复制代码
1
2
3
% 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

复制代码
1
2
3
4
5
6
7
8
9
10
11
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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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 45circ')

Translation example

复制代码
1
2
3
4
5
6
7
8
9
10
11
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')

最后

以上就是朴素抽屉最近收集整理的关于20060214-Spatial transformations: maketform, tformfwd, and tforminv的全部内容,更多相关20060214-Spatial内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部