imtransform
对图像进行二维空间变换
imtransform
不推荐。使用imwarp
代替。
语法
B = imtransform(A,tform)
B = imtransform(A,tform,插值函数
)
[B,xdata,ydata] = imtransform(…)
[B,xdata,ydata] = imtransform(…,名称,值)
描述
B = imtransform(A,tform)
变换图像一个
根据定义的二维空间变换tform
.如果ndims(A) >
,例如对于RGB图像,则imtransform
将相同的二维变换应用到所有高维平面上。
B = imtransform(A,tform,
指定要使用的插值形式。插值函数
)
[B,xdata,ydata] = imtransform(…)
返回输出图像的位置B
在输出X-Y空间中。默认情况下,imtransform
计算xdata
而且ydata
自然而然地B
包含整个转换后的图像一个
.方法的值可以覆盖此自动计算“XData”
而且“YData”
参数。
[B,xdata,ydata] = imtransform(…,名称,值)
使用附加选项对图像进行转换,以控制由一个或多个指定的空间转换的各个方面名称,值
对参数。
输入参数
|
任何非稀疏数值类(实数或复数)或类的图像 |
|
返回的空间转换结构 |
|
插值使用的形式,指定为: 默认值: |
名称-值对实参
的逗号分隔的可选对名称,值
参数,的名字
参数名称和价值
对应的值。的名字
必须出现在单引号内(' '
),不区分大小写。可以以任意顺序指定多个名称和值对参数Name1
,Value1
、……以
,家
.
|
一个双元实向量,当它与 默认值: |
||||||||||||||
|
一个双元实向量,当它与 默认值: |
||||||||||||||
|
一个双元实向量,当它与 默认值:如果不指定 |
||||||||||||||
|
一个双元实向量,当与 默认值:如果不指定 |
||||||||||||||
|
一个或两个元素的实向量。第一个元素 默认值:如果不指定 请注意如果保留输入图像的比例将导致输出图像过大,则 B = imtransform(A,T,'XYScale',1) |
||||||||||||||
|
一个非负整数的双元素向量,指定输出图像的行数和列数 默认值:如果不指定 |
||||||||||||||
|
包含一个或多个填充值的数组。的 例如,如果
如果 |
输出参数
|
输出图像的任何非稀疏数字类(实数或复数)或类 |
|
的双元素向量x的第一列和最后一列的坐标 请注意有时输出值 |
|
的双元素向量y的第一行和最后一行的坐标 |
例子
简单的转换。对强度图像应用水平剪切:
I = imread('cameraman.tif');Tform = maketform('affine',[10 0 0;.5 10 0;0 0 1]);J = imtransform(I,tform);imshow(I), figure, imshow(J)
横向剪切
射影变换。用射影变换将一个正方形映射到一个四边形:
设置一个输入坐标系统,使输入图像%用顶点(0 0),(10 0),(1 1),(0 1)填充单位正方形。Udata = [0 1];Vdata = [0 1];%转换为顶点(-4 2),(-8 3),% (-3 -5),(6 3). tform = maketform('projective',[0 0;1 0;1 1;0 1],…[4 2;8 3;3 5; 6 3]); % Fill with gray and use bicubic interpolation. % Make the output size the same as the input size. [B,xdata,ydata] = imtransform(I, tform, 'bicubic', ... 'udata', udata,... 'vdata', vdata,... 'size', size(I),... 'fill', 128); subplot(1,2,1), imshow(I,'XData',udata,'YData',vdata), ... axis on subplot(1,2,2), imshow(B,'XData',xdata,'YData',ydata), ... axis on
射影变换
图像配准。将航拍照片注册到正射影像。
读一张航拍照片到MATLAB工作区并查看它。
未注册= imread('westconcordaerial.png');图中,imshow(未注册)
航拍照片
读取一个正射影像到MATLAB工作区并查看它。
图,imshow(“westconcordorthophoto.png”)
正色摄影
装载之前选取的控制点。
负载westconcordpoints
使用这些点为射影转换创建转换结构。
t_concord = cp2tform(movingPoints,fixedPoints,'projective');
获取正射影像的宽度和高度,执行转换,并查看结果。
Info = imfinfo(' westconcordorthphoto .png');Registered = imtransform(unregistered,t_concord,…“XData”,[1信息。Width], 'YData',[1 info.Height]);图中,imshow(注册)
转换图像
提示
图像配准。的
imtransform
函数自动移动输出图像的原点,以使尽可能多的转换后的图像可见。如果你使用imtransform
要做图像配准,语法B = imtransform(A,tform)
会产生意想不到的结果。若要控制输出图像的空间位置,请设置“XData”
而且“YData”
明确。纯粹的翻译。调用
imtransform
函数使用纯平移变换,得到的输出图像与输入图像完全相同,除非您指定“XData”
而且“YData”
价值观在你的呼唤中imtransform
.例如,如果您希望输出与显示相对于输入图像的翻译的输入大小相同,则调用imtransform
如下面的语法所示:B = imtransform(A,T,'XData',[1 size(A,2)],…“YData”,[1大小(A, 1)))
有关此主题的更多信息,请参见执行简单的二维翻译转换.
转换速度。的输出空间位置时
B
使用“XData”
而且“YData”
,imtransform
使用函数自动估计位置findbounds
.你可以用findbounds
作为一些常用转换(如仿射或射影)的快速前向映射选项。对于没有前向映射的转换,例如由fitgeotrans
,findbounds
可能要花更长的时间。如果你可以指定“XData”
而且“YData”
对于这种变换,imtransform
可能会跑得明显更快。剪裁。的自动估计
“XData”
而且“YData”
使用findbounds
有时截取输出图像。为了避免剪切,设置“XData”
而且“YData”
直接。任意维变换。使用二维变换
tform
当使用imtransform
.有关任意维数组转换,请参见tformarray
.