9.广义霍夫变换——介绍、广义霍夫变换步骤、实例_1

目录

介绍

广义霍夫变换步骤

建立霍夫表

识别步骤

广义霍夫变换实例


介绍

今天我们要做的是用两个重要的变化来结束今天的学习。

第一个是我们将使用非解析模型。(参数表示固定或任意形状的姿态或尺度的变化)

它不是直线,也不是圆,在这里,我们的参数是解析参数。

相反,参数将表示:一些固定但任意模板的方向或比例。

第二个是基于视觉码的特征。(不是边缘,而是从模型中学习的模板)

我们只简单讲一下这块知识。

它是一种基于视觉码的方法,我们用所谓的视觉码来表示特征而不是边缘,这是一种更现代的计算机视觉。

边缘来自于更古老的观点,关于物体如何被描述。现在的焦点更多地集中在个人特征上。

在这文章的后面,我们会讲到兴趣点,以及这些点的特点,因为我不想只教你旧的电脑视觉。

广义霍夫变换

对于广义Hough变换,当我们有一个特定的形状时很容易,因为基于我们对图像中的单个点或单个特征或单个边缘线的方程,

我们将知道如何投票,我们基本上将解决 这个方程会告诉我们如何在箱子里投票。

但是如果你有一个任意的形状,你怎么知道怎么投票呢?  要做这个的方法是建立一个叫做霍夫表(Hough table)

在最初的文章中,它实际上被称为R-table,但我认为它是一个霍夫表(Hough table)

建立霍夫表

它的工作方式如下:

1、在每个边界点,计算位移向量:r = c - pi.

对于每一个边界点,我们取其中一点P1:

我们要做的是,我们计算位移 或 R向量从P1到中心点c(如图),但这是一些参考点,这是我们要用点来定位对象。

我们测量R,这是一个位移向量。

 

2、测量边界点处的梯度角 \theta 。

接下来我们要做的是,计算梯度(如图)和边缘方向。

3、将该位移 R 存储在以 \theta 为索引的表中。

我们要做的是,我们把 R,我们放在一个由 \theta 索引的表中。

因此,如果我们有其他点,具有相同的 \theta,它也会把它的R添加到完全相同的表位置。

所以会有多个位移R,我一会儿会给你们看一个例子。

但是我的想法是:你根据位移创建 R,然后用 \theta 对它进行索引。

我们取第二点P2,它有一个不同的\theta,并且会有一个不同的 R 进入该表,因此,我们将位移 R 存储在由 θ 索引的表中。

识别步骤

1、在每个边界点处,测量梯度角\theta

2、查找 \theta 位移 R 表中的所有的位移 R。

3、每个位移将投票给一个中心,最后确定中心。

在识别的时候,我们本质上是逆向。我们所做的是,在每个边界点,我们计算那里的 \theta 。

顺便说一下,现在我们假设物体的方向没有改变。

一分钟后,我会告诉你们如何解决它,超过一分钟后,我会告诉你,当方向改变时如何解决这个问题。

所以在每个边界点,这里是P1,我们找出方向,我们进入 R 表格,我们找到与该方向相关的所有位移R向量,所以会有这个:

也许还有其他一些 ,

但我们肯定会在这一点上投票。

然后在P2处(如图),

我们找到了它的方向,我们找到了所有与这个方向相关的位移 R 向量。

那个方向肯定会在那个方向投票。

整个想法是:正确的参考点c聚集了大量的选票。

你要做的是,你使用这个表格,这个R-table或者霍夫表格,为了告诉每个人,在新的测试图像中找到每个点如何投票。

这最初是Dana Ballard做的,我要指出这是在1980年,30多年前。

这只是一种向你展示的方法,有时甚至会出现在计算机视觉中。

广义霍夫变换实例

现在让我给你们看一个例子,在这个例子中你们得到了一个图像:

我要假设的第一件事是:我们有这些小的边元素,这些梯度。我要假设我们知道哪条边在里面,哪条边在外面。

它只是使图像更容易索引。让我们首先看一下指向内部的所有底部水平边缘。它们的方向都有相同的。

现在,当我们遍历所有这些不同的边元素时,它们对中心的位移是不同的。

所有这些红线,这些都是与底部水平边相关的位移。

所以如果我找到一个底部的水平边,我就必须对所有的位移进行投票。

在运行时看起来如下所示:

所以这里有很少的边缘元素。

它投票给所有这些不同的位移R(如图),

它们都在这条线上。

所有这些不同的位移从何而来?

他们都在这里:这些是所有可能的底边线的位移,所以每个向量都必须由每个底元素投票。

这只是一个元素(如图),

当然,还有下一个元素。

它必须以同样的方式投票,它来自同一个 \theta 。

另一个,另一个,又一个,

最后这一长串投票可能被抵消。

现在,我没有在这里指出,中间的那个实际上更多的选票,也许你可以认为中间比末端厚。

但这条线是有表决结果权,因为它的中心可能就在那里。现在,我们还不知道它在中心的什么位置。

那么,现在我们可以做的是我们可以看看向下指向的对角线。

你会注意到,对于向下指向的对角线,它可以是任何地方,从正上方一直到右边。

所以它可以是在它上面或者一直到右边。

这意味着在运行时,每个小对角线元素必须直接在它上面投票,一直到右边。这就是第一部分所表示的:

这是另一个对角元素,

另一个对角元素,

还有另一个对角元素。

直到最后它们都堆积起来。

你们会注意到,我知道对象在哪里。这个中心就是这样被发现的。

因此,我们的想法是使用这些偏移量的表格,用梯度作为索引,以便为中心投票。


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

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值