(不推荐)对图像进行二维空间变换
imtransform
不推荐。使用imwarp
而不是二维和三维变换。使用tformarray
对于高维变换。
对灰度图像应用水平剪切。
I = imread(“cameraman.tif”);Tform = maketform(仿射的,[10 0 0;.5 10 0;0 0 1]);J = imtransform(I,tform);imshow (J)
用射影变换将正方形映射到四边形。设置一个输入坐标系统,使输入图像用顶点(0 0)、(10 0)、(1 1)、(0 1)填充单元正方形。
I = imread(“cameraman.tif”);Udata = [0 1];Vdata = [0 1];
变换为一个顶点为(- 4.2),(- 8.3),(-3 -5),(6 3)的四边形。
Tform = maketform(“射影”,[0 0;1 0;1 1;0 1],...[4 2;8 3;3 5;6 3]);
填充灰色并使用双三次插值。使输出大小与输入大小相同。
[B,xdata,ydata] = imtransform(I,tform,“双三次的”,...“udata”udata,...“vdata”vdata,...“大小”、大小(我),...“填满”, 128);次要情节(1、2、1);imshow(我“XData”udata,“YData”vdata)次要情节(1、2、2);imshow (B,“XData”xdata,“YData”ydata)
将航拍照片读入MATLAB®工作区并查看它。
未注册= imread(“westconcordaerial.png”);图imshow(未注册)
读取一个正射影像到MATLAB工作区并查看它。
图imshow (“westconcordorthophoto.png”)
装载之前选取的控制点。
负载westconcordpoints
使用这些点为射影转换创建转换结构。
t_concord = cp2tform(movingPoints,fixedPoints,“射影”);
获取正射影像的宽度和高度,执行转换,并查看结果。
Info = iminfo (“westconcordorthophoto.png”);Registered = imtransform(unregistered,t_concord,...“XData”[1的信息。宽度),“YData”[1 info.Height]);图imshow(注册)
图像配准。的imtransform
函数自动移动输出图像的原点,以使尽可能多的转换后的图像可见。如果你使用imtransform
要做图像配准,语法B = imtransform(A,tform)
会产生意想不到的结果。若要控制输出图像的空间位置,请设置XData
而且YData
明确。
纯粹的翻译。调用imtransform
函数具有纯平移变换的结果是输出图像与输入图像完全相同,除非您指定XData
而且YData
价值观在你的呼唤中imtransform
.例如,如果您希望输出与显示相对于输入图像的翻译的输入大小相同,则调用imtransform
如下面的语法所示:
B = imtransform(A,T,“XData”[1大小(2),...“YData”[1大小(1)))
有关此主题的更多信息,请参见执行简单的二维翻译转换.
转换速度。的输出空间位置B
使用XData
而且YData
,然后imtransform
使用函数自动估计位置findbounds
.你可以用findbounds
作为一些常用转换(如仿射或射影)的快速前向映射选项。对于没有前向映射的转换,例如由fitgeotrans
,findbounds
可能要花更长的时间。如果你可以指定XData
而且YData
直接用于这样的转换imtransform
可能会跑得明显更快。
剪裁。的自动估计XData
而且YData
使用findbounds
有时截取输出图像。为了避免剪切,设置XData
而且YData
直接。