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

目录

广义霍夫变换算法

在识别中的应用

训练

Visual code-words 在识别中的应用

结束语


广义霍夫变换算法

广义霍夫变换 或 广义霍夫变换算法是非常简单的。

如果方向是已知的,你知道物体的方向,你做的和我展示的完全一样。

1、对于每一个边缘点,你计算梯度方向 \theta,检索位移向量 R 以投票参考点(中心点)。

对于每一个边缘点,你计算梯度方向 \theta,你检索那个方向的位移向量 R 为参考点(中心点)投票,

2、在这个霍夫空间(x,y)中的最大值是具有最多数票数的边缘的参考点(中心点)。

在这个空间的最大值,在这种情况下,我们只在(x,y)投票。

这是参考点(中心点),这是对象所在的位置。它是最具有支持边缘的那种。

现在,你可能知道方向和尺度是不合理的,所以让我们谈谈方向。

假设方向是不知道的。算法如下:

我们要做的就是尝试不同可能的方向,这写在这里,对于每个边点。

但现在,我们有一个,我们将称之为主导方向\theta^{*}。这是对象的实际方向。

对于每个方向,可能的主方向,我们计算梯度方向,但是减去主导方向。

所以这里的主方向是这个\theta^{*},实际的梯度是 \theta 。

但是我们要用的梯度是这个{\theta}',它就是从总方向减去的这个主方向的梯度。

现在,我们得到了 {\theta}' 的位移向量。

我们仍在投票,Hough空间中的峰是参考点,但是请注意,现在我们投票的是X和Y以及\theta^{*}

还记得空间复杂度吗,k的n次方?

n从2变成了3,底线是任何合适大小的数的平方都比任何合适大小的数的立方小得多。通过加入这个方向,你会变得更大。

顺便说一下,这是一种很酷的方法,这是在原来的任意形状的纸,你也可以这样来表示的比例。

假设尺度是不知道的。算法如下:

对于每个边缘点,我们的算法看起来非常相似。但现在不是用主方向了,我们有一个标准量表。

对于每个可能的主尺度,我们再次计算梯度方向。

我们再一次得到位移向量,但现在我们必须使用scaled位移进行投票,该向量由S缩放。

我们再次投票,得票最多的就是正确的点。

这个空间中的峰值,现在的空间是X,Y和S,其中S是尺度。

再说一次,它是立方的。

现在你可以想象,如果你有尺度和方向,那将会是立方的,那会上升到第四。

适度的数字提高到立方是残酷的,所以你必须要小心这样做。

在识别中的应用

最后一部分,我想谈谈使用霍夫变换,位移向量的更现代的方法。

事实上,它是最近提出的2004,随后,作为定位特定对象的一种方式。

我们现在要做的是,不要使用边缘或者高值梯度的概念,把它作为你可以找到的特性。

我们要使用的是小的特征补丁。特征补丁只是图像的一小部分,由于某种原因,你已经决定,这些都是尝试寻找的有用的东西。

如果你有这些,这是可行的方法。

我们这里有一个训练图像,现在我要假设我们的特征补丁是轮胎,稍后我将告诉您我们如何着手寻找这些特征补丁。

我把轮胎定位在两个不同的位置,

然后就像梯度一样,当我第一次找到它的时候,右边有一个像这样的位移向量。

我将把它放到一个表中,这个表由feature patch建立索引。

然后我发现我又找到了,它在这里,它是索引,它在左边有一个位移向量,像这样。

我把它放在同一个表中,实际上它是由相同的特征类型索引的。

所以,这些特性被称为visual codeword(如图),我稍后会描述,我将基于码创建一个表格。

与每个码相关的是一组位移向量,每当我在图像中的任何地方发现该特征时,我都必须投票给它们。

训练

训练的第一步是开发所谓的视觉码词(visual codeword)

基本上它的工作方式是这样的,你有某种算子,我们会讨论有趣的算子,它产生所谓的兴趣点。

