用imtransform函数可以完成一般的二维空间变换。该函数接受两个主要变量,即要变换的图像和一个被称为TFORM的空间变换结构,该结构指定变换类型。[大谦MATLAB,dqmatlab点com]
在TFORM结构中指定变换类型。创建TFORM结构有两种方法,即使用maketform函数和cp2tform函数。
在使用maketform函数时,可以指定变换类型。表2-2中按字母先后顺序列出了各种变换类型。
表2-2 各种变换类型
| 变 换 | 描 述 |
|---|---|
| 'affine' | 变换,包括平移、旋转、比例、拉伸和错切等。直线仍为直线,平行线仍为平行线,但矩形可能变成平行四边形 |
| 'box' | 是affine变换的特例 |
| 'composite' | 两种或两种以上变换的组合 |
| 'custom' | 自定义变换 |
| 'projective' | 投影变换 |
一旦在TFORM结构中定义了变换,就可以通过调用imtransform函数进行变换操作。
下面的代码用imtransform函数进行跳棋图像的投影变换。
code.matlab
>> I=checkerboard(20,1,1);
>> figure; imshow(I)
>> T=maketform('projective',[1 1; 41 1; 41 41; 1 41],...
[5 5; 40 5; 35 30; -10 30]);
>> R=makeresampler('cubic','circular');
>> K=imtransform(I,T,R,'Size',[100 100],'XYScale',1);
>> figure, imshow(K)
生成图2-5所示的图形,图2-5(a)和图2-5(b)分别为进行投影变换前后的图像。
(a) (b)
图2-5 投影变换前后的图像