点云注册功能低(且不明显)

问题描述 投票:1回答:1
  1. 目标

扫描的对象由两个主要部分组成:圆锥形结构,没有基础;在第一部分的中间是圆柱形结构。我们将第一部分称为“身体”,第二部分称为“管道”。管道的直径是已知的(或非常准确地估计)。身体的极端与管道中心之间的距离未知。最新的结构化光激光扫描仪组装在目标物体周围的圆形轨迹上。扫描仪的姿势和“拍摄”之间的移动角度几乎是未知的。

基于圆形轨迹,我们从目标捕获了N次捕获。据此,我们可以推断出每次抓取之间的运动角度等于360 / N。捕获之后,我们需要获取这N个点云并合并在一个代表完整对象的唯一(完整)点云中。 like this tutorial

Ilustration of the scanner, target and trajectory.

  1. 已经尝试过的内容

在我们的捕获中,我们有一个非常统一的对象。这个特征面临我们一个问题,因为在点云中检测到的相关点与许多其他点非常相似,位于云中的不同位置。但是只有一个是正确的对应关系。因此,我们有很多错误的对应关系,这使得转换计算失败。

我们使用PointCloud库(PCL)实现的算法执行了许多实验。更改关键点检测器(ISS,随机采样,Harris等),描述符(基于SHOTRGB,法线和/或FPFH等几何形状等颜色),线性求解技术(SVD,MLS等)的参数。我们无法取得相关结果。

有人遇到过类似的问题吗?

如何改善我的描述模式?

我可以使用针对高度一致的数据集的另一种方法吗?

欢迎任何贡献。

registration point-cloud-library point-clouds
1个回答
0
投票

如果N足够大(它在您的控制之下吗?),光流应该是查找对应物的不错的选择。

您提到的基于特征的关键点检测器是一种查找点之间对应关系的方法(您可以在两个图像中找到关键点,然后使用这些特征进行匹配)。>>

OpticalFlow是每个点移动的两个图像之间的映射。

因此,这为您提供了一种寻找点对应关系的替代方法。此方法假定两个图像足够相似(=您的N足够大)利用了这种相似性。

通过比较可以更好地理解:基于特征的方法分别考虑每个图像,并尝试分别(在特征空间中)匹配点。 OpticalFlow认为这两个图像在它们之间找到了“平滑”的变换/映射。基于特征的方法是“标准”方法,因为它具有更高的鲁棒性和不变性。

在您的特定情况下,可能可以使用OpticalFlow方法。

OpenCV具有OpticalFlow的实现,并提供tutorial。如果我们看例子:

calcOpticalFlowPyrLK(old_gray, frame_gray, p0, p1, ...);

给出两个图像(old_gray和frame_gray)和第一张图像(old_gray)中的一组点(p0),它计算这些点(p1)在第二张图像(frame_gray)中的位置。换句话说,点集p0和p1是两个图像之间的对应关系。您可以尝试任何关键点检测方法来选择p0点集。

或者,您可以使用calcOpticalFlowFarneback获得密集的对应关系。

附加材料:WikiShort video lesson from Coursera

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