OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
cv::ppf_match_3d::ICP 类参考

此类实现了一种非常高效且鲁棒的迭代最近点(ICP)算法。 任务是将 3D 模型(或点云)与一组噪声目标数据进行配准。 这些变体是我在经过某些测试后组合在一起的。 任务是能够快速匹配杂乱场景中的部分噪声点云。 您会发现我强调的是性能,同时保持准确性。 此实现基于 Tolga Birdal 在此处的 MATLAB 实现:http://www.mathworks.com/matlabcentral/fileexchange/47152-icp-registration-using-efficient-variants-and-multi-resolution-scheme 主要贡献来自:更多...

#include <opencv2/surface_matching/icp.hpp>

cv::ppf_match_3d::ICP 的协作图

公共类型

枚举  {
  ICP_SAMPLING_TYPE_UNIFORM = 0 ,
  ICP_SAMPLING_TYPE_GELFAND = 1
}
 

公共成员函数

 ICP ()
 
 ICP (const int iterations, const float tolerence=0.05f, const float rejectionScale=2.5f, const int numLevels=6, const int sampleType=ICP::ICP_SAMPLING_TYPE_UNIFORM, const int numMaxCorr=1)
 ICP 构造函数,带有默认参数。
 
virtual ~ICP ()
 
int registerModelToScene (const Mat &srcPC, const Mat &dstPC, double &residual, Matx44d &pose)
 执行配准。
 
int registerModelToScene (const Mat &srcPC, const Mat &dstPC, std::vector< Pose3DPtr > &poses)
 执行具有多个初始姿势的配准。
 

详细描述

此类实现了一种非常高效且鲁棒的迭代最近点(ICP)算法。 任务是将 3D 模型(或点云)与一组噪声目标数据进行配准。 这些变体是我在经过某些测试后组合在一起的。 任务是能够快速匹配杂乱场景中的部分噪声点云。 您会发现我强调的是性能,同时保持准确性。 此实现基于 Tolga Birdal 在此处的 MATLAB 实现:http://www.mathworks.com/matlabcentral/fileexchange/47152-icp-registration-using-efficient-variants-and-multi-resolution-scheme 主要贡献来自

  1. Picky ICP: http://www5.informatik.uni-erlangen.de/Forschung/Publikationen/2003/Zinsser03-ARI.pdf
  2. ICP 算法的高效变体:http://docs.happycoders.org/orgadoc/graphics/imaging/fasticp_paper.pdf
  3. ICP 算法的几何稳定采样:https://graphics.stanford.edu/papers/stabicp/stabicp.pdf
  4. 多分辨率配准:http://www.cvl.iis.u-tokyo.ac.jp/~oishi/Papers/Alignment/Jost_MultiResolutionICP_3DIM03.pdf
  5. Kok Lim Low 的点到平面度量线性化:https://www.comp.nus.edu.sg/~lowkl/publications/lowk_point-to-plane_icp_techrep.pdf

成员枚举文档

◆ 匿名枚举

匿名枚举
枚举器
ICP_SAMPLING_TYPE_UNIFORM 
ICP_SAMPLING_TYPE_GELFAND 

构造函数 & 析构函数文档

◆ ICP() [1/2]

cv::ppf_match_3d::ICP::ICP ( )
inline
Python
cv.ppf_match_3d.ICP() -> <ppf_match_3d_ICP 对象>
cv.ppf_match_3d.ICP(iterations[, tolerence[, rejectionScale[, numLevels[, sampleType[, numMaxCorr]]]]]) -> <ppf_match_3d_ICP 对象>

◆ ~ICP()

virtual cv::ppf_match_3d::ICP::~ICP ( )
内联虚拟

◆ ICP() [2/2]

cv::ppf_match_3d::ICP::ICP ( const int iterations,
const float tolerence = 0.05f,
const float rejectionScale = 2.5f,
const int numLevels = 6,
const int sampleType = ICP::ICP_SAMPLING_TYPE_UNIFORM,
const int numMaxCorr = 1 )
inline
Python
cv.ppf_match_3d.ICP() -> <ppf_match_3d_ICP 对象>
cv.ppf_match_3d.ICP(iterations[, tolerence[, rejectionScale[, numLevels[, sampleType[, numMaxCorr]]]]]) -> <ppf_match_3d_ICP 对象>

ICP 构造函数,带有默认参数。

参数
[输入]iterations
[输入]tolerence控制 ICP 每次迭代的配准精度。
[输入]rejectionScale应用鲁棒的异常值剔除以实现鲁棒性。 此值实际上对应于标准偏差系数。 在配准期间,将忽略具有 rejectionScale * &sigma 的点。
[输入]numLevels要进行的金字塔层数。 深金字塔提高了速度,但降低了精度。 太粗糙的金字塔可能会在不准确的配准之上产生计算开销。 应选择此参数以优化平衡。 典型值范围为 4 到 10。
[输入]sampleType当前忽略此参数,仅应用均匀采样。 将其保留为 0。
[输入]numMaxCorr当前忽略此参数,仅应用 PickyICP。 将其保留为 1。

成员函数文档

◆ registerModelToScene() [1/2]

int cv::ppf_match_3d::ICP::registerModelToScene ( const Mat & srcPC,
const Mat & dstPC,
double & residual,
Matx44d & pose )
Python
cv.ppf_match_3d.ICP.registerModelToScene(srcPC, dstPC) -> retval, residual, pose
cv.ppf_match_3d.ICP.registerModelToScene(srcPC, dstPC, poses) -> retval, poses

执行配准。

参数
[输入]srcPC模型的输入点云。 预期具有法线 (Nx6)。 目前,CV_32F 是唯一支持的数据类型。
[输入]dstPC场景的输入点云。 假设模型已在场景中注册。 场景保持静态。 预期具有法线 (Nx6)。 目前,CV_32F 是唯一支持的数据类型。
[输出]residual输出配准误差。
[输出]posesrcPC 和 dstPC 之间的变换。
返回
成功终止时,函数返回 0。

假设模型已在场景中注册。 场景保持静态,而模型进行变换。 输出姿势将模型变换到场景上。 由于点到平面的最小化,因此场景应具有可用的法线。 预期具有法线 (Nx6)。

◆ registerModelToScene() [2/2]

int cv::ppf_match_3d::ICP::registerModelToScene ( const Mat & srcPC,
const Mat & dstPC,
std::vector< Pose3DPtr > & poses )
Python
cv.ppf_match_3d.ICP.registerModelToScene(srcPC, dstPC) -> retval, residual, pose
cv.ppf_match_3d.ICP.registerModelToScene(srcPC, dstPC, poses) -> retval, poses

执行具有多个初始姿势的配准。

参数
[输入]srcPC模型的输入点云。 预期具有法线 (Nx6)。 目前,CV_32F 是唯一支持的数据类型。
[输入]dstPC场景的输入点云。 目前,CV_32F 是唯一支持的数据类型。
[in,out]poses从输入姿势开始,但也列出姿势的输出。
返回
成功终止时,函数返回 0。

假设模型已在场景中注册。 场景保持静态,而模型进行变换。 输出姿势将模型变换到场景上。 由于点到平面的最小化,因此场景应具有可用的法线。 预期具有法线 (Nx6)。


此类文档由以下文件生成