检测点云数据中的圆形图案


10

对于我正在研究的一些体积重建算法,我需要检测3d点数据中的任意数量的圆形图案(来自LIDAR设备)。这些图案可以在空间中任意定向,并且可以假定(尽管不是很完美)位于薄的2d平面中。这是在同一平面上有两个圆的示例(尽管请记住,这是一个3d空间):

在此处输入图片说明

我尝试了许多方法。.最简单的方法(但到目前为止效果最好的方法)是基于最近邻图的不相交集进行聚类。当模式相距较远时,这可以很好地工作,但对于示例中的彼此非常靠近的圆圈,效果则较小。

我尝试了K-means,但效果不佳:我怀疑圆点排列可能不太适合。另外,我还有另一个问题,就是事先不知道K的值。

根据最近邻图中的循环检测,我尝试了更复杂的方法,但是我得到的结果太脆弱或计算量太大。

我还阅读了很多相关主题(霍夫变换等),但似乎没有什么东西可以在这种特定情况下完美地适用。任何想法或灵感将不胜感激。


一个更简单的问题:您将如何检测二维数据中的线段?
charles.y.zheng 2011年

“ ..喜欢示例中的内容”?有什么例子?您可以添加链接吗?
一站式

霍夫变换是显而易见的选择。它应该运作良好。
ub

同时,我获得了足够的声誉,可以添加我所指的图像示例。
cjauvin 2011年

3
这不是集群问题。在统计中,“集群”由相互之间比其他对象更靠近的一组对象组成。紧密度无法捕捉圆度:这就是为什么K-means或任何其他聚类算法都不会起作用的原因。因此,此问题可能更适合图像处理或GIS站点,您可能会在该站点找到有关此问题的一些专家。
ub

Answers:


9

广义霍夫变换正是您想要的。困难是要高效地完成,因为3D中的圆形空间有六个维度(三个为中心,两个为平面定向,一个为半径)。这似乎排除了直接计算的可能性。

一种可能性是通过一系列更简单的Hough变换来潜入结果。例如,您可以从(通常)霍夫变换开始以检测平面子集:这些子集只需要3D网格即可进行计算。对于检测到的每个平面子集,沿该平面切片原始点并执行广义Hough变换以进行圆检测。如果原始图像没有很多共面点(由圆圈形成的共平面点)可能淹没圆圈产生的信号,则此方法应能很好地工作。

如果圆的大小具有预定的上限,则可以节省大量计算量:您不必着眼于原始图像中的所有成对点或三对点,而是可以关注每个点有界附近的成对点或三重点。


我会尝试结合建议的所有方法:如最初的海报所述,首先基于距离的聚类,这将为您提供可能由多个圆圈组成的聚类。然后使用Hough检测每个群集中的平面子集。然后在每个平面子集中再次使用Hough查找圆。如果最后一步很昂贵,则可以进行有效的短路:尝试几个三元组,猜一个圆,然后查看子集中的大部分点是否非常靠近该圆。如果是这样,请记录该圆圈并删除所有这些点,然后继续。
Erik P.

3
后一种想法称为RANSAC,可能可以单独使用,特别是如果每​​个图像的圆圈数很小的话。
SheldonCooper

感谢您的启发性想法!在我看来,多步霍夫变换似乎是最强大,最通用的解决方案,但RANSAC确实看起来更易于实现,在我的上下文中可能就足够了。我很快注意到的一个问题是您的图形大小不平衡,这显然会使采样偏向更大的对象。对这个问题有什么想法吗?
cjauvin

一旦检测到较大的圆,请从采样中删除所有属于该圆的点。
SheldonCooper 2011年

0

好吧,如果目标是仅检测圆形图案的,并且您有足够的数据,则可以尝试深度卷积神经网络。确实,将需要标记所有的数据,但是DCN可以用作上述建议的补充方法。number

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.