目录

基本的霍夫变换算法

霍夫变换的复杂性

霍夫例子


基本的霍夫变换算法

说到算法,我们来看一下:

我们将使用直线的极坐标参数化,极坐标表示。

还有一种叫Hough累加器(数组)的东西,它只是用来表示要收集选票的东西。

在这种情况下是二维的,箱子代表不同的 d 值和不同的  值。

你必须决定的事情是:箱子有多大? 它们有多少个?

所以,如果从 0 到 ,也就是0度到180度,如果每一度都是1个箱子,那么就有180个箱子,

如果你曾经有10度那么就只有18个,所以你必须决定箱子有多大。

给出这个方程和霍夫累加器,以下这是算法:

我希望你们能理解我试图用颜色来编码,这是基本的霍夫算法。

1、你将你的累加器速率初始化为零:

2、我们必须有一组边缘点,对于每一个边缘点,也就是说,在x,y的每个地方,我们必须知道它是否是一个边缘点,

或者我们有一个列表。

不知何故,我们知道哪些点是边缘,事实上,我们如何知道我们知道这一点?

因为我们上次做过,对吧?

所以,你知道如何在MatlabOctave中做这个,或者如果你真的受虐狂的话,你可以用汇编代码来写,。

对于每个边点x,y,我们要做的是,这里我用 ,从 0 到 180,你知道,应该是1度增量:

好的,解出d,我们用这个方程,因为我们有 x 和 y ,我们有可以解出 d 的:

注意,这里我没有限制 d 是正的还是负的,所以它可以是正的,也可以是负的。

3、我必须设置d,θ,我必须增加它的投票。

因此,如果d是负数,那意味着什么,意味着那个d的箱子,也许我的d的箱子是从-100到100。

如果我有201个箱子,我按1的步长进行,如果我得到 -20,我要加100,那就是80。

d 值进入箱子,所以d值的箱子增加了1。

在完成所有投票之后,你找到 d 和 θ 的值,其中H (d)是最大值:

你想找到这些最大值。顺便说一下,Matlab中有一个函数叫Houghpeaks

顺便说一下,你不允许使用它,因为你要自己写最大值值查找器。

4、不管怎样,假设你只找到了一个d,直线本身就是d = x cos + y sin:

这就是根据边缘点找到这些线条的全部内容。

霍夫变换的复杂性

当你做一个算法的时候,你只需要考虑它的工作效果如何?

很明显这很有效,因为我告诉过你们。

对于算法来说更重要的是我们要讨论复杂度。

第一个问题很简单。

空间复杂度是多少? 这就是我需要使用多少内存?

先不考虑图像,我需要k到n次方个箱子。

如果每个维度都有k个箱子,k的n次方是箱子的数量。

我们在二维空间中做这个,所以是k的平方。(n表示维度,如果我有100个,大概是10000个。)

这是我们后面要讲的内容,添加参数的数量,在这种情况下增加n,在内存方面会非常昂贵。

事实上,在你的习题集中,你会尝试做某事,你会在Matlab中成长,然后你会想出如何修复它。

那么投票的时间复杂度呢?

嗯,好消息是投票与边缘点的数量成线性比例。

你通过你的边缘点,他们每个投票。投票可能需要一点时间,但它是不变的。

比较一下,假设你试着画一个圆。

一个圆由三个点定义。

因此,如果你有一些大量的边缘点,那么三元组的数量就是那个数字,我们称之为q。

Q选3是个很大的数,对吧?

然而,如果你做的事情只与q成比例,那么你的形状要好得多。

所以这里的想法是,时间复杂度在你检测到的特征点或边缘点的数量上是恒定的。

霍夫例子

这里是实现霍夫的基本步骤:

下面让我们看一些例子,一些玩具例子和一些真实的例子。

这里我们有一个在左边的图像的卡通例子里面有一串点这些点碰巧都在一条线上,这很好。

这是一个无噪声的Hough例子在真实的宇宙中是没有的,但是我做了,我这里有一个。

在左边,在图像空间中,有一些点都在直线上:

它们躺在一条完美的线上,这就是为什么你知道这是一个卡通例子,因为这从来没有真正发生过。

我们右边的是选票,你在这里看到的是每个点都在创建一个特定的跟踪:

你会注意到这些是正弦曲线的一部分。

Okay,这是另一个:

这来自于我之前说过的方程。

最重要的是这里所有的选票排好队,这就是我们如何知道这条线的位置:

看到了吗?

太酷了。

假设我给你们看了一个正方形的图片。我在上面放了一个边缘探测器。你希望在霍夫空间看到什么?

我们看一下,一个正方形有多少条线?

有四条线,好的,你会得到一个Hough累加器阵列,一个看起来像这样的键合物。

这里有四个峰:

在图片中很难看到,但是这里的值比其他地方的值要高得多,你可以看到选票是如何重叠的。

在这里,你会知道有四条线你可以把它们拉出来。

这是另一个街区的世界场景:

你可以看到这里有一些边,这是霍夫数组,你可以看到到处都是正弦曲线。

顺便说一下,这里有一个非常大的亮点:

这个点是什么?

