我应该选择哪种CV算法来检测角点?(角点检测,OpenCV)

4ioopgfo  于 2023-03-30  发布在  其他
关注(0)|答案(2)|浏览(143)

我正在开发一个用于图像分析的CV工具,并使用4个点来形成一个变换矩阵(Map)用于图像校正(透视投影-cv.four_point_transform)。我有一组从热成像仪获得的源图像,存在失真。我成功地应用了标准OpenCV函数的管道。您可以在下面的图片中看到它(图1)。请注意,主管道由以下步骤组成:
1.校正失真。
1.使用双边滤波器进行平滑。
1.门槛。
1.哈里斯角点探测器。
1.侵 eclipse 。
1.侵 eclipse 后点云上平面上的点的加权平均值。在“目标”图像中,您可以看到4个点,实际大小为1个像素(为清晰起见放大)。

  • 你认为哪种方法在未来更容易实现?
  • 如何正确去除寄生点?
  • 是否有更简单的方法来检测角点?

不幸的是,我遇到了Harris角点检测器无法科普并且无法检测钝角的情况。我开始测试不同的方法,例如:
1.阈值-〉轮廓-〉近似轮廓-〉点。
1.阈值-〉Canny边缘检测-〉膨胀-〉FAST。
1.阈值-〉Canny边缘检测-〉扩张-〉SIFT。
1.阈值-〉Canny边缘检测-〉膨胀-〉概率Hough线-〉Bentley-Ottmann点。
正如你所看到的,有些方法可以使用,但它们形成了许多寄生点。我担心,与它们斗争将比乍看上去更困难(图2)。
图1 -Successful detection
图2 -Unsuccessful detection

t3irkdon

t3irkdon1#

我认为只检测必要的4个角落鲁棒所有可能的图像是困难的目标。
所以...
我会考虑采用一些角点检测过程,使“足够”的检测结果。其中,“足够”意味着至少可以检测到必要的4个角点(未检测到它们是最严重的问题)。
换句话说,允许“可以额外检测一些不必要的角”。(当然,不允许“太多”)
然后,我将考虑一些RANSAC类似的方法,用于获得变换矩阵。

s5a0g9ez

s5a0g9ez2#

你可以...

  • 补偿透镜失真。这样你就不会有任何的钝角,所有的边缘都是直的。我相信这是最好的方法。
  • 看看能不能调整一下相机的焦距。是的,我知道这是热感相机。他们可以这样做。
  • 调整approxPolyDP的阈值,这样就可以去除一些钝角。
  • 简单地通过角点的Angular 过滤“不成功”检测的角点,丢弃足够钝的角点。或者通过角点的阈值来执行此操作,或者通过对所有角点进行排序并丢弃除最佳四个之外的所有角点。您必须对角点附带的边的长度敏感。如果这些边很短,则角点可能无论如何都不重要。

相关问题