ICP转换精度随初始转换而变化

问题描述 投票:0回答:1

所有人的祝福,

我一直在使用点云库(PCL),特别是迭代最近点(ICP)模块为我的机器人构建点云感知管道。我很难从PCL ICP获得正确的转换矩阵。最初,我认为这与我的特定点云或代码有关,但是使用教程代码和点云也是如此。

[作为最小的工作示例,我复制了Interactive ICP code,编译并使用了monkey.ply文件,该文件可以正常工作。但是,当我仅将转换的平移部分从教程中的初始值从[[t = <0.0,0.0,0.4>更改为t = <1.0,1.0,0.0>时,ICP在包括未平移的Z轴的每个轴上,输出变换矩阵的偏移量至少为0.2。

关于云之间的初始翻译,我是否缺少某些内容?云之间是否存在最小转换,才能使ICP正常工作?

使用

monkey.ply文件查看下面的输出,我缩短了输出,使输出更易读:

从interactive_icp.cpp复制的代码

Applying this rigid transformation to: cloud_in -> cloud_icp Rotation matrix : | 0.924 -0.383 0.000 | R = | 0.383 0.924 0.000 | | 0.000 0.000 1.000 | Translation vector : t = < 0.000, 0.000, 0.400 > Applied 1 ICP iteration(s) in 11 ms ICP has converged, score is 0.0256485 ICP has converged, score is +2e-02 ~ ~ ICP has converged, score is +8e-06-> cloud_in ICP has converged, score is +3e-12-> cloud_in ICP transformation 14 : cloud_icp -> cloud_in ICP transformation 15 : cloud_icp -> cloud_in Rotation matrix :81 -0.036 | | 0.924 0.381 -0.036 | R = | -0.381 0.924 0.012 | | 0.037 0.003 0.999 | Translation vector :, -0.402 t = < 0.016, -0.006, -0.402 >

t = <0.0,0.0,0.4>t = <1.0,1.0,0.0>

的转换翻译>Rotation matrix : | 0.924 -0.383 0.000 | R = | 0.383 0.924 0.000 | | 0.000 0.000 1.000 | Translation vector : t = < 1.000, 1.000, 0.000 > Applied 1 ICP iteration(s) in 11 ms ICP has converged, score is 0.157621 ICP has converged, score is +2e-01 ~ ~ ICP has converged, score is +8e-09-> cloud_in ICP has converged, score is +5e-12-> cloud_in ICP transformation 24 : cloud_icp -> cloud_in ICP transformation 25 : cloud_icp -> cloud_in Rotation matrix :75 -0.025 | | 0.927 0.375 -0.025 | R = | -0.375 0.927 0.029 | | 0.034 -0.017 0.999 | Translation vector :, 0.265 t = < -1.391, -0.471, 0.265 >
任何帮助都将不胜感激!

Mahalo,

克里斯·罗维

point-cloud-library point-clouds
1个回答
0
投票
如果您不熟悉ICP和点云注册,建议您阅读Siggraph教程Modern Techniques and Applications for Real-Time Non-rigid Registration的第一章。它很短,但是包含了很好的信息。

返回您的问题。

关于云之间的初始翻译,我是否缺少某些内容?

是,

ICP需要良好的初始转换以] >>。而by transform是指平移和旋转。 ICP(迭代最近点)算法做出的基本假设是:

表面(或点云)处于粗略的初始对齐状态。因此,最接近点对应近似于地面真实对应。

云之间是否存在最小转换,以使ICP能够正常工作?

我想没有一个直接的答案。越近越好。

AFAIK它也取决于数据关联方法。 (原始ICP有很多变体。如论文Efficient Variants of the ICP Algorithm中所述)。

ICP通常用作点云注册的最后一步。为了获得良好的初始转换,可以使用一些基于功能的注册方法,例如this

© www.soinside.com 2019 - 2024. All rights reserved.