这是对应着这条又大又长的边:

还有其他地方:

这是有道理的,因为还有其他的直线:

但是这个大的亮的是最长的,因为它拥有最多的选票。


——学会编写自己的代码,才能练出真功夫。

8.霍夫变换:线条——基本的霍夫变换算法、霍夫变换的复杂性、霍夫例子_3相关推荐

  1. 图像处理之霍夫变换(直线检測算法)

    图像处理之霍夫变换(直线检測算法) 霍夫变换是图像变换中的经典手段之中的一个,主要用来从图像中分离出具有某种同样特征的几何 形状(如,直线,圆等).霍夫变换寻找直线与圆的方法相比与其他方法能够更好的降 ...

  2. 9.霍夫变换:圆——圆的算法、投票使用技巧、优点和缺点_2

    目录 圆的算法 投票实用技巧 优点和缺点 结束语 圆的算法 这是一个简单描述圆的算法. 和之前一样: 1.循环每一个边缘像素: 2.循环每个可能的半径:这是对的,因为我们不知道半径. 3.循环每一个可 ...

  3. 9.广义霍夫变换——广义霍夫变换算法和识别中的应用、现在的霍夫算法及识别中的应用_2

    目录 广义霍夫变换算法 在识别中的应用 训练 Visual code-words 在识别中的应用 结束语 广义霍夫变换算法 广义霍夫变换 或 广义霍夫变换算法是非常简单的. 如果方向是已知的,你知道物 ...

  4. 8.霍夫变换:线条——动手编码、霍夫演示_4

    目录 动手编码 霍夫演示 动手编码 我们将在这里花一分钟来演示一下,如何使用Matlab构建霍夫变换. 我再重复一遍,在你们的习题集上,你们要做一些Hough代码. 你不能使用已经存在的Hough实现 ...

  5. 8.霍夫变换:线条——霍夫的效果、噪声对霍夫的影响、霍夫拓展_5

    目录 霍夫的效果 噪声对霍夫的影响 霍夫拓展 本环节结束 霍夫的效果 这里我将给你们展示一个Hough运行在真实图像上的例子来告诉你们它做得好和做得不好. 这是一张美国足球场的照片: 这是美式足球,你 ...

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

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

  7. OpenCV_09 模版匹配和霍夫变换:霍夫线检测+霍夫圆检测

    1 模板匹配 1.1 原理 所谓的模板匹配,就是在给定的图片中查找和模板最相似的区域,该算法的输入包括模板和图片,整个任务的思路就是按照滑窗的思路不断的移动模板图片,计算其与图像中对应区域的匹配度,最 ...

  8. 霍夫变换检测圆c 语言,c++ 霍夫变换检测直线

    通常这是一幅边缘图像,比如来自 Canny算子.cv:: Houghlines函数的输出是 cV::Vec2f向量,每个元素都是一对代表检测到的直线的浮点数(p,0).在下例中 我们首先应用 Cann ...

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

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

最新文章

  1. android系统各个输出log对应层次文件
  2. c语言编程员工管理的代码,员工信息管理完整(含附源代码).doc
  3. 触发器——创建||更新||删除||查看
  4. [转]android webview学习
  5. 容斥 - HDU 4135 Co-prime
  6. php ftp 账号密码修改,月光软件站 - 编程文档 - 其他语言 - 用PHP即时添加,删除FTP帐号和更改FTP密码的函数...
  7. php可输入的下拉框,JavaScript_可编辑下拉框的2种实现方式,可编辑下拉框-HTML 复制代码 代 - phpStudy...
  8. npm 模块安装机制简介
  9. NodeMCU(ESP8266) 接入阿里云物联网平台 踩坑之旅
  10. python基础之排列组合以及正则表达式
  11. iOS仿苹果原生天气app总结
  12. 笔记丨利用gitee创建个人博客网站
  13. CF1437F Emotional Fishermen
  14. python 多线程 XKCD 下载程序
  15. 个人博客(八)Hexo新建文章、主题小修改
  16. Java使用SPARQL访问DBPedia Endpoint错误
  17. 2020web前端学习路线(附全套前端视频教程+教学大纲
  18. 桂 林 理 工 大 学实 验 报 告 实验名称实验六 函数
  19. 用计算机录音并播放教学设计,八年级信息技术《录制声音》说课稿
  20. Auto Layout和UILabel

热门文章

  1. Android Setting 日期相关API,自定义DatePicker
  2. Android 播放SD卡视频 Demo
  3. WORD开发工具的控件功能?
  4. mysql5.6.40免安装版配置方案
  5. [Spark]Could not locate executable null\bin\winutils.exe in the Hadoop binaries
  6. ubuntu 14.10 64bit系统安装MBuntu主题(仿Mac主题)
  7. java nio 强制关闭_Java NIO服务器:远程主机强迫关闭了一个现有的连接
  8. 使用嵌套循环,打印四行五列星星矩形(每次只能打印一个*)
  9. linux mount 默认读写,Linux mount 修改文件系统的读写属性
  10. webpack打包压缩混淆_细说webpack系列 3. webpack-cli 零配置打包