使用Hough变换进行矩形检测
computer-vision
image-processing
15
0

根据本文 ,我试图使用Hough变换实现矩形检测。

我使用Matlab对其进行了编程,但是在检测到平行线对和正交线对之后,我必须检测这些线对的交点。我的问题是关于霍夫空间中两线相交的质量。

我通过求解四个方程组找到了交点。这些交点位于笛卡尔或极坐标空间中吗?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

霍夫空间的精度应取决于两个主要因素。

累加器映射到霍夫空间。要遍历累加器阵列,需要累加器将霍夫空间分成离散的网格。

线性霍夫空间中准确性的第二个因素是原点在原始图像中的位置。请看一下如果您对\ rho中的任何给定变化进行\ theta扫描会发生什么情况。在原点附近,这些扫掠之一将覆盖比图像边缘附近扫掠少的像素。其结果是,在图像边缘附近,在转换回笛卡尔坐标系时,需要更高的\ rho \ theta分辨率才能达到相同的精度。

当然,提高分辨率的问题在于您将需要更多的计算能力和内存来提高分辨率。同样,如果统一提高累加器分辨率,则会浪费分辨率,使原本不需要的分辨率接近。

一些想法可以帮助您。

  1. 将原点放置在图像的中心。而不是在代码中使用图像的自然左下角或左上角。
  2. 尝试使用最接近的图像即可获得正方形。给定区域的图像越长, 分辨率陷印在边缘处越明显
  3. 尝试将图像分成4/9/16等不同的累加器,每个累加器的原点位于该子图像的中心。将每个累加器的结果链接在一起进行矩形检测将需要一些开销,但是它应该有助于更均匀地分布分辨率。
  4. 最终的解决方案是根据距原点的距离线性增加分辨率。这可以通过使用

    (x-a)^2 + (y-b)^2 = \rho^2

circle equation where
    - x,y are the current pixel
    - a,b are your chosen origin
    - \rho is the radius
once the radius is known adjust your accumulator
resolution accordingly. You will have to keep
track of the center of each \rho \theta bin.
for transforming back to Cartesian
收藏
评论

对于那些想知道这篇论文的人,它是:

CláudioRosito Jung和Rodrigo Schramm的基于窗口式Hough变换矩形检测

现在根据该论文,相交点被表示为极坐标,显然您的实现可能有所不同(唯一的告诉方法是向我们展示您的代码)。

假设您与他的表示法一致,那么您的峰值应表示为:

山峰

然后,您必须执行第4.3节中的公式(3)给出的峰值配对或

等式3

哪里T_theta代表与平行线相对应的角度阈值,并且在此处输入图片说明是对应于相似长度的线的归一化阈值。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题