主要内容

imtransform.

将2-D空间转换应用于图像

imtransform.不推荐。用imwarp.反而。

描述

例子

B.= imtransform(一种tform.转换图像一种根据由此定义的2-D空间转换tform.,并返回转换图像,B.

如果一种是彩色图像吗imtransform.将相同的2-D转换应用于每个颜色通道。同样,如果一种那么,体积或图像序列是否具有三个或多个维度imtransform.沿着更高的尺寸将相同的2-D转换应用于所有2-D平面。对于任意维数阵列转换,使用tformarray

B.= imtransform(一种tform.interp.指定要使用的插值的形式。

B.= imtransform(___名称,价值使用名称-值对来控制空间转换的各个方面。

例子

[B.xdata.ydata.] = imtransform(___还返回输出图像的范围B.在输出x-y空间中。默认,imtransform.计算xdata.ydata.自动这样B.包含整个变换图像一种.但是,您可以通过指定值来覆盖此自动计算xdata.ydata.名称值对输入参数。

例子

简单的转型

将水平剪切施加到灰度图像。

我= imread(“cameraman.tif”);tform = maketform('仿射', (1 0 0;5 1 0;0 0 1);J = imtransform(我tform);imshow (J)

投影转型

用射影变换把一个正方形映射到一个四边形。设置一个输入坐标系统,以便输入图像用顶点(0 0)、(1 0)、(1 1)、(0 1)填充单位正方形。

我= 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,'bicubic'......'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(未注册)

将orthophoto读入Matlab工作区并查看。

图imshow('westconcordorthophoto.png'

预先挑选的负载控制点。

加载westconcordpoints

使用该点创建用于投影转换的转换结构。

t_concord = cp2tform(移动点,固定点,'投影');

获取正射影像的宽度和高度,执行转换,并查看结果。

信息= imfinfo ('westconcordorthophoto.png');注册= imtransform(未注册,t_concord,......'xdata',[1 info.width],'ydata',[1 info.height]);数字imshow(已注册)

输入参数

全部收缩

要转换的图像,指定为任何维度的数字或逻辑数组。

数据类型:单身的|双倍的|INT8.|int16|int32|INT64.|uint8.|uint16|UINT32.|UINT64|逻辑

转换结构体,指定为结构体,例如maketform.或者cp2tform..转换的第一维度是水平或X- 坐标,第二层是垂直或y-协调。本次惯例是Matlab中的数组订购公约的反面。

插值方法,指定为这些值之一。

插值方法 描述
'双线性' 线性插值
“最近的” 最近邻的插值 - 输出像素被分配了点在内部的像素的值。没有考虑其他像素。
'bicubic' 立方插值
重新采样器结构体 重新采样器结构返回makeresampler..此选项允许更好地控制如何imtransform.执行重采样。

数据类型:字符

名称值对参数

指定可选的逗号分离对名称,价值参数。名称是参数名称和价值是相应的价值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:b = imtransform(a,t,'fillvalues',128)

输入图像的空间范围一种在U-V输入空间中,指定为2元元数字向量。价值Udata.vdata.代表世界坐标系中的坐标。两个元素Udata.的第一列和最后一列的坐标(水平)一种,分别。两个元素vdata.V.- 第一个和最后一排的(垂直)一种

默认情况下,空间范围一种在U-V空间中的像域与在本征坐标中的像域相同。换句话说,默认值Udata.[1尺寸(a,2)]和默认值vdata.[1尺寸(1)

转换图像的空间范围B.在X-Y输入空间中,指定为2元数字向量。价值xdata.ydata.代表世界坐标系中的坐标。两个元素xdata.X的第一列和最后一列的坐标(水平)B.,分别。两个元素ydata.y- 第一个和最后一排的(垂直)B.

如果您未指定xdata.ydata., 然后imtransform.估计包含整个变换输出图像的值。确定这些值,imtransform.用来findbounds.功能。

X-Y输出空间中的像素大小,指定为数字标量或2元数字矢量。如果Xyscale.是标量,然后输出像素是正方形的Xyscale.指定侧面长度。否则,两个元素Xyscale.分别在X-Y空间中分别指定每个输出像素的宽度和高度。

的默认值Xyscale.取决于你是否指定尺寸

  • 如果您指定尺寸, 然后imtransform.计算Xyscale.尺寸xdata., 和ydata.

  • 如果您未指定尺寸, 然后imtransform.使用输入像素的比例Xyscale.,除非在将导致过大的输出图像的情况下。

笔记

在保留输入图像的规模的情况下会导致过大的输出图像,imtransform.功能会自动增加值Xyscale..要确保输出像素刻度与输入像素缩放匹配,请指定Xyscale.范围。例如,呼叫imtransform.如以下语法所示:

b = imtransform(a,t,'xyscale',1)

变换图像的大小B.,指定为一个正整数的二元向量。两个元素尺寸指定输出图像的行数和列数B.,分别。对于更高的维度,imtransform.占有大小B.直接从输入图像的大小一种.因此,尺寸(b,k)等于尺寸(a,k)为了k> 2

如果您未指定尺寸, 然后imtransform.从中获得此值xdata.ydata., 和Xyscale.

用于输入图像边界外的输出像素的填充值,指定为包括的逗号分隔对'fillvalues'和数字标量或数字数组。填充值用于输出像素当输入图像中的相应反转位置完全在输入图像边界外部时。

  • 如果输入图像一种是2-D,然后填充必须是标量。

  • 如果一种是3-D或n-D,然后填充可以是大小满足以下约束的数组:大小(FillValues k)必须等于尺寸(a,k + 2)或者1

    例如,如果一种是A.uint8.RGB图像为200乘200×3,然后是可能性'fillvalues'包括以下值。

    价值 充满
    0. 填满黑色
    [0; 0; 0] 填满黑色
    255. 填充白色
    [255; 255; 255] 填充白色
    [0; 0; 255] 填充蓝色
    [255; 255; 0] 填充黄色

    对于第二个例子,如果一种是4-D,尺寸为200-200×3-10,然后可以指定'fillvalues'作为标量,1×10载体,3×1载体或3×10矩阵。

输出参数

全部收缩

变换图像,作为与输入图像相同的数字或逻辑阵列返回一种

变换图像的水平范围B.在X-Y输出空间中,返回为2元元数字向量。两个元素xdata.X的第一列和最后一列的坐标(水平)B.在世界坐标系中。

笔记

第一个元素xdata.始终等于第一个元素xdata.参数,如果指定。但是,有时是第二个要素xdata.不完全等于第二个元素xdata..由于需要整数的行和列,或者因为指定值xdata.ydata.Xyscale., 和尺寸这并不完全一致。

变换图像的垂直范围B.在X-Y输出空间中,返回为2元元数字向量。两个元素ydata.y- 第一个和最后一排的(垂直)B.在世界坐标系中。

笔记

第一个元素ydata.始终等于第一个元素ydata.参数,如果指定。但是,有时是第二个要素ydata.不完全等于第二个元素ydata..由于需要整数的行和列,或者因为指定值xdata.ydata.Xyscale., 和尺寸这并不完全一致。

提示

  • 图像配准。imtransform.函数自动将输出图像的原点移位,以便尽可能多地移动变换图像。如果你使用imtransform.要进行图像注册,语法B = imtransform (tform)能产生意想不到的结果。若要控制输出图像的空间位置,请设置xdata.ydata.明确。

  • 纯粹的翻译。打电话给imtransform.除非您指定,否则具有纯平版转换的功能导致输出图像完全像输入图像xdata.ydata.呼叫中的价值观imtransform..例如,如果您希望输出与显示相对于输入图像的平移的输入大小相同,则调用imtransform.如以下语法所示:

    b = imtransform(a,t,'xdata',[1尺寸(a,2)],......'ydata',[1尺寸(a,1)])

    有关此主题的更多信息,请参见执行简单的二维转换

  • 转换速度。如果您未指定输出空间位置B.使用xdata.ydata., 然后imtransform.使用该功能自动估算位置findbounds..您可以使用findbounds.作为一些常用的转换的快速前进映射选项,例如仿射或投射。对于没有前向映射的转换,例如由此计算的多项式转换fitgeotransfindbounds.可能需要更长的时间。如果你可以指定xdata.ydata.直接用于这种转变,然后imtransform.可能明显更快地运行。

  • 剪裁。自动估计xdata.ydata.使用findbounds.有时剪辑输出图像。为避免剪切,设置xdata.ydata.直接地。

  • 任意尺寸变换。使用2-D转换tform.使用时imtransform..对于任意维数阵列转换,请参阅tformarray

在R2006A之前介绍