主要内容

imwarp

应用几何变换图像

描述

例子

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

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

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

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

例子

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

提示

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

例子

全部折叠

读灰度图像到工作区中并显示它。

I = imread('cameraman.tif');imshow(我)

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

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

TForm的= affine2d([1 0 0; 0.5 1 0 0 0 1])
TForm的= affine2d与属性:T:[3×3双]维度:2

对图像应用转换。

J = imwarp(I,TForm的);图imshow(J)

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

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

s =负载('MRI');mriVolume =挤压(其中);sizeIn =大小(mriVolume);hFigOriginal =图;hAxOriginal =轴;片(双(mriVolume) sizeIn (2) / 2, sizeIn (1) / 2, sizeIn (3) / 2);网格,阴影插值函数,颜色表灰色的

图中包含一个轴对象。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 with properties: T: [4x4 double] dimension: 3

对图像应用转换。

mriVolumeRotated = imwarp(mriVolume,TForm的);

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

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

图中包含一个轴对象。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类型的对象。

创建一个2-d仿射变换。此示例中的范围内产生的随机变换,它由刻度的一个因子在范围[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''与输入相同');

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

BCenterOutput = imwarp(A,TForm的,'OutputView', centerOutput);BFollowOutput = imwarp (tform,'OutputView', followOutput);BSameAsInput = imwarp (tform,'OutputView', sameAsInput);

显示结果图像。

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

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

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

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

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

图中包含一个轴对象。与标题SameAsInput边界风格的轴对象包含类型图像的对象。

iptsetpref (“ImshowAxesVisible”'离开'

输入参数

全部折叠

图像将被变换,指定为任何尺寸的数字,逻辑或分类数组。

数据类型:|双倍的|int8|INT16|INT32|Int64的|UINT8|UINT16|UINT32|uint64|逻辑|明确的

几何变换申请,指定为rigid2daffine2dprojective2drigid3d,或affine3d对象。

  • 如果tform是2- d和一个具有多于两个的维度,例如用于RGB图像,然后imwarp将相同的二维变换应用到高维的所有二维平面上。

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

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

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

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

  • 如果一个是大小为3-d的灰度图像-经过-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对象,用于3-d转换。

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

插值法 描述
“最近”

最近邻插值。输出像素被分配,该点落在内的像素的值。没有其他的像素被认为是。

最近邻插值是支持分类图像的唯一方法,它是这种类型的图像的默认方法。万博1manbetx

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

数据类型:char|细绳

名称-值参数

指定可选的逗号分隔的对名称,值参数。姓名参数名和价值为对应值。姓名必须出现在引号内。可以以任意顺序指定多个名称和值对参数名1,值1,...,NameN,值N

例子:“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- TO-N输入图像的一个.例如,如果一个由- 200 - 200 - 10 - 3,然后呢FillValues可以是10×3阵列。

3-d灰度或逻辑性图像 三维
  • 数字标

分类图片 2-d或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