imwarp
几何变换应用到图像
语法
描述
(___)= imwarp (___,
使用指定类型的插值。插值函数
)
(___)= imwarp (___,
指定名称的参数控制几何变换的各个方面。名称=值
)
提示
如果输入转换tform
没有定义一个变换,然后使用吗OutputView
名称-值参数来加快转变。
例子
应用水平剪切图像
读取和显示一个灰度图像。
我= imread (“cameraman.tif”);imshow(我)
创建一个二维仿射变换。
A = [1 0.5 0;0 1 0;0 0 1);tform = affinetform2d(一个);
应用到图像的转换。
J = imwarp(我tform);imshow (J)
应用旋转变换三维核磁共振成像数据
加载和显示三维核磁共振成像容积图像。
负载(“核磁共振”);mriVolume =挤压(D);volshow (mriVolume);
创建一个旋转的三维刚性变换对象周围的图像y设在。
θ= 22.5 [0 0];transl = (0 0 0);tform = rigidtform3d(θ,transl);
转换应用到图像和显示结果。
mriVolumeRotated = imwarp (mriVolume tform);volshow (mriVolumeRotated);
经图像使用不同的输出视图风格
读取和显示一个图像。图像的空间范围,使轴可见。
一个= imread (“kobi.png”);= imresize (0.25);iptsetpref (“ImshowAxesVisible”,“上”)imshow (A)
创建一个二维仿射变换。这个示例创建一个随机变换,由规模的因素范围[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边界风格”);
imshow (BFollowOutput)标题(“FollowOutput边界风格”);
imshow (BSameAsInput)标题(“SameAsInput边界风格”);
iptsetpref (“ImshowAxesVisible”,“关闭”)
输入参数
一个
- - - - - -图像被转换
数字数组|逻辑阵列|分类数组
图像转换,指定为一个数字,逻辑,或直言任何维度的数组。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|逻辑
|分类
tform
- - - - - -几何变换
几何变换对象
几何变换,指定为一个几何变换对象表中列出。
几何变换对象 | 描述 |
---|---|
二维线性几何转换 | |
transltform2d |
翻译转换 |
rigidtform2d |
刚性变换:平移和旋转 |
simtform2d |
相似变换:平移、旋转、各向同性的扩展 |
affinetform2d |
仿射变换:平移、旋转、各向异性缩放、反射和剪切 |
projtform2d |
射影变换 |
三维线性几何转换 | |
transltform3d |
翻译转换 |
rigidtform3d |
刚性变换:平移和旋转 |
simtform3d |
相似变换:平移、旋转、各向同性的扩展 |
affinetform3d |
仿射变换:平移、旋转、各向异性缩放、反射和剪切 |
非线性几何转换 | |
geometricTransform2d |
二维几何变换 |
geometricTransform3d |
三维几何变换 |
PolynomialTransformation2D |
多项式变换 |
PiecewiseLinearTransformation2D |
分段线性变换 |
LocalWeightedMeanTransformation2D |
局部加权平均数的转换 |
如果
tform
二维和一个
有超过两个维度,比如RGB图像,然后呢imwarp
相同的2 d转换适用于所有二维平面在更高的维度。如果
tform
是3 d,那么一个
必须是一个三维图像体积。
D
- - - - - -位移场
数字数组
位移场,指定为数字数组。位移场定义了网格输出图像的大小和位置。位移值以像素为单位。imwarp
假设D
引用默认的内在协调系统。估计位移场,使用imregdemons
。
如果
一个
是一个二维灰度图像的尺寸吗米——- - - - - -n,然后指定位移场的米——- - - - - -n2数组。D (:: 1)
包含位移沿x设在。imwarp
将这些值添加到列和行位置D
贴图的位置一个
。同样的,D (:: 2)
包含位移沿y设在。如果
一个
是一个二维RGB或多光谱图像的尺寸吗米——- - - - - -n——- - - - - -c你指定D
作为一个米——- - - - - -n2数组,然后imwarp
独立操作每一个二维的颜色通道。D (:: 1)
包含位移沿x设在所有颜色的通道。同样的,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
插值函数
- - - - - -使用的插值类型
“最近的”
|“线性”
|“立方”
指定类型的插值使用,作为其中一个值。
插值法 | 描述 |
---|---|
“最近的” |
加权插值。分配输出像素值的像素点属于。没有其他的像素被认为是。 近邻插值的唯一方法支持分类图像和默认的方法对这种类型的图像。金宝app |
“线性” |
线性插值。线性插值是默认的数字和逻辑图像插值方法。 |
“立方” |
三次插值 |
数据类型:字符
|字符串
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
例子:B = imwarp (A、tform FillValues = 255)
使用一个填满的价值255年
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:B = imwarp (tform,“FillValues”, 255年)
使用一个填满的价值255年
OutputView
- - - - - -输出图像的大小和位置
imref2d
对象|imref3d
对象
输出图像的大小和位置世界坐标系统,指定为一个imref2d
或imref3d
空间引用对象。对象属性,定义输出图像的大小和输出图像的位置在世界坐标系统。
您可以创建一个输出视图使用affineOutputView
函数。复制所计算的默认输出视图imwarp
,使用默认的边界样式(“CenterOutput”
)affineOutputView
。
你不能指定OutputView
当你指定一个输入位移场D
。
FillValues
- - - - - -填值
数字标量|数字数组|字符串标量|特征向量|失踪
填补用于输出像素值在输入图像外,表中指定的值。imwarp
使用填充输出像素值时对应的逆输入图像转换位置完全在输入图像边界。
默认填写数字和逻辑图像的价值0
。默认填充分类图像的价值失踪
,对应于<定义>
类别。
图像类型 |
转换维度 | 的格式填值 |
---|---|---|
二维灰度图像或逻辑 | 二维 |
|
二维彩色图像或二维多光谱图像 | 二维 |
|
一系列的p二维图像 | 二维 |
|
N- d图像 | 二维 |
|
3 d图像灰度或逻辑 | 三维 |
|
分类图片 | 二维或三维 |
|
例子:255年
填补了uint8
图像与白色像素
例子:1
填补了双
图像与白色像素
例子:(0 1 0)
填补了双
与绿色像素彩色图像
例子:[0 1 0;0 1 1]“
一系列的两个双
彩色图像,让第一个图像与青绿色像素和第二图像像素
例子:“汽车”
填补了分类图像的“车辆”的类别
SmoothEdges
- - - - - -垫图像创建平滑的边缘
假
(默认)|真正的
垫图像创建平滑的边缘,指定为真正的
或假
。当设置为真正的
,imwarp
创建一个平滑输出图像的边缘填充指定的输入图像与价值观FillValues
。当设置为假
,imwarp
不垫的形象。选择假
(没有填充)输入图像边缘清晰会导致输出图像。这种尖锐的优势可以有助于减少接缝扭曲当注册两个图片并排。
输出参数
算法
imwarp
决定了输出图像的像素值映射位置的输出图像输入图像中对应的位置(一个逆映射)。当一个像素的中心输出图像不映射到输入图像中的一个像素的中心,imwarp
在输入图像篡改来计算输出像素值。
棋盘的图展示了一个翻译转换图像,每平方的10像素。按照惯例,输入空间中的坐标轴标签u和v和输出空间的坐标轴标签x和y。利用逆变换,像素(x,y35)坐标(25日)在输出坐标空间映射到(u,v)坐标(5,5)在输入坐标空间。
imwarp
执行映射使用世界坐标。有关更多信息,请参见图像坐标系统。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
imwarp
金宝app支持C代码的生成(需要MATLAB®编码器™)。注意,如果您选择通用MATLAB主机
目标平台,imwarp
生成的代码使用了一个预编译的,特定于平台的共享库。使用一个共享库保存性能优化,但限制的目标平台可以生成代码。有关更多信息,请参见类型的代码生成图像处理工具箱的支持金宝app。不支持输入的图像数据类型分类。金宝app
几何变换对象输入,
tform
,必须代表一个二维几何变换。插值方法和可选参数名称必须是常数。
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
使用笔记和限制:
不支持输入的图像数据类型分类。金宝app
几何变换对象输入,
tform
,必须代表一个二维几何变换。插值方法和可选参数名称必须是常数。
空间参考信息输出,
RB
,不支持。金宝app
线程环境
在后台运行代码使用MATLAB®backgroundPool
与并行计算工具箱™或加速代码ThreadPool
。
这个函数完全支持线程的环境。金宝app有关更多信息,请参见MATLAB函数线程环境中运行。
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
版本历史
介绍了R2013aR2022b:金宝app支持新的几何变换对象
从R2022b,大多数图像处理工具箱™函数创建和使用自左乘公约执行几何转换。因此,您现在可以指定tform
作为一个几何变换对象,使用一个自左乘约定,如一个affinetform2d
对象。
尽管你仍然可以指定tform
作为一个几何变换对象,使用一个自右乘约定,如一个affine2d
不推荐对象,这些对象。你可以简化几何变换工作流通过切换到新的自左乘几何变换对象。有关更多信息,请参见几何转换迁移到自左乘公约。
R2021b:金宝app支持线程的环境
imwarp
现在支持金宝app线程的环境。
R2021a:增强支持GPU加速金宝app
的imwarp
现在已经支持GPU加速功能,支持扩展到包括使用位金宝app移场。
Apri esempio
如果dispone di una versione modificata di questo esempio。Desideri aprire questo esempio con le modifiche星期二吗?
第一MATLAB
海脂肪clic苏联合国collegamento切corrisponde questo第一MATLAB:
Esegui il第一inserendolo所以nella隙缝di第一MATLAB。我浏览器web非supportano金宝app comandi MATLAB。
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。