现在的位置: 首页 > 综合 > 正文

基于HOUGH变换的矩形的检测

2012年08月17日 ⁄ 综合 ⁄ 共 1154字 ⁄ 字号 评论关闭

基于HOUGH变换的矩形的检测

作者: cndg                 2006-03-02

在图像中查找直线、圆、椭圆的方法很多,网上也有很多类似的源代码。但是介绍矩形(正方形,长方形)查找的方法很少,本文介绍基于HOUGH变换的矩形的检测。

1、  首先介绍以下直线的极坐标方程。

ρ = x * cos θ + y * sin θ

  


转换                      k  = (- cos θ1/sin θ1


        y  = k*x + b          

                          b  =  ρ1/sin θ1 + oy ox *k

                          注:(ox,oy)为中心坐标。

C(ρ,θ)表示累积值数组。

2、  平面空间

          rect1

注:P1P2P3P4为矩形的四点,ab为矩形的长宽,α1,α0分别为长宽与坐标系原点的角度。

   HT空间:

   rect2

 (注:H1=(ρ1,θ1),H2=(ρ2,θ2),H3=(ρ3,θ3),H4=(ρ4,θ4))

四个顶点的一般关系:

1)  当θ= α1时,形成了H1H2,即有H1H2点。

当θ= α0时,形成了H3H4,即有H3H4点。

2)  判断是否与θ对称,若以θ轴为对称轴,则有:

   ρ1 +ρ2 = 0和ρ3 +ρ4 = 0

3)  直线垂直时

     θ = 90度(|α1 –α0| = 90

4)  线段的长度

   C(ρ1,θ1= C(ρ2,θ2= b

   C(ρ3,θ3= C(ρ4,θ4= a

5)  点或直线的距离

   ρ1 -ρ2  =  a

   ρ3 -ρ4  =  b

大部分情况下,满足条件1),2),3)。

 

3算法

1)  找到一个点,在距离[DminDmax]之间搜索。

2)  增强C(ρ,θ)模型()

3)  检测矩形类型

若在增强之后的C(ρ,θ)中有H1=(ρ1,θ1),H2=(ρ2,θ2…Hm=(ρm,θm)。

根据           △θ = |θi –θj | < Tθ  ,注:Tθ表示域值。

△ρ = |ρi +ρj | < Tρ

| C(ρi,θi–C(ρj,θj | TL * C(ρi,θi+C(ρj,θj))/2

判断直线ij是否有关联。

若满足上面的关系表达式,就说明有关联。令Pk = +/- Уk,αk),条件:

                                                   αk = 1/2 *(θi +θj  

                                                   Уk = 1/2 *(ρi -ρj

下一步:判断直角线,垂直线

     α = | |αk -αl | 90’ | < Tα (域值)

则直线PkPl是垂直的。

最后:可以检测到矩形的中心点。

方向为αk

两边的长度为2Уk2Уl

 

 

抱歉!评论已关闭.