• 回答数

    4

  • 浏览数

    294

馨阳北京
首页 > 职称论文 > 基于霍夫变换的形状检测论文

4个回答 默认排序
  • 默认排序
  • 按时间排序

duanxuehan

已采纳

霍夫变换(Hough Transform)是图像处理领域中,从图像中识别几何形状的基本方法之一。主要识别具有某些相同特征的几何形状,例如直线,圆形,本篇博客的目标就是从黑白图像中识别出直线。

翻阅霍夫直线变换的原理时候,橡皮擦觉得原理部分需要先略过,否则很容易在这个地方陷进去,但是问题来了,这个原理略过了,直接应用函数,里面有些参数竟然看不懂。例如极坐标,角度扫描范围,这种函数就属于绕不过去的知识点了,所以本文转移方向,死磕原理,下面的博文将语无伦次的为你展示如何学习原理知识。

因为数学知识的贫乏,所以在学习阶段会涉及到很多基础概念的学习,一起来吧。

首先找到相对官方的资料,打开该 地址

下面是一个数学小白对原理的学习经验。

教材说:众所周知,一条直线在图像二维空间可由两个变量表示。

抱歉,小白还真不知道……即使学习过,这些年也早已经还给老师了。

一开始难道要学习笛卡尔坐标系,不,你低估小白的能力了,我第一个查询的是 θ 读作 西塔 ,是一个希腊字母。

什么是笛卡尔坐标系?

这个比较简单,直角坐标系。

斜率和截距

斜率,亦称“角系数”,表示一条直线相对于横坐标轴的倾斜程度。

一条直线与某平面直角坐标系横坐标轴正半轴方向的夹角的正切值即该直线相对于该坐标系的斜率。

如果直线与 x 轴互相垂直,直角的正切直无穷大,故此直线不存在斜率。 对于一次函数 y=kx+b , k 就是该函数图像的斜率。

在学习的时候,也学到如下内容:

截距:对 x 的截距就是 y=0 时, x 的值,对 y 的截距就是 x=0 时, y 的值, 截距就是直线与坐标轴的交点的横(纵)坐标。 x 截距为 a , y 截距 b ,截距式就是: x/a+y/b=1(a≠0且b≠0) 。

斜率:对于任意函数上任意一点,其斜率等于其切线与 x 轴正方向所成的角,即 k=tanα 。 ax+by+c=0中,k=-a/b 。

什么是极坐标系?

关于极坐标系,打开 百度百科 学习一下即可。

重点学到下面这个结论就行:

找资料的时候,发现一个解释的比较清楚的 博客 ,后续可以继续学习使用。

继续阅读资料,看到如下所示的图,这个图也出现在了很多解释原理的博客里面,但是图下面写了一句话

在这里直接蒙掉了,怎么就表示成极坐标系了?上面这个公式依旧是笛卡尔坐标系表示直线的方式呀,只是把 k 和 b 的值给替换掉了。

为何是这样的,具体原因可以参照下图。

chou 图

继续寻找关于霍夫变换的资料,找到一个新的概念 霍夫空间 。

在笛卡尔坐标系中,一条直线可以用公式 表示,其中 k 和 b 是参数,表示的是斜率和截距。

接下来将方程改写为 ,这时就建立了一个基于 k - b 的笛卡尔坐标系。

此时这个新的方程在 k - b 坐标系也有一个新的直线。

你可以在纸上画出这两个方程对应的线和点,如下图所示即可。

chou 图

新的 k - b 坐标系就叫做霍夫空间,这时得到一个结论,图像空间 x - y 中的点 对应了 霍夫空间 k - b 中的一条直线 ,即图像空间的点与霍夫空间的直线发生了对应关系。

如果在图像空间 x - y 中在增加一个点 ,那相应的该点在霍夫空间也会产生相同的点与线的对应关系,并且 A 点与 B 点产生的直线会在霍夫空间相交于一个点。而这个点的坐标值 就是直线 AB 的参数。

