【数字图像处理】霍夫(Hough)变换
系列文章目录
本系列主要是在阅读论文时的学习笔记,在遇到较为经典的数字图像处理的算法和知识点,对其进行整理和总结,主要包括原理,方法,算法等。(希望可以坚持下来)
系列文章目录如下:
暂时还没(持续更新)
目录
系列文章目录
绪论
一、霍夫变换原理
1.1 y = kx + b
1.2 r = xcosθ + ysinθ
1.3 使用原理
二、实现步骤
引用
绪论
霍夫变换是一种较为经典的检测简单形状如线段和圆形、椭圆等的方法。采用的基本思想是累加投票的思想。
一、霍夫变换原理
在笛卡尔坐标系(平面直角坐标系)中表示一条直线的方法有两种:
- y = kx + b
- r = xcosθ + ysinθ
1.1 y = kx + b
在此,常用的方法是第一种,已知确定的k0、b0就可以确定一条直线。由此引入霍夫空间。在笛卡尔坐标系空间下,横坐标为x,纵坐标为y,而在霍夫空间的坐标系下,横坐标为k,纵坐标为b,要表示霍夫坐标系下的直线采用的方法是:b = xk + y 。
那对于一条已知的确定的直线:y = k0x +b0,在霍夫坐标系下有已知一点(k0, b0)与其对应。而相对应的若在霍夫坐标系下有直线:b = -x0k + y0,在直角坐标系下有已知一点(x0, y0)与其对应。在此要注意负号是因为在进行对应是y = kx + b对应的是b = -xk + y 。相关的对应关系如下图所示:
所以得出映射关系:
- 笛卡尔坐标系中一已知直线映射霍夫坐标系中的一点
- 霍夫空间中的一已知直线映射笛卡尔坐标系中一点
1.2 r = xcosθ + ysinθ
而在笛卡尔坐标系中有一特殊存在:x = a(垂直于x轴的直线,k无穷大),在这种情况就无法在一般的霍夫坐标系中找到一点与其对应,这时要将坐标转换成极坐标的形式(ρ-θ),ρ是原点到直线的垂直距离,θ是直线的垂线与横轴逆时针方向的夹角,垂直线的角度为0,水平线的角度为180度。在霍夫空间中坐标系的横坐标变为θ,纵坐标变为ρ。
映射关系如下图所示:
所以映射关系变为:
- 笛卡尔极坐标系内的一已知点映射到霍夫空间中是一曲线
- 霍夫空间极坐标系内的一已知点映射到笛卡尔空间中是一直线
1.3 使用原理
目的: 找笛卡尔空间中的线条
- 笛卡尔空间转换到霍夫空间,将笛卡尔空间中的点,转换成霍夫空间中的直线(曲线)
- 很多的点被转换成直线(曲线),这些线会产生交点。
- 在霍夫空间找交点最多的点,这个点的霍夫坐标值就是笛卡尔空间中的线条的k和b(ρ和θ)。
二、实现步骤
假设有一个100x100像素的图片,现在使用霍夫变换检测图片中的直线:
1、创建一个二维数组,初始化所有值为0。数组的行表示r,列表示θ。即创建了一个在霍夫空间中的极坐标系。数组尺寸的大小决定着结果的准确性。如果我们希望直线的角度的精度为1度,那这个数组的列就设置为180列,每列是一度,依次从0度到180度。数组的行表示r,如果我们希望直线的精度达到像素级别的,r的最大值就应该等于图像的对角线距离(即认为图像的左上角为图像原点,图像中点到原点的距离即为r),所以r就从0取到图像的对角线长度值。这个数组我们又称为累加器。
2、遍历原图中的每一个点,计算每个点在θ取0-180之间的每个r,如果这个数值在上述累加器中存在相应的位置,则在该位置上加1。遍历后即获得了在霍夫空间中极坐标系中的很多曲线。
3、搜索累加器中的最大值,(即找到2中获取的霍夫空间中极坐标系中的很多曲线的交点)并找到这个最大值对应的r和θ,就可以将图像中直线表示出来了。
引用
相关参考及引用:
- opencv学习笔记(十六):霍夫变换
- 第16章:霍夫变换
【数字图像处理】霍夫(Hough)变换相关推荐
- OpenCV3学习(6.2)——霍夫(Hough)变换:霍夫线变换HoughLine,霍夫圆变换HoughCircles
霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).最基本的霍夫变换是从黑白图像中检测直线(线段) ...
- OpenCV3图像处理——霍夫曼变换直线检测
前言 1.直线检测在好多实现应用中能用到到,我之前做过扫描件检测时用直线检测来处理判断页面是否水平,还有在辅助驾驶中的车道偏离预警系统也有过应用. 2.我的编程环境是Windows 7 64位,IDE ...
- 缺点 霍夫圆_霍夫线变换,霍夫圆变换
在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确地检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为 ...
- OpenCV之imgproc 模块. 图像处理(3)霍夫线变换 霍夫圆变换 Remapping 重映射 仿射变换
霍夫线变换 目标 在这个部分您将学习到: 使用OpenCV的以下函数 HoughLines 和 HoughLinesP 来检测图像中的直线. 原理 Note 以下原理的说明来自书籍 学习OpenCV ...
- OpenCV 霍夫线变换Hough Line Transform
OpenCV 霍夫线变换Hough Line Transform 霍夫线变换Hough Line Transform 目标 理论 霍夫线变换 它是如何工作的? 标准概率霍夫线变换 这个程序做什么? 代 ...
- 霍夫圈变换——Hough circle
草鸡详细的hough.circle介绍 一个电脑编程小白的自我成长之路(&_&)嘿嘿. CvSeq* cvHoughCircles( CvArr* image, void* circl ...
- OpenCV中的图像处理 —— 霍夫线 / 圈变换 + 图像分割(分水岭算法) + 交互式前景提取(GrabCut算法)
OpenCV中的图像处理 -- 霍夫线 / 圈变换 + 图像分割(分水岭算法) + 交互式前景提取(GrabCut算法)
- OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
本篇文章中,我们一起探讨了OpenCV中霍夫变换相关的知识点,以及了解了OpenCV中实现霍夫线变换的HoughLines.HoughLinesP函数的使用方法,实现霍夫圆变换的HoughCircle ...
- 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...
- OpenCV3之——霍夫变换(霍夫线变换和霍夫圆变换)
霍夫变换 本文章参考@浅墨_毛星云的博客.转载请注明出处. 参考链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 写作当前博文 ...
最新文章
- 概率分布--------离散概率分布和连续概率分布
- 【RocketMQ工作原理】indexFile
- Android 利用ListView制作带竖线的多彩表格
- python入门语句_Python 快速入门笔记(5):语句
- 从向量的角度理解皮尔逊相关系数
- 殷拓联手红星美凯龙收购软装家具企业“墙尚”40%股份​
- 人工智能已经迫在眉睫_创意计算机已经迫在眉睫
- 32位应用程序单个进程最大占用内存是4GB
- 中文纠错(Chinese Spelling Correct)最新技术方案总结
- Java中JDBC连接数据库(MySQL)
- Java 文件读写示例1
- HCIA-RS(211-中文题库,2019最新题库)
- 点餐小程序源代码|餐饮小程序源码PHP全开源开发
- 传输层 TCP 三次握手中性能优化 SYN_RCV 状态/syn攻击
- 倒排索引、正排索引,以及ElasticSearch对倒排索引的优化方法
- RSA加密及AES对称加密代码实现
- 成功解决Windows和VM下的Ubuntu虚拟系统之间相互复制粘贴的问题
- javaweb中四大域对象的生命周期与常用方法
- spring boot实战
- 20个JS精简代码无形装逼集合,最为致命,记得收藏好