主要内容

imregicp

采用迭代最近邻点算法进行曲面配准

描述

imregicp函数采用迭代最近邻点(ICP)算法进行曲面刚性配准。使用此函数注册从医疗卷中提取的表面。

regSurface= imregicp (movingSurfacefixedSurface变换表面movingSurface,使其与参考曲面注册fixedSurface使用ICP算法。该函数返回已注册的曲面regSurface

例子

regSurface= imregicp (movingSurfacefixedSurface名称=值使用一个或多个可选的名称-值参数指定ICP算法的选项。

regSurfacetform= imregicp(___返回转换tform在移动曲面和注册曲面之间,以及来自以前语法的输入参数的任何组合。

regSurfacetformrmse= imregicp(___返回均方根误差(RMSE)rmse的欧几里得距离的对齐表面之间的点regSurface而且fixedSurface,以及来自以前语法的输入参数的任何组合。

例子

全部折叠

将包含强度体积数据的MAT文件加载到工作区中。提取卷数据。

负载(fullfile (toolboxdir (“图片”),“imdata”“BrainMRILabeled”“图片”“vol_001.mat”));V = vol;

指定等值面提取的等值。

等值= 0.5;

提取参考体积在指定等值处的等值面。

[~,fixedSurface] = extractIsosurface(V,等值);

显示和检查参考等值面。

图plot3 (fixedSurface (:, 2), fixedSurface (: 1), fixedSurface (:, 3),“o”

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

创建一个刚性变换affinetform3d对象,用于引用卷。

= /18;affineMatrix = [cos(theta) sin(theta) 0 5;...-sin cos 0 5;...0 0 1 10;...0 0 0 1];tform_刚性= affinetform3d(affineMatrix);

使用刚性变换变换参考体积。

tformV = imwarp(V,tform_rigid);

提取变换后的体积在指定等值处的等值面。

[~,movingSurface] = extractIsosurface(tformV,isovalue);

显示和检查变换后的等值面。

图plot3 (movingSurface (:, 2), movingSurface (: 1), movingSurface (:, 3),“o”

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

使用曲面配准将变换后的等值面与参考等值面进行配准。

regSurface = imregicp(movingSurface,fixedSurface,DistanceThreshold=30);
迭代= 1 = 2健身健身= 1.0000 inlierRmse = 11.2527迭代= 1.0000 inlierRmse健身= 3 = 1.0000 = 8.7565迭代inlierRmse = 4健身= 1.0000 = 6.9034迭代inlierRmse = 5健身= 1.0000 = 5.5111迭代inlierRmse = 6健身= 1.0000 = 4.5172迭代inlierRmse = 7健身= 1.0000 = 3.7946迭代inlierRmse = 8健身= 1.0000 = 3.2685迭代inlierRmse = 2.8860迭代= 9健身= 1.0000 inlierRmse = 2.6006迭代健身= = 101.0000 inlierRmse = 2.3830迭代= 11健身= 1.0000 inlierRmse = 2.2119迭代= 12健身= 1.0000 inlierRmse = 2.0698迭代= 13健身= 1.0000 inlierRmse = 1.9481迭代= 14健身= 1.0000 inlierRmse = 1.8440迭代= 15健身= 1.0000 inlierRmse = 1.7480迭代= 16健身= 1.0000 inlierRmse = 1.6617迭代= 17健身= 1.0000 inlierRmse = 1.5824迭代= 18健身= 1.0000 inlierRmse = 1.5087迭代inlierRmse = = 19健身= 1.00001.4391迭代= 20 Fitness = 1.0000 inlierRmse = 1.3745

显示和检查注册等值面。

图plot3 (regSurface (:, 2), regSurface (: 1), regSurface (:, 3),“o”

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

输入参数

全部折叠

要注册的表面,指定为-by-3数值矩阵。是曲面上的点数。每一行包含一个面点的三维坐标。

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

引用表面,指定为-by-3数值矩阵。是曲面上的点数。每一行包含一个面点的三维坐标。

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

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:regSurface = imregicp(移动曲面,固定曲面,度量="pointToPlane")对象注册曲面“pointToPlane”ICP算法的最小度量。

最小化度量,指定为“点到点”“pointToPlane”

在注册平面时,可以使用“pointToPlane”度量减少了算法中的迭代次数,但每次迭代的计算复杂度较高。

数据类型:字符|字符串

ICP算法的最大迭代次数,指定为正整数。

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

初始刚变换,指定为affinetform3d对象。

用于去除异常值的参数,指定为形式为[的两元素向量]nr].

该函数考虑小于的曲面点n在半径范围内的邻居r为异常值,并将它们从已注册表面的考虑中移除。n必须是正整数,然后r肯定是积极的。指定的高值n具有较低的for值r使函数积极地删除异常值。

数据类型:|

最近点的距离阈值,指定为正标量。的DistanceThresholdk近邻搜索考虑一个点的最大距离是多少movingSurface作为一个可能的对应点fixedSurface.增加距离阈值可以使您能够检测到稀疏表面点图像中的对应关系,但也可能导致算法返回假阳性。

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

用于局部平面拟合的点数,指定为大于或等于的正整数3..要指定此参数,必须指定度规作为“pointToPlane”.较小的值NumPoints可以导致更快的计算,但会降低准确性。

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

进度信息输出,以数字或逻辑形式指定1真正的)或0).指定详细的作为真正的来显示迭代次数、适应度分数和更早的RMSE值等信息。

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

输出参数

全部折叠

已注册表面,返回为-by-3数值矩阵。是曲面上的点数。每一行包含一个面点的三维坐标。

数据类型:|

刚性变换,返回为anaffinetform3d对象。

对齐表面的内点之间欧氏距离的均方根误差regSurface而且fixedSurface,作为数字标量返回。

数据类型:

限制

  • imregicp该功能在使用苹果硅芯片的Mac电脑上不受支持。

参考文献

[1]贝丝,pj,尼尔·d·麦凯。3-D形状的注册方法模式分析与机器智能汇刊14日,没有。2(1992年2月):239-56。https://doi.org/10.1109/34.121791。

版本历史

R2022b中引入

Baidu
map