如果到这里你掌握了,这个性质就为我们解决直线检测提供了方法,只需要把图像空间的直线对应到霍夫空间的点,然后统计交点就可以达到目的,例如图像空间中有 3 条直线,那对应到霍夫空间就会有 3 个峰值点。

遍历图像空间中的所有点,将点转换到霍夫空间,形成大量直线,然后统计出直线交会的点,每个点的坐标都是图像空间直线方程参数,这时就能得到图像空间的直线了。

上述的内容没有问题,但是存在一种情况是,当直线趋近于垂直时,斜率 k 会趋近于无穷大,这时就没有办法转换了,解决办法是使用法线来表示直线。

上文提及的斜截式如下:

通过第二个公式,可以得到下述公式:

此时,我们可以带入一些数值进行转换。

图像空间有如下的几个点:

转换后的函数,都可以在霍夫空间 θ - ρ (横坐标是 θ ,纵坐标是 ρ )进行表示。

原理这时就比较清晰了:

除了一些数学知识以外,经典的博客我们也有必要记录一下,方便后面学习的时候,进行复盘。

本部分用于记录本文中提及的相关数学原理,后续还要逐步埋坑。

今天涉及了一点点数学知识,能力限制,大家一起学习,有错误的地方,可以在评论区指出,不胜感激。

希望今天的 1 个小时(今天内容有点多,不一定可以看完),你有所收获,我们下篇博客见~

相关阅读

技术专栏

逗趣程序员

156 评论

meisha2345

对于圆检测,许多研究人员已经运用参数分解和/或圆的一些几何性质,搞出了霍夫变换的变体以减少计算的复杂性。Yuen等人在1990年的论文中已经对圆的识别的集中霍夫变换的技术进行了比较研究。以参数分解为基础的方法通常是先检测圆心,然后确定半径。这样做的特点的其中之一是圆上一点的方向向量经过圆心(Davies, 1987a; Illingworth and Kittler, 1987). 叶等人在1992年的论文中用到一个性质:圆上两点的切线平行,那么这两点就是圆的直径的两个端点。上述方法需要有对干扰因素十分敏感的边缘等级线的梯度的信息(Davies, 1987b). 干扰因素对边的方向的作用通常要比对边的位置的作用大。不使用边缘方向信息的几种途径包括:陈和Siu(1990)提出了基于水平和垂直弦的中分线的快速椭圆检测法。同样,Ho和陈(1995)提出了一种使用全局几何对称性的快速检测圆的算法,通过水平和垂直对称轴计算出圆心。Sheu等人在1997年的论文中,在整个过程中运用了对称轴的信息来计算所有五个参数。 Goneid等人在1997年的论文中使用一维数组创建了弦的中分线法。Davies(1999)研究了一个用于椭圆的快速精确定位的简单的弦的中垂线法。 Ioannou 等人(1999年)的方法是基于垂径定理。Lei和王(1999)发现了对称轴,继而发现了几对交点是圆心的可选值的正交轴。其缺点是图像中的直线会让对称轴的检测更复杂。

171 评论

爱林公主

霍夫变换 是一种特征检测(feature extraction),被广泛应用在 图像分析 (image analysis)、计算机视觉(computer vision)以及数位影像处理(digital image processing)。霍夫变换是用来辨别找出物件中的特征,例如:线条。他的 算法 流程大致如下,给定一个物件、要辨别的形状的种类,算法会在参数空间(parameter space)中执行投票来决定物体的形状,而这是由累加空间(accumulator space)里的局部最大值(local maximum)来决定。 现在广泛使用的霍夫变换是由RichardDuda和PeterHart在公元1972年发明,并称之为广义霍夫变换(generalizedHoughtransform),广义霍夫变换和更早前1962年的PaulHough的专利有关。经典的霍夫变换是侦测图片中的 直线 ,之后,霍夫变换不仅能识别直线,也能够识别任何形状,常见的有圆形、椭圆形。1981年,因为的一篇期刊论文"Generalizing the Hough transform to detect arbitrary shapes",让霍夫变换开始流行于计算机视觉界。

