最近笔者学习霍夫线变换和LSD直线检测算法,有一些学习建议,希望可以给予大家一些帮助。

 学习霍夫变换的感想

每个人理解的霍夫变换或许略有差异,但是最主要的是笛卡尔坐标系跟极坐标系的相互转换。

霍夫变换分为标准霍夫变换(SHT),多尺度霍夫变换(MSHT),累积概率霍夫变换(PPHT)。

标准霍夫变换(SHT),多尺度霍夫变换(MSHT)都由函数HoughLines调用,累积概率霍夫变换(PPHT)由HoughLinesP调用。

笛卡尔坐标和极坐标

笛卡尔坐标的点 <=> 极坐标的曲线

在笛卡尔坐标系:直线可由参数斜率和截距(m,b),表示。

在极坐标系:可由参数极径和极角(ρ,θ)表示。

(ρ,θ)就是一对霍夫空间的变量表示。直角坐标系中一个点(x0, y0)可以代表360°的直线的其中一个点,我们把这个点旋转360°的直线都用极坐标(ρ,θ)表达出来,就是一个在霍夫空间(ρ,θ)的正弦曲线(大家想象一下,一个点的360°的直线的(ρ,θ)都不一样,不一样的(ρ,θ)组成了正弦曲线上的点)。同样,直线上的其他点(Xn,Yn)也会构成一组关于ρ,θ的正弦曲线,这样势必存在一个关于ρ,θ相交(即垂直点(r,θ))。

于是乎, 一条直线能够通过在极坐标下寻找交于一点的曲线数量来检测,如果越多曲线交于一点,就意味着这个交点表示的直线由更多的点组成。我们可以通过设置直线上点的阈值来定义多少条曲线交于一点我们才认为检测到了一条直线。

标准霍夫线变换能检测直线,但是不能够检测直线两端,概率霍夫线变换可以检测到直线的两端。如今霍夫变换可以检测圆及其大部分的形状。

下图这是笔者的总结, 如有误,望请告知。

标准霍夫变换本质上是把图像映射到它的参数空间(即霍夫空间)上,它需要计算所有的M个边缘点,这样它的运算量和所需内存空间都会很大。如果在输入图像中只是处理m(m<M)个边缘点,则这m个边缘点的选取是具有一定概率性的,因此该方法被称为概率霍夫变换(Probabilistic Hough Transform)。该方法还有一个重要的特点就是能够检测出线端,即能够检测出图像中直线的两个端点,确切地定位图像中的直线。

接下来大家学习理解霍夫变换检测线的源代码。

这是霍夫线变换的源代码(有中文注释,利于快速理解):https://download.csdn.net/download/qq_38265674/10438074

 学习思考:1.检测直线过程中一条比较粗的直线会被检测成两条分割的直线?

2.霍夫线变换有什么缺点?如何优化?

答案自行百度思考。

 学习LSD直线检测的感想

LSD是一种局部提取的算法,运行速度比霍夫线变换Hough要快。

但是有局部算法的缺点:

1.对于直线相交情况,因为设置了每个点是否USED,因此每个点只能属于一条直线,若有相交必有至少一条直线被割裂为两条。

又因为其基于梯度,直线交点梯度值往往又较小(不被检测为边缘点),因此很有可能相交的两条直线在交点处被割裂为四条线段。

2.由于局部检测算法自增长的特点,对于长线段被遮挡、局部模糊等原因经常割裂为多条直线。这些缺点在Hough变换中不存在。

详细跳转至:https://blog.csdn.net/tianwaifeimao/article/details/17678669

不懂LSD算法原理的话,跳转至:https://blog.csdn.net/carson2005/article/details/9326847

学习LSD直线检测源代码:https://download.csdn.net/download/qq_38265674/10438356

以上是笔者的学习建议。

侵删。

LSD直线检测和霍夫线变换的学习建议相关推荐

  1. 花老湿学习OpenCV:霍夫线变换与直线检测

    引言: 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体.该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集 ...

  2. Python OpenCV -- 霍夫线变换(十二)

    霍夫线变换 1. 霍夫线变换是一种用来寻找直线的方法. 2. 是用霍夫线变换之前, 首先要对图像进行边缘检测的处理,也即霍夫线变换的直接输入只能是边缘二值图像. 实现: 1.  一条直线在图像二维空间 ...

  3. python 霍夫直线变换_霍夫线变换

    目录:一.引入极坐标 二.霍夫线变换实现原理 三.图像中的霍夫线变换 四.概率霍夫变换 五.Python 例子 六.参考 Hough线变换是一种用于检测直线的变换.它最大的优点是,即使是虚线(dash ...

  4. OpenCV3检测直线或圆:霍夫线变换,霍夫圆变换合辑

    霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果. 霍夫变换于1962年由Pau ...

  5. OpenCV中的霍夫线变换、概率霍夫线变换

    OpenCV中的霍夫线变换.概率霍夫线变换 1. 效果图 2. 原理 2.1 什么是霍夫变换? 2.2 什么是概率霍夫变换? 3. 源码 3.1 霍夫变换 3.2 概率霍夫变换 参考 这篇博客将介绍P ...

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

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

  7. opencv 霍夫线变换

    霍夫线变换 霍夫线变换是一种用来寻找直线的方法. 是用霍夫线变换之前, 首先要对图像进行边缘检测的处理,也即霍夫线变换的直接输入只能是边缘二值图像. 它是如何实现的? 众所周知, 一条直线在图像二维空 ...

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

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

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

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

最新文章

  1. bd9.1 MySQL 常见问题
  2. QToolButton设置背景无效的思考
  3. 戏说 Windows GDI (3)
  4. 关于一些blog优化
  5. 对于javaScript闭包,立即执行函数的用法的一些理解
  6. 【CF1047D】Little C Loves 3 II【构造】【赛瓦维斯特定理】
  7. git ssh配置文件 服务器_git登录ssh服务器
  8. java ajax data_jquery ajax 方法中传递的data参数,如何在java类中获取
  9. 行为设计模式 - 状态设计模式
  10. 三张图较为好理解JavaScript的原型对象与原型链
  11. 【转】PPT精典基础教程
  12. NXP RT1062 flashloader下载程序到RAM执行
  13. 电视android怎么连接手机助手下载,投屏助手app下载 投屏助手(手机投屏到电视) for Android v2.0 安卓版 下载-脚本之家...
  14. 【应急响应】————7、服务器大量发包
  15. 计算机ppt里怎么应用背景图,如何在电脑ppt软件中添加背景图片
  16. 微信小程序的开发之手机号、邮箱验证
  17. Dubbo配置加载问题
  18. HTML生成PDF、web打印动态分页、预览。内容满了,自动换页、移动端兼容 bookjs-eazy
  19. 字节跳动将双月OKR调整为季度;马斯克批OpenAI违背初心:被微软控制,只顾赚钱;苹果上新348元省电保护膜|极客头条
  20. android 删除一个工程,Android Studio该怎样删除项目?

热门文章

  1. [已解决]批处理查看文件大小的字节怎样转换成KB和MB?
  2. 计算机概论复习:知识大全
  3. Laplacian of Gaussian公式的英文推导过程
  4. 华为p9如何恢复手机删除的照片
  5. SAE J3016 自动驾驶分级定义 2021年4月更新
  6. 睡眠质量不好怎么改善,几个助眠好物帮助你睡安稳觉
  7. 微信设置文字大小影响网页布局
  8. 在图片上涂鸦(其实就是乱画 O(∩_∩)O)
  9. 一个好用的 txt 小说阅读器(自用好用,目前没发现替代款)
  10. 柱承重式钢模块建筑结构体系适用高度研究