# imwarp
对图像应用几何变换
函数库: TyImageProcessing
# 语法
B, = imwarp(A,tform)
B, = imwarp(A,D)
B,RB = imwarp(A,RA,tform)
___ = imwarp(___,interp)
___ = imwarp(___;Name=Value)
# 说明
B, = imwarp(A,tform) 根据几何变换 tform 来变换数值、逻辑或分类图像 A。该函数在 B 中返回变换后的图像。示例
B, = imwarp(A,D) 根据位移场 D 变换图像 A。
B,RB = imwarp(A,RA,tform) 变换由图像数据 A 指定的空间参照图像及其关联的空间参照对象 RA。输出是由图像数据 B 指定的空间参照图像及其关联的空间参照对象 RB。
___ = imwarp(___,interp) 指定要使用的插值的类型。
___ = imwarp(___;Name=Value) 指定名称-值参量来控制几何变换的各个方面。
# 示例
对图像应用水平剪切
读取并显示灰度图像。
using TyImageProcessing
I = imread("cameraman.tif");
imshow(I)
创建一个二维仿射变换。
A = [1 0.5 0; 0 1 0; 0 0 1];
tform = affinetform2d(A);
对图像应用变换。
J, = imwarp(I, tform);
imshow(J)

# 输入参数
A — 要变换的图像数值数组 | 逻辑数组
要变换的图像,指定为任意维度的数值或逻辑数组。
数据类型: Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64 | Bool
tform — 几何变换几何变换对象
几何变换,指定为表中列出的几何变换对象。
二维线性几何变换:
| 几何变换对象 | 描述 |
|---|---|
| transltform2d | 平移变换 |
| rigidtform2d | 刚性变换:平移和旋转 |
| simtform2d | 相似变换:平移、旋转和各向同性缩放 |
| affinetform2d | 仿射变换:平移、旋转、各向异性缩放、翻转和剪切 |
| projtform2d | 投影变换 |
D — 位移场数值数组
位移场,指定为数值数组。位移场定义输出图像的网格大小和位置。位移值以像素为单位。imwarp 假设 D 参照默认的内部坐标系。
如果 A 是大小为 m×n 的二维灰度图像,则将位移场指定为 m×n×2 数组。D[:,:,1] 包含沿 x 轴的位移。imwarp 将这些值添加到 D 中的列和行位置,以在 A 中生成重新映射的位置。同样,D[:,:,2] 包含沿 y 轴的位移;
如果 A 是大小为 m×n×c 的二维 RGB 或多光谱图像,并且您将 D 指定为 m×n×2 数组,则 imwarp 会独立地对每个二维颜色通道执行运算。D[:,:,1] 包含所有颜色通道沿 x 轴的位移。同样,D[:,:,2] 包含沿 y 轴的位移;
如果 A 是大小为 m×n×p 的三维灰度图像,则请将位移场数组指定为 m×n×p×3 数组。D[:,:,:,1] 包含沿 x 轴的位移。imwarp 将这些值添加到 D 中的列、行和深度位置,以在 A 中生成重新映射的位置。同样,D[:,:,:,2] 和 D[:,:,:,3] 包含沿 y 和 z 轴的位移。
数据类型: Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | UInt8 | UInt16 | UInt32 | UInt64 | Bool
RA — 要变换的图像的空间参照信息imref2d 对象 | imref3d 对象
要变换的图像的空间参照信息,对于二维变换指定为 imref2d 对象,对于三维变换指定为 imref3d 对象。
interp — 使用的插值的类型"nearest" | "linear" | "cubic"
使用的插值的类型,指定为下列值之一。
| 插值方法 | 描述 |
|---|---|
| "nearest" | 最近邻点插值。赋给输出像素的值就是输入点所在像素的值。不考虑其他像素。最近邻点插值是分类图像支持的唯一方法,也是此类型的图像的默认方法。 |
| "linear" | 线性插值。线性插值是数值和逻辑图像的默认插值方法。 |
| "cubic" | 三次插值 |
数据类型: String
# 名称-值参数
将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量后,但对各个参量对组的顺序没有要求。
示例: B = imwarp(A,tform;FillValues=255) 使用填充值 255
OutputView — 输出图像的大小和位置imref2d 对象 | imref3d 对象
输出图像在世界坐标系中的大小和位置,指定为 imref2d 或 imref3d 空间参照对象。对象具有定义输出图像大小和输出图像在世界坐标系中位置的属性。
您可以使用 affineOutputView 函数创建输出视图。要复制由 imwarp 计算的默认输出视图,请使用 affineOutputView 的默认边界样式 ("CenterOutput")。
在指定了输入位移场 D 时,将无法指定 OutputView。
FillValues — 填充值数值标量 | 数值数组
当输出图像落在输入图像之外时的填充值,指定为表中的值之一。如果输出像素对应的位置经逆变换后完全处于输入图像边界之外,imwarp 将对该输出像素使用填充值。
数值和逻辑图像的默认填充值为 0。
| 图像类型 | 变换维度 | 填充值的格式 |
|---|---|---|
| 二维灰度或逻辑图像 | 二维 | 数值标量 |
| 二维彩色图像或二维多光谱图像 | 二维 | |
| 包含 p 个二维图像的序列 | 二维 | |
| N 维图像 | 二维 | |
| 三维灰度或逻辑图像 | 二维 | 数值标量 |
SmoothEdges — 填充图像以创建平滑边缘false (默认) | true
填充图像以创建平滑边缘,指定为 true 或 false。当设置为 true 时,imwarp 通过用 FillValues 指定的值填充输入图像,在输出图像中创建更平滑的边缘。当设置为 false 时,imwarp 不会填充图像。对输入图像选择 false(不填充)会使输出图像的边缘更加锐利。当并排配准两个图像时,这种更锐利的边缘可能有助于最小化接缝失真
# 输出参数
B — 变换后的图像数值数组 | 逻辑数组
变换后的图像,以与输入图像 A 具有相同数据类型的数值或逻辑数组形式返回。
RB — 变换后图像的空间参照信息imref2d 对象 | imref3d 对象
变换后图像的空间参照信息,以 imref2d 或 imref3d 空间参照对象形式返回。
数据类型: affinetform2d