【OpenCv】霍夫直线检测 您所在的位置:网站首页 直线扫描算法 【OpenCv】霍夫直线检测

【OpenCv】霍夫直线检测

2023-05-26 22:34| 来源: 网络整理| 查看: 265

前言

  Hough变换是实现边缘检测的一种有效方法,其基本思想是将测量空间的一点变换到参量空间的一条曲线或曲面,而具有同一参量特征的点变换后在参量空间中相交,通过判断交点处的积累程度来完成特 征曲线的检测。

1 原理

  保罗·哈夫于1962年提出了Hough变换法,并申请了专利。该方法 将图像空间中的检测问题转换到参数空间,通过在参数空间里进行简单的累加统计完成检测任务,并用大多数边界点满足的某种参数形式来描述图像的区域边界曲线。这种方法对于被噪声干扰或间断区域边界的图像具有良好的容错性。Hough变换最初主要应用于检测图像空间中的直线,最早的直线变换是在两个笛卡儿坐标系之间进行的,这给检测斜率无穷大的直线带来了困难。1972年,杜达(Duda)将变换形式进行了转化,将数据空间中的点变换为$ρ-θ$参数空间中的曲线,改善了其检测直线的性能。该方法被不断地研究和发展,在图像分析、计算机视觉、模式识别等领域得到了非常广泛的应用,已经成为模式识别的一种重要工具。  直线的方程可由下面式子表示:

其中,$k$和$b$分别是斜率和截距。现在将$y=kx+b$转换成$b=-xk+y$,因为$k$和$b$都是确定值所以在$x-y$平面上的一条线在$k-b$平面上代表一个点。在这里插入图片描述反过来在$k-b$平面上的一条直线$b=-xk+y$在$x-y$平面上代表一个点,因为此时$x$和$y$在直线$b=-xk+y$中分别是斜率和截距为定值。在这里插入图片描述其次是过$x-y$平面上的某一点($x_0$,$y_0$) 的所有直线的参数都满足方程$y_0=kx_0+b$。即过$x-y$平面上点($x_0$,$y_0$)的一族直线在参数$k-b$平面上对应于一条直线。同样的道理将该族直线$y_0=kx_0+b$转变到$k-b$平面上有$b=-x_0k+y_0$,此时斜率($-x_0$)和斜距($y_0$)固定,$b$为$k$的函数,所以在$k-b$平面上对应于一条直线。在这里插入图片描述有了上面的知识,再来看看在$x-y$平面上三点共线是怎么等效到到$k-b$平面的。在这里插入图片描述可以看出如果笛卡尔坐标系的点共线,这些点在霍夫空间对应的直线交于一点:这也是必然,共线只有一种取值可能。再来考虑特殊情况,当三点共线恰好垂直$x$轴呢?此时直线的斜率$k$为无穷大,$y=kx+b$形式的直线方程无法表示$x=c$($c$为常数)形式的直线。所以在实际应用中,一般采用距离和角度参数方程来表示如下:

其中,$ρ$为原点到直线的垂直距离,$θ$为$ρ$与$x$轴的夹角,转换过程如下,注意的是这个并不是极坐标表达式,只是形式写起来跟极坐标的形式是一样的。这是因为$ρ$和$θ$都是固定的,对应唯一的直线,而如果是极坐标,那其他对的$ρ$和$θ$也会满足这一直线。在这里插入图片描述  根据$ρ=xcosθ+ysinθ$,直线上不同的点在参数空间中被变换为一族相交于$p$点的正弦曲线,因此可以通过检测参数空间中的局部最大值$p$点,来实现$x-y$坐标系中直线的检测。在这里插入图片描述

2 算法流程

①将参数空间量化成$m×n$($m$为$θ$的等份数,$n$为$ρ$的等份数)个单元,并设置累加器矩阵$Q[m×n]$;②给参数空间中的每个单元分配一个累加器$Q$($θ_i$,$p_j$)($0



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有