【问题标题】:Opencv Imgproc.HoughLines() tuning length parametersOpencv Imgproc.HoughLines() 调整长度参数
【发布时间】:2014-02-11 12:15:36
【问题描述】:

--见下面的更新/答案。用户错误!--

我正在尝试了解如何在 Imgproc.HoughLines() 中设置参数以查找较短的行。我已经尝试过这样的东西,但根本不起作用:

Imgproc.HoughLines(matSrc, matLines, 1, Math.PI / 180, houghThreshCurrent, 25, 10);

我已经为最后两个参数尝试了几个值,但似乎没有一个有效 - 它找不到任何行。但是,使用没有最后两个参数的方法版本可以很好地找到我想要的行,而不是较短的行,无论阈值有多低。

这是最后两个参数的文档:

srn For the multi-scale Hough transform, it is a divisor for the distance resolution rho. The coarse accumulator distance resolution is rho and the accurate accumulator resolution is rho/srn. If both srn=0 and stn=0, the classical Hough transform is used. Otherwise, both these parameters should be positive.
stn For the multi-scale Hough transform, it is a divisor for the distance resolution theta.

有人可以为此翻译或提供示例值吗? :)

我还尝试了概率版本 HoughLinesP()。它似乎不适用于我的用例。如果我无法使线距参数正常工作,另一种选择是将我的图像缩放到默认 HoughLines() 工作的更大尺寸。


答案:我的问题是我没有意识到 HoughLinesP() 返回的 Mat 与 HoughLines() 返回的格式不同。当 HoughLinesP() 已经在 XY 坐标中时,我正在从极坐标转换结果!事实证明 HoughLinesP() 远远优于我们的需求,它的参数非常适合调整线长度。这是帮助我看到我的方式错误的链接:https://dsp.stackexchange.com/questions/10467/influence-of-image-size-to-edge-detection-in-opencv

【问题讨论】:

标签: java opencv computer-vision hough-transform


【解决方案1】:

一个很好的例子可以在这里找到:http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html

尝试使用CV_PI 而不是Math.PI?其他原因可能是因为您的门槛。尝试插入一个像 50 这样的值(玩弄数字)。最后两个值,您可以尝试将其保留为零并在插入值之前先对其进行测试。最后 2 个的默认值通常为零。

它不工作的原因可能有很多,所以让我们慢慢地一一找出原因。另外,你在申请 Hough 之前做过 Canny it 之类的,对吗?

希望对您有所帮助,如果我的建议有用且有所帮助,请告诉我(:干杯。

【讨论】:

  • 感谢您的建议,但我放弃了使用霍夫线长度参数。相反,我们只是做了更多的图像预处理来减少我们想要的线条周围的噪音:背景减法,Canny,Gaussian,Contours,approxPoly 等。我们一直在改变有助于 - 从 100 左右开始的阈值和每次循环减少,直到找到所需的线/交叉点/垂直线数。
  • CV_PI 和 Math.PI 有什么区别??
猜你喜欢
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多