主要内容

imwarp

对图像应用几何变换

描述

例子

B= imwarp (一个tform转换数字、逻辑或分类图像一个根据几何变换tform.函数返回转换后的图像B

B= imwarp (一个D变换图像一个根据位移场D

BRB) = imwarp (一个类风湿性关节炎tform转换由图像数据指定的空间引用图像一个及其关联的空间引用对象类风湿性关节炎.输出是由图像数据指定的空间引用图像B及其关联的空间引用对象RB

___) = imwarp (___插值函数指定要使用的插值类型。

例子

___) = imwarp (___名称,值指定用于控制几何转换的各个方面的名称-值对参数。

提示

如果输入变换tform没有定义前向转换,然后使用OutputView名称-值对参数以加速转换。

例子

全部折叠

将灰度图像读取到工作区并显示。

我= imread (“cameraman.tif”);imshow(我)

图中包含一个轴对象。axis对象包含一个image类型的对象。

创建一个二维几何变换对象。

Tform = affine2d([1 0 0;5 1 0;0 0 1])
tform = affine2d with properties: T: [3x3 double]维数:2

对图像应用转换。

J = imwarp(我tform);图imshow (J)

图中包含一个轴对象。axis对象包含一个image类型的对象。

将3-D核磁共振数据读取到工作空间,并将其可视化。

s =负载(“核磁共振”);mriVolume =挤压(其中);sizeIn =大小(mriVolume);hFigOriginal =图;hAxOriginal =轴;片(双(mriVolume) sizeIn (2) / 2, sizeIn (1) / 2, sizeIn (3) / 2);网格,阴影插值函数, colormap灰色的

图中包含一个轴对象。axis对象包含3个类型为surface的对象。

创建一个三维几何变换对象。首先创建一个变换矩阵,旋转图像围绕y设在。然后创建一个affine3d对象从变换矩阵。

θ=π/ 8;T = [cos 0 -sin 0 0 1 0 0 0 sin 0 cos 0 0 0 1];tform = affine3d (t)
TForm =带有属性的Affine3D:T:[4x4双]维度:3

对图像应用转换。

mriVolumeRotated = imwarp (mriVolume tform);

通过转换后的体块的中心视觉化三个切面。

sizeOut =大小(mriVolumeRotated);hFigRotated =图;hAxRotated =轴;片(双(mriVolumeRotated) sizeOut (2) / 2, sizeOut (1) / 2, sizeOut(3) / 2)网格,阴影插值函数, colormap灰色的

图中包含一个轴对象。axis对象包含3个类型为surface的对象。

将两个轴的视图连接在一起。

linkprop ([hAxOriginal, hAxRotated],“视图”);

设置视图以查看旋转的效果。

集(hAxRotated,“视图”(-3.5 - 20.0))

图中包含一个轴对象。axis对象包含3个类型为surface的对象。

图中包含一个轴对象。axis对象包含3个类型为surface的对象。

读取并显示图像。要查看图像的空间范围,请使坐标轴可见。

一个= imread (“kobi.png”);iptsetpref (“ImshowAxesVisible”“上”) imshow (A)

图中包含一个轴对象。axis对象包含一个image类型的对象。

创建一个二维仿射变换。这个例子创建了一个随机变换,它包含范围为[1.2,2.4]的比例因子,范围为[- 45,45]度的旋转角度,以及范围为[100,200]像素的水平平移距离。

tform = randomAffine2d (“规模”[1.2, 2.4],“XTranslation”(100 200),“旋转”, -45年,45);

为图像和转换创建三个不同的输出视图。

centerOutput = affineOutputView(大小(A)、tform“BoundsStyle”“CenterOutput”);followOutput = affineOutputView(大小(A)、tform“BoundsStyle”“FollowOutput”);sameAsInput = affineOutputView(大小(A)、tform“BoundsStyle”“SameAsInput”);

使用每种不同的输出视图样式对输入图像应用转换。

BCenterOutput = imwarp (tform,“OutputView”, centerOutput);BFollowOutput = imwarp (tform,“OutputView”, followOutput);BSameAsInput = imwarp (tform,“OutputView”, sameAsInput);

显示结果图像。

imshow (BCenterOutput)标题(“CenterOutput边界风格”);

图中包含一个轴对象。标题为CenterOutput Bounds Style的axis对象包含一个类型为image的对象。

imshow (BFollowOutput)标题(“FollowOutput边界风格”);

图中包含一个轴对象。带有标题跟踪绑定样式的轴对象包含类型图像的对象。

imshow (BSameAsInput)标题(“SameAsInput边界风格”);

图中包含一个轴对象。标题为SameAsInput Bounds Style的axes对象包含一个类型为image的对象。

iptsetpref (“ImshowAxesVisible”“关闭”

输入参数

全部折叠

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

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|分类

要应用的几何变换,指定为rigid2daffine2dprojective2drigid3d,或affine3d对象。

  • 如果tform二维和一个有两个以上的维度,比如RGB图像,那么呢imwarp将相同的二维变换应用到高维的所有二维平面上。

  • 如果tform是3 d,那么一个必须是三维图像体积。

位移字段,指定为数字数组。位移场定义了输出图像的网格大小和位置。位移值以像素为单位。imwarp假设D被引用到默认的固有坐标系统。要估计位移场,使用imregdemons

  • 如果一个是二维灰度图像的大小——- - - - - -n,则指定位移场为——- - - - - -n2数组。D (:: 1)包含沿x设在。imwarp中的列和行位置添加这些值D在。中产生重新映射的位置一个.同样的,D (:: 2)包含沿y设在。

  • 如果一个是二维RGB还是多光谱图像的尺寸——- - - - - -n——- - - - - -c你指定了D作为一个——- - - - - -n2数组,然后imwarp独立操作每个二维彩色通道。D (:: 1)包含沿x-axis用于所有颜色通道。同样的,D (:: 2)包含沿y设在。

  • 如果一个是三维灰度图像的大小——- - - - - -n——- - - - - -p,然后将位移字段数组指定为——- - - - - -n——- - - - - -p3数组。D (:,:: 1)包含沿x设在。imwarp中的列、行和深度位置添加这些值D在。中产生重新映射的位置一个.同样的,D (:,:: 2)D (:,:: 3)包含沿y- - -z设在。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

要转换的图像的空间引用信息,指定为imref2d对象的二维变换或imref3d对象进行三维变换。

所使用的插值类型,指定为这些值之一。

插值法 描述
“最近的”

最近邻插值。将点所在像素的值赋给输出像素。不考虑其他像素。

最近邻插值是分类图像唯一支持的方法,它是这类图像的默认方法。金宝app

“线性” 线性插值。这是数值和逻辑图像的默认插值方法。
“立方” 三次插值

数据类型:字符|字符串

名称-值参数

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

例子:“FillValues”,255年使用255的填充值

输出图像在世界坐标系中的大小和位置,指定为逗号分隔对,由“OutputView”和一个imref2dimref3d空间引用对象。对象具有定义输出图像的大小和输出图像在世界坐标系中的位置的属性。

控件可以创建输出视图affineOutputView函数。复制按计算的默认输出视图imwarp,使用默认边界样式(“CenterOutput”)affineOutputView

你不能指定OutputView当您指定输入位移字段时D

填充用于输入图像外部的输出像素的值,指定为逗号分隔对组成“FillValues”和下列值之一。imwarp当输入图像中对应的反变换位置完全超出输入图像边界时,对输出像素使用填充值。

数字和逻辑图像的默认填充值为0.分类图像的默认填充值是失踪,对应于<定义>类别。

图像类型

转换维度

填充值格式

二维灰度或逻辑图像 二维
  • 数字标量

二维彩色图像或二维多光谱图像 二维
  • 数字标量

  • c元素数值向量,指定每个元素的填充值c频道。信道的数量,c,为3表示彩色图像。

一系列的p二维图像 二维

  • 数字标量

  • c——- - - - - -p数字矩阵。信道的数量,c,表示灰度图像为1,彩色图像为3。

N- d图像 二维
  • 数字标量

  • 大小匹配维度3到-的数字数组N输入图像的一个.例如,如果一个由- 200 - 200 - 10 - 3,然后呢FillValues可以是一个10乘3的数组。

3-D灰度或逻辑图像 三维
  • 数字标量

分类图片 二维或三维
  • 图像中的有效类别,指定为字符串标量或字符向量。

  • 失踪,对应于<定义>类别。有关更多信息,请参见失踪

例子:255填补了uint8白色像素图像

例子:1填补了白色像素图像

例子:(0 1 0)填补了带有绿色像素的彩色图像

例子:[0 1 0;0 1 1]“,两个系列彩色图像,用绿色像素填充第一个图像,用青色像素填充第二个图像

例子:“汽车”用“车辆”类别填充分类图像

填充图像以创建平滑的边缘,指定为真正的.当设置为真正的imwarp用指定的值填充输入图像,在输出图像中创建更平滑的边缘FillValues.当设置为imwarp不填充图像。选择(而不是填充)输入图像可以在输出图像中产生更锐利的边缘。当并排配准两幅图像时,这种锋利的边缘可以有效地减少接缝畸变。

输出参数

全部折叠

转换后的图像,作为与输入图像具有相同数据类型的数字、逻辑或类别数组返回一个

转换后的图像的空间引用信息,以imref2dimref3d空间引用对象。

算法

imwarp通过将输出图像中的位置映射到输入图像中相应的位置来确定输出图像中的像素值(逆映射)。imwarp插值输入图像以计算输出像素值。

下图说明了一个转换转换。按照惯例,输入空间中的轴被标记uv输出空间的坐标轴被标记了xy。在图中,注意如何操作imwarp修改定义输入图像中像素位置的空间坐标。(1,1)的像素现在被定位为(41,41)。在棋盘图像中,每个黑色、白色和灰色的正方形都是10像素高和10像素宽。有关空间坐标和像素坐标之间区别的更多信息,请参见图像坐标系统

输入图像转换

扩展功能

介绍了R2013a