●源图像

●处理后图像

●函数原型 ○c++

○Android

●参数解释 ○image:输入图像:8-bit,灰度图 ○lines:存储线段极坐标的容器,每一条线由具有四个元素的矢量(x_1,y_1, x_2, y_2) 表示,其中,(x_1, y_1)和(x_2, y_2) 是每个检测到的线段的结束点。 ○rho:生成极坐标的像素扫描步长。 ○theta:生成极坐标的角度步长,一般是π/180。 ○threshold:要”检测” 一条直线所需最少的的曲线交点 。 ○minLineLength :默认值0,表示最低线段的长度,比这个设定参数短的线段就不能被显现出来。 ○maxLineGap :默认值0,允许将同一行点与点之间连接起来的最大的距离。

●c++中

●Android中

186 评论

小小织女星

假设有一条直线如下图:

在 笛卡儿平面坐标系 统中的斜率参数与截距参数为 (k,b) ;

对于 每个平面空间的像素点坐标(x,y) , 随着 角度θ 的取值不同,都会 得到r值 , (%+++%要点.B)而对于 任意一条直线 来说,在 极坐标空间 它的 (r,θ) 都是 固定不变的 , 则对于 边缘图像 的 每个平面空间坐标点 可绘制 极坐标的曲线 如图所示:

OpenCV关于 霍夫直线变换 提供了两个相关API函数, 一个 是在霍夫空间求取 直线两个极坐标的参数 , 需要开发者自己转换到平面坐标空间计算直线; 另外 一个则会 直接返回平面空间直线/线段的两个点坐标信息 。

返回极坐标参数的API函数如下:

使用该API实现直线检测:

以上的这个API函数需要对得到的每对 极坐标参数(r,θ) 做 计算 , 使其 变换 到 平面空间 ( x0 = r * cosθ ; y0 = r * sinθ ), 接着通过对 x0 和 y0 添加 偏移量 并进行计算,得到直线的 两个点 ; 然后 绘制直线 。

另外一个 API函数则比较简单, 它 省去了 开发者自己把极坐标变换为直线坐标的 过程 , 直接返回 每个线段/直线对应的 两个点坐标 , 其API函数与参数的解释具体如下:

使用该API实现图像直线检测:

109 评论

相关问答

  • 基于霍夫变换的形状检测论文

    霍夫变换(Hough Transform)是图像处理领域中,从图像中识别几何形状的基本方法之一。主要识别具有某些相同特征的几何形状,例如直线,圆形,本篇博客的目

    馨阳北京 4人参与回答 2023-12-09
  • 基于usb检测的脉搏检测仪论文

    你是要选题目还是?

    宇宙梧桐 8人参与回答 2023-12-06
  • 关于变形监测的论文题目

    测绘就是将地面已有的特征点和界线通过测绘手段获得反映地面现状的图形和位置信息,供工程建设的规划设计和行政管理之用。下面是我整理了测绘学术论文标题,有兴趣的亲可以

    Elena小妞仔 1人参与回答 2023-12-07
  • 霍乱弧菌检测论文

    王鸣(通讯作者)2008年广州市乙型病毒性肝炎病毒易感人群特征研究.疾病监测.2010,25(7):528-530.12.王鸣(通讯作者)广州市1992-200

    hereparadox 5人参与回答 2023-12-07
  • 关于变形计的论文题目

    一般来说,以格里高尔的心理世界为切入点不是太好写。应为卡夫卡写变形记的初衷是讽刺当时西方资本主义的黑暗。我这里有一段资料供参考,是当时的时代背景:1914年至1

    sy2009Jason 3人参与回答 2023-12-07