目录

广义霍夫变换算法

在识别中的应用

训练

Visual code-words 在识别中的应用

结束语


广义霍夫变换算法

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

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

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

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

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

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

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

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

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

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

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

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

所以这里的主方向是这个,实际的梯度是  。

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

现在,我们得到了  的位移向量。

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

还记得空间复杂度吗,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年代说过的那样。

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

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

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

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

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


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

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

  1. 工业视觉_57:霍夫(Hough)直线识别,交点与夹角

    /* 工业视觉_57:霍夫(Hough)直线识别,交点与夹角* 工业视觉,目标很明确:快,准,稳. 快:开发快,运行速度快;准:高精度;稳:稳健* 所以,目前"机器换人"项目大多采 ...

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

    目录 基本的霍夫变换算法 霍夫变换的复杂性 霍夫例子 基本的霍夫变换算法 说到算法,我们来看一下: 我们将使用直线的极坐标参数化,极坐标表示. 还有一种叫Hough累加器(数组)的东西,它只是用来表示 ...

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

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

  4. 霍夫变换(Hough Transform):霍夫变化在图像处理以及点云处理中的直线检测应用

    霍夫变换(Hough Transfrom)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍 ...

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

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

  6. matlab利用霍夫,基于matlab的霍夫变换

    霍夫变换(限量版) 基于matlab的霍夫变换 一.简单介绍 Hough变换是图像处理中从图像中识别几何形状的基本方法之一. Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线 ...

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

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

  8. OpenCV3之——霍夫变换(霍夫线变换和霍夫圆变换)

    霍夫变换 本文章参考@浅墨_毛星云的博客.转载请注明出处. 参考链接: http://blog.csdn.net/poem_qianmo/article/details/26977557 写作当前博文 ...

  9. 缺点 霍夫圆_霍夫变换(Hough Transform)

    定义:被广泛应用在图像分析.计算机视觉领域的一种特征检测算法 Hough变换是从图像处理中识别几何形状的基本方法之一.Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线 ...

最新文章

  1. 从入职快手3年股票3000w说起
  2. Delphi 原生ADO(二)
  3. double类型问题
  4. 关于MFC遇到的一系列类型转换问题
  5. centos 单用户登陆模式操作
  6. 用Visual C#调用Windows API函数
  7. 创建hadoop账号
  8. 天正的计算机快捷命令大全,天正建筑命令快捷键大全
  9. 【Unity3D进阶4-8】Unity3D 游戏框架
  10. Linux中top命令参数详解
  11. mysql抢红包功能_Laravel框架实现抢红包功能示例
  12. 个人防骗大全精选(1)
  13. Dilated Convolution介绍
  14. Springboot上传视频到阿里云(视频点播)和aliyun-java-sdk-vod依赖报红问题
  15. web前端培训课程有哪些?
  16. 线性代数(一)-行列式
  17. web前端期末大作业:JavaScript大作业——福五鼠动漫网页制作(6页)带轮播图效果 学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作
  18. XILINX FPGA和CPLD引脚约束步骤
  19. 各大互联网公司PUA套路,同行必须懂!!!
  20. 基于javaweb的牙科医院诊所管理系统

热门文章

  1. Robin负载均衡策略存在问题及CSE解决方案
  2. 产品ajax无刷新kesion,KesionCMSV6置标使用手册.doc
  3. HDFView 3.1.2 在WIN10系统安装后打开出现黑框闪退的解决方法
  4. Windows下编写的脚本文件无法在Linux上运行的问题
  5. 优达学城深度学习之六——TensorFlow卷积神经网络
  6. python二进制整数的定义_TensorFlow定义操作整数的二进制表示
  7. 例子---JS无缝轮播图
  8. 运维组如何管理服务器资源,运维服务管理体系方案全套.doc
  9. micropython stm32f429_[MicroPython]STM32F407开发板驱动OLED液晶屏
  10. python fabric上传文件夹_通过python的fabric包完成代码上传部署(简单版)