目录
介绍
广义霍夫变换步骤
建立霍夫表
识别步骤
广义霍夫变换实例
介绍
今天我们要做的是用两个重要的变化来结束今天的学习。
第一个是我们将使用非解析模型。(参数表示固定或任意形状的姿态或尺度的变化)
它不是直线,也不是圆,在这里,我们的参数是解析参数。
相反,参数将表示:一些固定但任意模板的方向或比例。
第二个是基于视觉码的特征。(不是边缘,而是从模型中学习的模板)
我们只简单讲一下这块知识。
它是一种基于视觉码的方法,我们用所谓的视觉码来表示特征而不是边缘,这是一种更现代的计算机视觉。
边缘来自于更古老的观点,关于物体如何被描述。现在的焦点更多地集中在个人特征上。
在这文章的后面,我们会讲到兴趣点,以及这些点的特点,因为我不想只教你旧的电脑视觉。
广义霍夫变换
对于广义Hough变换,当我们有一个特定的形状时很容易,因为基于我们对图像中的单个点或单个特征或单个边缘线的方程,
我们将知道如何投票,我们基本上将解决 这个方程会告诉我们如何在箱子里投票。
但是如果你有一个任意的形状,你怎么知道怎么投票呢? 要做这个的方法是建立一个叫做霍夫表(Hough table)。
在最初的文章中,它实际上被称为R-table,但我认为它是一个霍夫表(Hough table)。
建立霍夫表
它的工作方式如下:
1、在每个边界点,计算位移向量:r = c - pi.
对于每一个边界点,我们取其中一点P1:
我们要做的是,我们计算位移 或 R向量从P1到中心点c(如图),但这是一些参考点,这是我们要用点来定位对象。
我们测量R,这是一个位移向量。
2、测量边界点处的梯度角 。
接下来我们要做的是,计算梯度(如图)和边缘方向。
3、将该位移 R 存储在以 为索引的表中。
我们要做的是,我们把 R,我们放在一个由 索引的表中。
因此,如果我们有其他点,具有相同的 ,它也会把它的R添加到完全相同的表位置。
所以会有多个位移R,我一会儿会给你们看一个例子。
但是我的想法是:你根据位移创建 R,然后用 对它进行索引。
我们取第二点P2,它有一个不同的,并且会有一个不同的 R 进入该表,因此,我们将位移 R 存储在由 θ 索引的表中。
识别步骤
1、在每个边界点处,测量梯度角。
2、查找 位移 R 表中的所有的位移 R。
3、每个位移将投票给一个中心,最后确定中心。
在识别的时候,我们本质上是逆向。我们所做的是,在每个边界点,我们计算那里的 。
顺便说一下,现在我们假设物体的方向没有改变。
一分钟后,我会告诉你们如何解决它,超过一分钟后,我会告诉你,当方向改变时如何解决这个问题。
所以在每个边界点,这里是P1,我们找出方向,我们进入 R 表格,我们找到与该方向相关的所有位移R向量,所以会有这个:
也许还有其他一些 ,
但我们肯定会在这一点上投票。
然后在P2处(如图),
我们找到了它的方向,我们找到了所有与这个方向相关的位移 R 向量。
那个方向肯定会在那个方向投票。
整个想法是:正确的参考点c聚集了大量的选票。
你要做的是,你使用这个表格,这个R-table或者霍夫表格,为了告诉每个人,在新的测试图像中找到每个点如何投票。
这最初是Dana Ballard做的,我要指出这是在1980年,30多年前。
这只是一种向你展示的方法,有时甚至会出现在计算机视觉中。
广义霍夫变换实例
现在让我给你们看一个例子,在这个例子中你们得到了一个图像:
我要假设的第一件事是:我们有这些小的边元素,这些梯度。我要假设我们知道哪条边在里面,哪条边在外面。
它只是使图像更容易索引。让我们首先看一下指向内部的所有底部水平边缘。它们的方向都有相同的。
现在,当我们遍历所有这些不同的边元素时,它们对中心的位移是不同的。
所有这些红线,这些都是与底部水平边相关的位移。
所以如果我找到一个底部的水平边,我就必须对所有的位移进行投票。
在运行时看起来如下所示:
所以这里有很少的边缘元素。
它投票给所有这些不同的位移R(如图),
它们都在这条线上。
所有这些不同的位移从何而来?
他们都在这里:这些是所有可能的底边线的位移,所以每个向量都必须由每个底元素投票。
这只是一个元素(如图),
当然,还有下一个元素。
它必须以同样的方式投票,它来自同一个 。
另一个,另一个,又一个,
最后这一长串投票可能被抵消。
现在,我没有在这里指出,中间的那个实际上更多的选票,也许你可以认为中间比末端厚。
但这条线是有表决结果权,因为它的中心可能就在那里。现在,我们还不知道它在中心的什么位置。
那么,现在我们可以做的是我们可以看看向下指向的对角线。
你会注意到,对于向下指向的对角线,它可以是任何地方,从正上方一直到右边。
所以它可以是在它上面或者一直到右边。
这意味着在运行时,每个小对角线元素必须直接在它上面投票,一直到右边。这就是第一部分所表示的:
这是另一个对角元素,
另一个对角元素,
还有另一个对角元素。
直到最后它们都堆积起来。
你们会注意到,我知道对象在哪里。这个中心就是这样被发现的。
因此,我们的想法是使用这些偏移量的表格,用梯度作为索引,以便为中心投票。
——学会编写自己的代码,才能练出真功夫。