霍夫应该适合这个应用程序。正如Falimond和gfkri所建议的那样,对标准Hough技术的一些参数调整将有所帮助。
一些想法:
- 不是计算Hough投票数,而是确定线密度。找到多个候选线后,确定每条线在图像中占据的最大像素数。 (穿过中心的线比通过角附近的线的线长。)将箱数[vote]除以最大可能线长度以产生线密度。然后按线密度过滤。当您遵循这种技术时,您通常需要为密度和最小长度设置阈值 - 您不希望找到恰好是直线但与它们所属的线稍微倾斜的8像素段。 / LI>
- 首先扩大图像;从它的外观,你可以扩大相当多。当白色像素团块扩张时,沿着霍夫拟合线将存在更高密度的点。扩张后,您还可以对图像进行下采样(例如从640x480到160x120)以减少必须处理的点数。 [您还可以应用高斯模糊来生成灰度图像。这将原始边缘点保持为最强峰。然后,您将在Hough累加器中使用加权强度值。]
- 作为(2)扩张的替代方案,对于图像中的每个(x,y)白色像素,也为所有相邻像素添加投票到累加器区:(x-1,y-1),(x ,y-1),. 。 。 (X + 1,Y + 1)。这可能会更快地更改您的代码。
- 降低角分辨率。也就是说,如果您的霍夫累加器使用1度的角度增量,请尝试2度的角度增量。
- 将您的(R,theta)累加器图 - 您可以将其视为一种2D强度图像 - 并在识别峰值之前将其平滑。如果你倾向于得到两条几乎重叠的线,你可能只需要平滑,因为你认为应该是一条线的点分散在双峰丛中。
醇>
长话短说:正如gfkri建议的那样,通过降低有效分辨率使任务更简单。考虑拟合N像素厚Hough线段而不是1像素Hough线。