文档

imregdemons

估计位移场对齐两个2-D或3-D图像

语法

[D,moving_reg] = imregdemons(移动,固定)
[___] = imregdemons(移动,固定,N)
[gpuarrayD,gpuarrayMoving_reg] = imregdemons(gpuarrayMoving,gpuarrayFixed,N)
[___] = imregdemons(___,Name,Value,…)

描述

例子

Dmoving_reg] = imregdemons(移动固定估计位移场D对准要配准的图像,移动,取参考图像,固定移动而且固定为二维或三维强度图像。

位移矢量在每个像素位置图位置从固定图像网格中对应的位置移动的形象。moving_reg是扭曲版的吗移动根据位移场扭曲的图像D用线性插值重新采样。

[___] = imregdemons(移动固定N指定要计算的迭代次数。此函数不使用收敛准则,因此总是保证在指定或默认迭代次数下运行。

例子

gpuarrayDgpuarrayMoving_reg] = imregdemons(gpuarrayMovinggpuarrayFixedN在GPU上执行估计。

例子

[___] = imregdemons(___,名称,值,……)使用名称-值对注册运动图像以控制权重计算的各个方面。

例子

全部折叠

这个例子展示了如何解决同一只手以两种不同姿势拍摄的注册问题。图像的错位在每张图像中局部不同。因此这是一个非刚性配准问题。

将两个图像读入工作区。

固定= imread(“hands1.jpg”);移动=不动“hands2.jpg”);

将图像转换为灰度进行处理。

固定= rgb2gray(固定);移动= rgb2gray(移动);

观察最初的错位。手指处于不同的姿势。在第二张图中,两个图像相互叠加,以便于看到图像的不同之处。差异用绿色突出显示。

图imshowpair(固定,移动,“蒙太奇”

图imshowpair(固定、移动)

正确的照明之间的差异移动而且固定图像使用直方图匹配。这是一个常见的预处理步骤。

移动= imhistmatch(移动,固定);

估计将两个图像对齐所需的转换。

[~,movingReg] = imregdemons(移动,固定,[500 400 200],...“AccumulatedFieldSmoothing”, 1.3);

显示注册的结果。在第一个图中,图像被叠加以显示对齐。

movingReg图imshowpair(固定)

图imshowpair (movingReg固定,“蒙太奇”

在GPU上执行非刚性注册。

将图像读入工作区。

固定= imread(“hands1.jpg”);移动=不动“hands2.jpg”);

观察最初的错位。(手指在不同的位置。)

图imshowpair(固定,移动,“蒙太奇”imshowpair(固定,移动)

创建gpuArrays并将图像转换为灰度。

fixedGPU = gpuArray(fixed);movingGPU = gpuArray(移动);fixedGPU = rgb2gray(fixedGPU);movingGPU = rgb2gray(movingGPU);

使用直方图匹配来纠正运动和固定图像之间的照明差异。这是一个常见的预处理步骤。

fixedHist = imhist(fixedGPU);movingGPU = histeq(movingGPU,fixedHist);

执行注册。

[~,movingReg] = imregdemons(movingGPU,fixedGPU,[500 400 200],“AccumulatedFieldSmoothing”, 1.3);

将已注册的映像带回CPU。

movingReg = gather(movingReg);

查看结果。

图imshowpair(fixed,movingReg)“蒙太奇”

输入参数

全部折叠

要注册的图像,指定为2-D或3-D灰度图像。

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

目标方向上的参考图像,指定为2-D或3-D灰度图像。

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

迭代次数,指定为正整数标量或向量。

当你指定一个向量时,N是每个金字塔级别(分辨率级别)的迭代次数。例如,如果有3个金字塔级别,您可以指定向量(100年,50岁,25),在那里imregdemons在最低分辨率级别执行100次迭代,在下一个金字塔级别执行50次迭代,在最后一个迭代级别(全分辨率级别)执行25次迭代。因为处理低分辨率级别所需的时间更少,所以在低分辨率上运行更多迭代,在金字塔的高分辨率上运行更少迭代,有助于提高性能。金宝搏官方网站

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

用于GPU处理的输入图像,指定为2-D或3-D灰度图像。

GPU上处理的参考图像,指定为包含2-D或3-D灰度图像的gpuArray。

名称-值对参数

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

例子:[D,movingReg] = imregdemons(moving,fixed,[500 400 200],'AccumulatedFieldSmoothing',1.5);

全部折叠

在每次迭代中应用的平滑,指定为由逗号分隔的对组成“AccumulatedFieldSmoothing”和一个数值。此参数控制扩散样正则化的数量。imregdemons应用高斯平滑的标准差对每次迭代的累积场进行正则化。较大的值会产生更平滑的输出位移字段。数值越小,输出位移场的局部变形越大。值通常在[0.5,3.0]范围内。当你指定多个PyramidLevels时,高斯平滑所使用的标准差在每一金字塔层保持不变。

数据类型:

要使用的多分辨率图像金字塔级别的数目,指定为由逗号分隔的对组成“PyramidLevels”一个正整数标量。

数据类型:

显示等待栏以指示进度,由逗号分隔的对组成“DisplayWaitbar”还有价值真正的.当设置为真正的imregdemons显示一个等待条,以指示长时间运行的操作的进度。为了防止imregdemons从显示waitbar, setDisplayWaitbar

    注意:“DisplayWaitbar”参数在图形处理器上不支持。金宝app

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

输出参数

全部折叠

位移字段,指定为数值数组。位移值以像素为单位。

  • 如果固定是大小的2-D灰度图像——- - - - - -n,位移场阵列为——- - - - - -n2。D (:: 1)包含沿的位移x设在和D (:: 2)包含沿的位移y设在。

  • 如果固定3-D灰度图像的大小——- - - - - -n——- - - - - -p,位移场阵列为——- - - - - -n——- - - - - -p3。D (:,:: 1)包含沿的位移x设在,D (:,:: 2)包含沿的位移y设在。而且D (:,:: 3)包含沿的位移z设在。

数据类型:

注册图像,返回为二维或三维灰度图像,根据位移场扭曲D用线性插值重新采样。

位移场,用a表示gpuArray包含类的矩阵

已注册映像,返回为gpuArray包含根据位移场扭曲的2-D或3-D灰度图像gpuarrayD用线性插值重新采样。

提示

  • 用位移场变换图像D,使用imwarp

另请参阅

应用程序

功能

在R2014b中引入

这个话题有用吗?