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

目录

霍夫的效果

噪声对霍夫的影响

霍夫拓展

本环节结束


霍夫的效果

这里我将给你们展示一个Hough运行在真实图像上的例子来告诉你们它做得好和做得不好。

这是一张美国足球场的照片:

这是美式足球,你知道,用的球不是圆的。

我们运行一个有味道的边缘探测器,我们得到这些边缘,这些是一些有趣的边缘:

然后我们要做的是通过一个霍夫累加器阵列来运行它:

你可以看到这里的正弦曲线,有点分散:

但是你可以看到这些,这些方块都是这些发现的峰值,这是用一些代码试图寻找峰值:

你会注意到它们有很多很接近,对吧?

所以非常接近意味着:它们的角度是相同的,而且它们的位置大致相同。

相同的角度,相同的位置,是的,我的意思是,这是相同角度的线在这里,这里,这里:

即使在这里,相同的角度,相同的位置:

你会发现附近有峰值。

我给你们看这个峰值图像:

如果我画出与这些峰中的每一个相联系的线,我会看到像这样的东西。这里有好消息和坏消息。

好消息:它发现了大量的线段。

坏消息:你会注意到它也漏掉了一些:

为什么呢? 这与投票箱中发现的边的性质有关,这些都是关于如何找到边缘的细节。

你也会注意到这里有一条青色的线,这是找到的最长的线段:

现在,应该有人会说:“等一下,这线段是什么意思?”

在霍夫变换中,当你找到 m 和 b,这是一条无限长的线。这条线可以一直延伸到整个图像。

如果你想找到线段,选了这条线的点,把它们连起来或者把两个最远的点连起来。

或者做一些其他的操作沿着这条无限的线运行,看看在这附近有一个边缘点或者在这附近的任何地方。

所以你必须做一些其他的操作,除了我们刚刚展示的投票为了找到线段。

对你们来说好消息是,在你们的习题集里,我只想让你们找到无限长的直线。

你不必担心找到图像中实际支持的线段。

噪声对霍夫的影响

剩下的一些东西。

首先是噪声对霍夫变换的影响。

所以,在这里你能看到的是左边的一个图像我们取了相同的一组卡通点,我们把它们打乱了一点:

我们给它们的位置添加了一些噪声。

在右边的图像,你看到的是霍夫的投票。

你会注意到,峰值,不是很精确:

事实上,如果我们有非常非常好的箱子,我们可能会完全错过那个峰值:

所以,等下我们会讲一点关于改变箱子的大小,关于噪音,作为一种使它工作的方法。

但是,会发生的是,少量的噪音会把你撞飞。

顺便说一下,你能做的一件很酷的事,如果你想找到这里的一般峰值,你会怎么做?

你可以平滑这个图像,对吧?

你可以把它作为图像进行过滤,然后找到峰值。

现在你知道你已经移动了一些峰顶,因为你把它弄模糊了。

但现在你至少找到了峰值,你会说,我要再做一次霍夫变换,但这次我只关注那个区域:

好,所以我要建立一个新的数组,带有更精细的箱子,但只有在那里,如果d或θ在那边,我甚至不去计算那些选票,

那会让你从一个嘈杂的图像到一个更好的图像。

还有一个问题:

如果我们有很多噪音怎么办?

假设我们只有噪音。在左边,你得到的是一堆点,它们都是随机的。

在右边,每个人都有投票权。

去投票吧。结果是没有真正的候选人。

但也许我们不知道,你可以偶然发现峰值。

所以有时候你不得不担心,我发现的峰值是否真实?

如果你已经知道了,假设你知道这幅图中有六条线,那么你只找到六条最高峰,但是如果你不知道有多少个高峰,

你有一个问题,什么时候一个高峰是真正的高峰,什么时候它只是选票的意外排列?

霍夫扩展

我想谈谈霍夫变换的几个扩展。

然后这些扩展中的一些会继续,下一个环节或者下下一个环节。

到目前为止,人们使用最多的扩展是这里显示的使用梯度的扩展:

你会注意到我们的算法几乎完全一样。

我们初始化累加器数组:

我们遍历每个点,但现在不是循环或遍历所有可能的方向,

我们实际上在那个点取梯度,

我们从这个梯度取θ:

现在你可以拿一个θ,或者你甚至可以采取一系列的θ,你说,嗯,我知道它是,大约45度加上或减去10,

所以我会投票给 -35 到 55 ,但我不必担心投票给所有其他人。

我把它写在这里就好像你只有一个值。

现在你有θ,你可以直接求解方程,就像我们以前一样,我们增加累加器数组。

好的是,通过使用梯度,你大大减少了投票时间,对吧?

你不用担心,你只有一个点。另外,稍后,您可以使用它来减少维度。

这是人们最常使用的扩展。

事实上,整个方向的概念我们以后会讲到其他一些扩展。

另外一个是拓展,记住当我们做边缘检测时,我们说一些边缘比其他边缘具有更强的幅度:

你必须设定一个阀值。好吧,你可以降低阀值,试着得到更多的边。

但是你可能想要用更高的临界值来计算边缘。

那么,更多地计算它们意味着什么呢?

好吧,你可以想象更强的优势会得到更多的选票。

另一个拓展,和我之前讲的很相似,就是改变 \theta 和 d 的箱子大小。

拓展3:改变(d,\theta)的采样,以提供更多/更少的分辨率。

正如我们之前所说的:大箱子很容易投票,它很快。

但有时你也会遇到类似的情况:

要找到一个箱子,你会遇到这样的问题,因为噪音的原因,实际的路线是支持不同的箱子,所以扩展是分层进行的。

首先,做一个粗略的装箱,你有一些更大的箱子,箱子能捕获更多的值。

一旦你在那里找到了峰值,你就可以在这些区域内找到更精细的阵列,而你,你可以提高模型的恢复能力。

最后,它不仅仅是一个扩展,而是一种全新的做事方式。

我们这样做是为了线,但你可以很容易做到这一点。

我不应该这么说。对于其他参数化的形状,比如圆,你可以很直接地做这个,事实上,我们稍微做一下,你也可以的。

或者实际上,任何其他形状,包括由它们的模板定义的形状。

本环节结束

这个环节就到这里。

毫无疑问,你们会回过头来仔细看这个问题,因为这个算法和数据集的操作将作为霍夫问题集第一部分的基础。

当你在网上查这个东西的时候,你们中的很多人会想把它和我们在这里看到的联系起来。

我要告诉你们的是,实现霍夫变换感觉比较简单。

他们后来报告说,他们花了大约10个小时来做这个习题集。这是因为拓展等等。

我们在报纸上说的话几乎都不起作用,因为我们必须让它听起来很适合发表。

在实际情况下,你可以使用理论,然后你必须对图像和AL和算法进行揣摩。


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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值