问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python OpenCV 霍夫(Hough Transform)直线变换检测原理,图像处理第 33 篇博客

发布网友 发布时间:2023-01-01 08:09

我来回答

1个回答

热心网友 时间:2023-10-27 08:17

霍夫变换(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 的值给替换掉了。

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

<center>chou 图</center>

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

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

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

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

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

<center>chou 图</center>

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

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

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

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

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

上文提及的斜截式如下:

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

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

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

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

原理这时就比较清晰了:

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

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

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

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

相关阅读

技术专栏

逗趣程序员

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
青海摇什么时候火的 宋庄镇都有哪些村 唐山多地解除封控管理、静态管理,市民仍需做好哪些防护? 拼多多上面的旗舰店是正品吗 ...尺是20:1的图纸上,应画多少厘米,在比例尺是1:200的图纸上测_百度知... 4x2=8,4x20=8,4x200=800,我发现了:一个因数不变,另外一个因数乘以几,积... 小学三年级数学上册4X2=8,4X20=80,4X200=800我发现:一个因数不变,另... 描写雪的段落优选好句60句 程序员最低学历是多少 电脑不识别独显了怎么办? opencv高速移动车牌识别原理 橱柜代理选择什么品牌靠谱? 怎样将华为手机投屏到电视 江苏热门景点有哪些 莫城中心小学二年级学生家长意见反馈表是什么意思? 常熟市莫城三星村有新冠阳性吗 古里东宸铭筑到莫城有没有公交车 苏州市,常熟市,莫城镇,言里村,石岸苑有服装招聘吗? 梦见流血是什么意思梦见流血的寓意 匙的拼音和组词,带有匙字的成语四字词语,怎么样匙组词 血王宫回忆如何通关 鸭血的作用 鸭血有什么作用 石拱桥是谁建的? 请问哪位告诉我第27届广州美博会的具体时间是什么时候? 信用卡一直不还利息怎么算 学信网手机号注册频繁怎么办 华为live图时长是多久 想给男朋友个浪漫的纪念日,宾馆房间蜡烛怎么摆? 那种浪漫蜡烛谁用过,酒店开的房间能不能先点着再去接女朋友来,中间会不会发生什么意外?安全吗? 朋友过生日该祝福些什么 8岁小孩子反复发烧是怎么回事 孩子八周岁了为什么差不多一个星期一次发烧 八岁的孩子经常发烧40度怎么回事? 我家孩子现在八岁了,晚上老发烧睡一觉明早上就没事了,请问是怎么回事, 世界上最早的石拱桥 注册在哪里注册 怎么进入手机注册的界面? 虾皮营业执照如何办理 怎样申请并注册 怎么注册一个新的 请问注册需要身份证号码吗 常规衣柜尺寸是多少 石拱桥的建筑学原理是什么 OPPO手机在济南有售后吗 OPPO济南市售后服务中心地址? 《精武英雄》中饰演光子的演员叫什么? 嗓子发痒是怎么回事 面条怎么分辨没有科技与狠活 食品知识:怎么鉴别“毒面条”? 电脑同时登录2个微信的方法?