快速找到点集中的粗线

计算科学 回归 计算机视觉 模式识别
2021-12-17 02:54:07

在特定类别的检测器中,我们的数据以二维点对的形式出现,我们希望将这些点串成线。

数据有噪声,并且在一个方向上被分箱,但在另一个方向上没有。即使每个检测器元件都在工作,我们也不能保证每个箱子都命中,因此可能会有跳过。

我们当前的分析链看起来像

  1. 调整命中以校准单个探测器元件
  2. 查找集群
  3. 对集群的粗略拟合线
  4. 将簇连接成更长的线状结构
  5. ...

这个问题涉及步骤(3)。

我们在该步骤中一直使用 Hough 变换并且效果很好,但是当我们尝试从测试台扩展到全面项目的模拟时,它变得慢得令人无法接受。

我正在寻找一种更快的方法。


对于那些可能关心实际用例的人来说,这里是液态氩时间投影室

2个回答

我的同事Gandalf 库中找到了Fast Hough Transform,它看起来很有前途,但集成起来可能需要做很多工作,所以我正在寻找其他方法。

Gandalf 的实现很有趣:他们以递归方式评估累加器空间,就像遍历四叉树或八叉树一样。密度不高的区域会随着它们的移动而被剔除。

有一个更快的霍夫变换 (PHT) 的概率版本。正如 Bradski 和 Kaehler 在他们的 OpenCV 书中所描述的:

这个想法是无论如何峰值都会足够高,然后只用一小部分时间达到它就足以找到它。

OpenCV 库提供了 PHT的实现

还有其他选择。创建Hough 变换的分布式版本并不难。只需将您的点集分成更小的块并使用 MapReduce 框架来总结所有累加器。另一个想法是使用低分辨率的参数空间执行粗略版本的霍夫变换。选择您的最佳候选者并使用呈现更高分辨率的参数空间运行更精细的迭代。也许这就是甘道夫 FHT 背后的想法。