系列文章目录

本系列主要是在阅读论文时的学习笔记,在遇到较为经典的数字图像处理的算法和知识点,对其进行整理和总结,主要包括原理,方法,算法等。(希望可以坚持下来)

系列文章目录如下:

暂时还没(持续更新)


目录

系列文章目录

绪论

一、霍夫变换原理

1.1 y = kx + b

1.2 r = xcosθ + ysinθ

1.3 使用原理

二、实现步骤

引用


绪论

霍夫变换是一种较为经典的检测简单形状如线段和圆形、椭圆等的方法。采用的基本思想是累加投票的思想。


一、霍夫变换原理

在笛卡尔坐标系(平面直角坐标系)中表示一条直线的方法有两种:

  1. y = kx + b
  2. 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 使用原理

        目的: 找笛卡尔空间中的线条

  1. 笛卡尔空间转换到霍夫空间,将笛卡尔空间中的点,转换成霍夫空间中的直线(曲线)
  2. 很多的点被转换成直线(曲线),这些线会产生交点。
  3. 在霍夫空间找交点最多的点,这个点的霍夫坐标值就是笛卡尔空间中的线条的k和b(ρ和θ)。

二、实现步骤

假设有一个100x100像素的图片,现在使用霍夫变换检测图片中的直线:
1、创建一个二维数组,初始化所有值为0。数组的行表示r,列表示θ。即创建了一个在霍夫空间中的极坐标系。数组尺寸的大小决定着结果的准确性。如果我们希望直线的角度的精度为1度,那这个数组的列就设置为180列,每列是一度,依次从0度到180度。数组的行表示r,如果我们希望直线的精度达到像素级别的,r的最大值就应该等于图像的对角线距离(即认为图像的左上角为图像原点,图像中点到原点的距离即为r),所以r就从0取到图像的对角线长度值。这个数组我们又称为累加器。
2、遍历原图中的每一个点,计算每个点在θ取0-180之间的每个r,如果这个数值在上述累加器中存在相应的位置,则在该位置上加1。遍历后即获得了在霍夫空间中极坐标系中的很多曲线。
3、搜索累加器中的最大值,(即找到2中获取的霍夫空间中极坐标系中的很多曲线的交点)并找到这个最大值对应的r和θ,就可以将图像中直线表示出来了。


引用

相关参考及引用:

  1. opencv学习笔记(十六):霍夫变换
  2. 第16章:霍夫变换

【数字图像处理】霍夫(Hough)变换相关推荐

  1. OpenCV3学习(6.2)——霍夫(Hough)变换:霍夫线变换HoughLine,霍夫圆变换HoughCircles

    霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).最基本的霍夫变换是从黑白图像中检测直线(线段) ...

  2. OpenCV3图像处理——霍夫曼变换直线检测

    前言 1.直线检测在好多实现应用中能用到到,我之前做过扫描件检测时用直线检测来处理判断页面是否水平,还有在辅助驾驶中的车道偏离预警系统也有过应用. 2.我的编程环境是Windows 7 64位,IDE ...

  3. 缺点 霍夫圆_霍夫线变换,霍夫圆变换

    在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确地检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为 ...

  4. OpenCV之imgproc 模块. 图像处理(3)霍夫线变换 霍夫圆变换 Remapping 重映射 仿射变换

    霍夫线变换 目标 在这个部分您将学习到: 使用OpenCV的以下函数 HoughLines 和 HoughLinesP 来检测图像中的直线. 原理 Note 以下原理的说明来自书籍 学习OpenCV  ...

  5. OpenCV 霍夫线变换Hough Line Transform

    OpenCV 霍夫线变换Hough Line Transform 霍夫线变换Hough Line Transform 目标 理论 霍夫线变换 它是如何工作的? 标准概率霍夫线变换 这个程序做什么? 代 ...

  6. 霍夫圈变换——Hough circle

    草鸡详细的hough.circle介绍 一个电脑编程小白的自我成长之路(&_&)嘿嘿. CvSeq* cvHoughCircles( CvArr* image, void* circl ...

  7. OpenCV中的图像处理 —— 霍夫线 / 圈变换 + 图像分割(分水岭算法) + 交互式前景提取(GrabCut算法)

    OpenCV中的图像处理 -- 霍夫线 / 圈变换 + 图像分割(分水岭算法) + 交互式前景提取(GrabCut算法)

  8. OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    本篇文章中,我们一起探讨了OpenCV中霍夫变换相关的知识点,以及了解了OpenCV中实现霍夫线变换的HoughLines.HoughLinesP函数的使用方法,实现霍夫圆变换的HoughCircle ...

  9. 【OpenCV新手教程之十四】OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 作者:毛星云(浅墨) ...

  10. OpenCV3之——霍夫变换(霍夫线变换和霍夫圆变换)

    霍夫变换 本文章参考@浅墨_毛星云的博客.转载请注明出处. 参考链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 写作当前博文 ...

最新文章

  1. 概率分布--------离散概率分布和连续概率分布
  2. 【RocketMQ工作原理】indexFile
  3. Android 利用ListView制作带竖线的多彩表格
  4. python入门语句_Python 快速入门笔记(5):语句
  5. 从向量的角度理解皮尔逊相关系数
  6. 殷拓联手红星美凯龙收购软装家具企业“墙尚”40%股份​
  7. 人工智能已经迫在眉睫_创意计算机已经迫在眉睫
  8. 32位应用程序单个进程最大占用内存是4GB
  9. 中文纠错(Chinese Spelling Correct)最新技术方案总结
  10. Java中JDBC连接数据库(MySQL)
  11. Java 文件读写示例1
  12. HCIA-RS(211-中文题库,2019最新题库)
  13. 点餐小程序源代码|餐饮小程序源码PHP全开源开发
  14. 传输层 TCP 三次握手中性能优化 SYN_RCV 状态/syn攻击
  15. 倒排索引、正排索引,以及ElasticSearch对倒排索引的优化方法
  16. RSA加密及AES对称加密代码实现
  17. 成功解决Windows和VM下的Ubuntu虚拟系统之间相互复制粘贴的问题
  18. javaweb中四大域对象的生命周期与常用方法
  19. spring boot实战
  20. 20个JS精简代码无形装逼集合,最为致命,记得收藏好

热门文章

  1. 初识 Cisco Packet Tracer 思科模拟器 入门基础教学
  2. JavaScript网页特效
  3. php 微信表情字符,微信公众平台开发--表情符号
  4. unity素材二:三个老头欧系战士模型带动作特效
  5. 专家视点:杜绝木马的干扰-防范后门的技巧(转)
  6. APISpace 标准中文电码查询API
  7. 钩子(hook)编程
  8. Java面试八股文 2021年最新Java面试题及答案汇总
  9. java中的移位操作
  10. Python-ZFJObsLib完美生成iOS垃圾代码