这些是图像中的点,其中有大量有趣的东西正在发生。我们会讨论哈里斯角和其他找到它的方法。

1、用聚类方法构建提取兴趣点周围的码本(在本文章后面会详细介绍)

你要做的是,用你感兴趣的点运算符,在一堆训练图像上找出兴趣点。

你在这些点周围收集一个小的图像贴片,你可能会得到几百个,或者几千个,然后你对它们进行聚类,

你使用一些算法来做一个聚类。当你处理完这些聚类之后,这些聚类的中心被称为视觉码词visual code words)。

在这里,你可以看到所有这些图像都是从轮胎之类的东西上拍摄的,然后它们都是聚集在一起的, 

所以视觉码词(visual codeword)就是这个小轮胎片。

这是一个中间轮胎。

这是一个完整的轮胎。

还有其他种类的视觉码词(visual codeword),这些就是我们要在不同的图像中寻找的特征。

当然,在这种情况下,我们会假设,我们在寻找汽车,我们在汽车上得到了一些训练图像。

顺便说一下,所有这些都是自动完成的。

所以,你们会看到一些东西从视觉码词(visual codeword)的角度看有点奇怪。它只是碰巧从数据中脱离了,

这不是人类做的。这是告诉系统继续去做这个。

2、将每个兴趣点周围的碎片映射到最近的码本条目。

你做的第二件事是你拿这些码词(code-word),这些是我们的特征(如右边图),记住,就像我们有轮胎一样,

我们发现轮胎落在图像中的任何地方。

这里是所有这些标记(如图),或者说这些小兴趣点。

我们所做的是,对于每一个兴趣点,我们发现在这一点上看起来最好的特征。

这就成为了这一点的标签。

好的,记住我们之前有一个标签说梯度向量是水平指向内的,这里我们有一个标签它是一个轮胎的右下角。

因此,这是将每个兴趣点映射到某个特定的碎片。

3、对于每个码本条目,存储相对于对象中心的所有位移。

最后,我们要做的是我们取这些小的特征,我们对待它们就像我们对待那些小的梯度图像一样。

我们取这个碎片,我们找到位移向量到中心,我们写下的位移向量在一个表中,由一个贴片标签索引。

如果我发现一个轮胎在左边,也就是说位移向量在右边,我写下位移向量。

如果我在右边找到一个轮胎,这意味着它的位移向量在左边,那么在轮胎的记录处,我将相同的位移向量加到表中,

并存储所有这些位移。

Visual code-words 在识别中的应用

所以在运行时,它的工作方式如下:

在这里,我将展示两辆汽车,只使用轮胎部分作为例子。

假设我们只有一个特征,那就是轮胎,假设我们试着到处寻找它。我们到处找,找到这四个。

当我们找到它们的时候,我们要做的就是取与那个码字相关的位移向量,然后对所有这些位移向量进行投票。

让我们记住轮胎码字,有两个位移向量,一个在右边,一个在左边,所以我们投票给他们。

然后我们简单地寻找比其他地方有更多选票的点。在这种情况下,这些点在哪里? 就在车的中央。

正如我所说,这最初是由ECCV,2004年欧洲会议创意视觉的一些人提出的,随后由此演变而来。

而且,我们的想法是,我们现在正在使用这种概念来检测特征和结构,以便尝试找到这些对象。

结束语

这个系列就讲到这里,我们关于霍夫变换的讨论也到此结束。

在这个例子中,它是一个普通方法的有趣例子,投票是许多年前首先发展起来的,就像我在80年代说过的那样。

随着事情的发展,它以更复杂的形式浮出水面。

事实上,最近有一种东西叫做霍夫森林霍夫森林结合了霍夫抵消的思想,

它的特点是投票支持偏移与一个集合或一个分类器集合类似于随机森林,这就是为什么这些东西被称为霍夫森林

要做的工作比看上去的要多,所以,你知道,确保你有足够的时间,我认为,在你开始工作后,

你会明白让这些更复杂的方法发挥作用意味着什么。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值