没有合适的资源?快使用搜索试试~ 我知道了~
根据matlab的霍夫变换.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 117 浏览量
2021-10-12
14:31:35
上传
评论
收藏 663KB PDF 举报
温馨提示
试读
11页
。。。
资源推荐
资源详情
资源评论
基于 matlab 的霍夫变换
一、简单介绍
Hough 变换是图像处理中从图像中识别几何形状的基本方法之一。
Hough 变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲 线通过曲
线表达形式变为参数空间的一个点。这样就把原始图像中给定曲线的 检测问题转化为寻
找参数空间中的峰值问题。也即把检测整体特性转化为检测 局部特性。比如直线、椭
圆、圆、弧线等。
二、基本原理
Hough 变换的基本原理在于,利用点与线的对偶性,将图像空间的线 条变为
参数空间的聚集点,从而检测给定图像是否存在给定性质的曲线(圆的 方程为:(x-a)
A
2+(y-b)
A
2=r
A
2 ,通过 Hough 变换,将图像空间对应到参数空
间)。
霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用 很广泛,
也有很多改进算法。最基本的霍夫变换是从黑白图像中检测直线
段
)
。
三、hough 变换检测直线
设已知一黑白图像上画了一条直线,要求出这条直线所在的位置。我 们知道,
直线的方程可以用 y=k*x+b 来表示,其中 k 和 b 是参数,分别是斜率 和截距。过某一点
(
线
(
xO,yO)的所有直线的参数都会满足方程 yO=kxO+b。即点 (xO,yO)确定了一族直
线。方程 yO=kxO+b 在参数 k--b 平面上是一条直线,
(
你 也可以是方程 b=-xO*k+yO
对应的直线
)
。如下图 1 所示:
Itil 虫「一烈的苛喑竹
从图 1 中可看出,x-y 坐标和 k-b 坐标有点----线的对偶性。x-y 坐标中 的点 P1、
P2 对应于 k-b 坐标中的 L1、L2;而 k-b 坐标中的点 PO 对应于 x-y 坐 标中的线 L0
。
这样,图像 x--y 平面上的一个前景像素点就对应到参数平面上的一条直 线。我们
举个例子说明解决前面那个问题的原理。设图像上的直线是
们先取上面的三个点:A(0,0), B(1,1), C(22)
y=x,我
。可以求出,过 A 点的直线的参
数要满足方程 b=0,过 B 点的直线的参数要满足方程 仁 k+b,过 C 点的直线的参 数要满足
方程 2=2k+b,这三个方程就对应着参数平面上的三条直线,而这三条 直线会相交于一点
(k=1,b=0)
o
同理,原图像上直线 y=x 上的其它点
(
如(3,3),(4,4) 等
)
对应参数平 面上的直线
也会通过点(k=1,b=0)
o
这个性质就为我们解决问题提供了方法,就 是把图像平面上的点
对应到参数平面上的线,最后通过统计特性来解决问题。 假如图像平面上有两条直线,
那么最终在参数平面上就会看到两个峰值点,依 此类推。
简而言之,Hough 变换思想为:在原始图像坐标系下的一个点对应了参 数坐标系
中的一条直线,同样参数坐标系的一条直线对应了原始坐标系下的一 个点,然后,原始
坐标系下呈现直线的所有点,它们的斜率和截距是相同的, 所以它们在参数坐标系下对
应于同一个点。这样在将原始坐标系下的各个点投 影到参数坐标系下之后,看参数坐标
系下有没有聚集点,这样的聚集点就对应 了原始坐标系下的直线。
这个性质就为我们解决问题提供了方法:
首先,我们初始化一块缓冲区,对应于参数平面,将其所有数据置为
0
o
然后,对于图像上每一前景点,求出参数平面对应的直线,把这直线上 的所有
点的值都加
lo
最后,找到参数平面上最大点的位置,这个位置就是原图像上直线的参 数。
上面就是霍夫变换的基本思想。就是把图像平面上的点对应到参数平面 上的
线,最后通过统计特性来解决问题。假如图像平面上有两条直线,那么最 终在参数平面
上就会看到两个峰值点,依此类推。
在实际应用中,y=k*x+b 形式的直线方程没有办法表示 x=c 形式的直线
(
这 时候,
直线的斜率为无穷大
)
。所以实际应用中,是采用参数方程
p=x*cos(theta)+y*si n(theta) 。这样,图像平面上的一个点就对应到参数 p--
-theta 平面上的一条曲线上。其它的还是一样。在极坐标 a-p 中变为一条正弦 曲线,a
取(0- 180° )。可以证明,直角坐标 X-Y 中直线上的点经过 Hough 变换 后,它们的正弦
曲线在极坐标 a-p 有一个公共交点,如图 2 所示
:
E2 劇強严 x+20 上的 5 个点对应在根坐标耳"中的 F
茶
E 弦曲线
也就是说,极坐标 a-p 上的一点(a , p),对应于直角坐标 X-Y 中的一条直 线,
而且它们是一一对应的。为了检测出直角坐标 X-Y 中由点所构成的直线,
可以将极坐标 a-p 量化成许多小格。根据直角坐标中每个点的坐标
(
x,y),在 a =0-
180。内以小格的步长计算各个 p 值,所得值落在某个小格内,便使该小格 的累加记数
器加 1。当直角坐标中全部的点都变换后,对小格进行检验,计数 值最大的小格,其
(a,p)值对应于直角坐标中所求直线。
四、hough 变换检测圆
再看下面一个问题:我们要从一副图像中检测出半径以知的圆形来。这 个问题
比前一个还要直观。我们可以取和图像平面一样的参数平面,以图像上 每一个前景点为
圆心,以已知的半径在参数平面上画圆,并把结果进行累加。 最后找出参数平面上的峰
值点,这个位置就对应了图像上的圆心。在这个问题 里,图像平面上的每一点对应到参
数平面上的一个圆。
把上面的问题改一下,假如我们不知道半径的值,而要找出图像上的圆 来。这
样,一个办法是把参数平面扩大称为三维空间。就是说,参数空间变为 x--y--R 三维,对
应圆的圆心和半径。图像平面上的每一点就对应于参数空间 中每个半径下的一个圆,这
实际上是一个圆锥。最后当然还是找参数空间中的 峰值点。不过,这个方法显然需要大
量的内存,运行速度也会是很大问题。
有什么更好的方法么
?
我们前面假定的图像都是黑白图像
(
二值图像
)
, 实际
上这些二值图像多是彩色或灰度图像通过边缘提取来的。我们前面提到 过,图像边缘除
了位置信息,还有方向信息也很重要,这里就用上了。根据圆 的性质,圆的半径一定在
垂直于圆的切线的直线上,也就是说,在圆上任意一 点的法线上。这样,解决上面的问
题,我们仍采用 2 维的参数空间,对于图像 上的每
剩余10页未读,继续阅读
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 设计1.ms14
- vscode-1.64.1.tar源码文件
- vscode-1.64.0.tar源码文件
- vscode-1.52.0.tar源码文件
- Music-Player +PlayerActivity+ rockplayer+ SeeJoPlayer 播放器JAVA源码
- vscode-1.46.0.tar源码文件
- 最近很火植物大战僵尸杂交版2.08苹果+安卓+PC+防闪退工具V2+修改工具+高清工具+通关存档整合包更新
- 超级好用的截图工具PixPin,可录制Gif图
- Screenshot_2024-05-21-17-06-42-64_2332cb9b27b851b548ba47a91682926c.jpg
- 毕业设计参考 - 基于树莓派、OpenCV及Python的人脸识别
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功