OpenCV霍夫线与scikit-image的对比

7
我一直在比较OpenCV和scikit-image的霍夫线条实现,发现scikit-image的结果显著更好。我正在尝试在两者中都进行相同的Canny / Hough线性转换(在OpenCV中添加了GaussianBlur,因为我认为scikit会在canny的过程中将其作为一部分处理)。如果可能的话,我想了解如何从OpenCV中获得与scikit-image相似的结果。这是来自scikit-image的结果:

enter image description here

这是OpenCV的结果:

enter image description here

你可以看到它们明显更差。OpenCV 的中间 Canny 输出也更糟糕(但不是非常严重),所以我不确定那是否是问题?
我已将代码和结果上传至https://github.com/grokys/hough-test。对我的 Python 技能表示歉意。

尽管 OpenCVscikit-image 看起来实现了相同的算法,但你如何知道它们是以相同/“正确”的方式实现的呢?HoughLinesP 具有距离和角度分辨率的参数(由您显式设置),而 probabilistic_hough_line 仅允许在某些角度进行处理(您没有使用)。要得出明确的答案,恐怕您需要深入研究源代码。 - HansHirse
是的,他们显然没有以完全相同的方式实现它们,但我已经尝试查看源代码(尝试过了,因为OpenCV并不容易阅读),它们似乎在基本上做着相同的事情。我希望能听到更多了解这些事情的人的意见,也许知道区别并知道如何改进OpenCV输出的人。 - Grokys
scikit是如何在内部选择参数的?也许你可以尝试在算法层面上使用相同的参数? - Micka
你使用的OpenCV和scikit-learn版本是什么? - mprat
1个回答

0
函数HoughLinesPprobabilistic_hough_line在其目的上执行相同的操作,但它们的实现显然有很大的不同,这可以从它们具有不同参数这一事实中看出。简单的答案是,如果您向这两个函数提供等效的参数,则可以从任何一个函数获取相同的结果,这不是函数本身或其实现方式的问题,而是与您传递给它们的参数有关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接