著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:cvvision
链接:http://www.cvvision.cn/7780.html
来源:CV视觉网

识别算法概述:SIFT/SURF基于灰度图,一、首先建立图像金字塔,形成三维的图像空间,通过Hessian矩阵获取每一层的局部极大值,然后进行在极值点周围26个点进行NMS,从而得到粗略的特征点,再使用二次插值法得到精确特征点所在的层(尺度),即完成了尺度不变。二、在特征点选取一个与尺度相应的邻域,求出主方向,其中SIFT采用在一个正方形邻域内统计所有点的梯度方向,找到占80%以上的方向作为主方向;而SURF则选择圆形邻域,并且使用活动扇形的方法求出特征点主方向,以主方向对齐即完成旋转不变。三、以主方向为轴可以在每个特征点建立坐标,SIFT在特征点选择一块大小与尺度相应 的方形区域,分成16块,统计每一块沿着八个方向占的比例,于是特征点形成了128维特征向量,对图像进行归一化则完成强度不变;而SURF分成64块, 统计每一块的dx,dy,|dx|,|dy|的累积和,同样形成128维向量,再进行归一化则完成了对比度不变与强度不变。 Haar特征也是基于灰度图,首先通过大量的具有比较明显的haar特征(矩形)的物体图像用模式识别的方法训练出 分类器,分类器是个级联的,每级都以大概相同的识别率保留进入下一级的具有物体特征的候选物体,而每一级的子分类器则由许多haar特征构成(由积分图像 计算得到,并保存下位置),有水平的、竖直的、倾斜的,并且每个特征带一个阈值和两个分支值,每级子分类器带一个总的阈值。识别物体的时候,同样计算积分 图像为后面计算haar特征做准备,然后采用与训练的时候有物体的窗口同样大小的窗口遍历整幅图像,以后逐渐放大窗口,同样做遍历搜索物体;每当窗口移动 到一个位置,即计算该窗口内的haar特征,加权后与分类器中haar特征的阈值比较从而选择左或者右分支值,累加一个级的分支值与相应级的阈值比较,大 于该阈值才可以通过进入下一轮筛选。当通过分类器所以级的时候说明这个物体以大概率被识别。 广义hough变换同样基于灰度图,使用轮廓作为特征,融合了梯度信息,以投票的方式识别物体,在本blog的另一篇文章中有详细讨论,这里不再赘述。 特点异同对比及其适用场合:三种算法都只是基于强度(灰度)信息,都是特征方法,但SIFT/SURF的特征是一种具有强烈方向性及亮度性的特征,这使得它适用于刚性形变,稍有透视形变的场合;haar特征识别方法带有一点人工智能的 意味,对于像人脸这种有明显的、稳定结构的haar特征的物体最适用,只要结构相对固定即使发生扭曲等非线性形变依然可识别;广义hough变换完全是精 确的匹配,可得到物体的位置方向等参数信息。前两种方法基本都是通过先获取局部特征然后再逐个匹配,只是局部特征的计算方法不同,SIFT/SURF比较 复杂也相对稳定,haar方法比较简单,偏向一种统计的方法形成特征,这也使其具有一定的模糊弹性;广义hough变换则是一种全局的特征——轮廓梯度, 但也可以看做整个轮廓的每一个点的位置和梯度都是特征,每个点都对识别有贡献,用直观的投票,看票数多少去确定是否识别出物体。 SIFT/SURF算法的深入剖析——谈SIFT的精妙与不足SURF算法是SIFT算法的加速版,OpenCV的SURF算法在适中的条件下完成两幅图像中物体的匹配基本实现了实时处理,其快速的基础实际上只有一个——积分图像haar求导,对于它们其他方面的不同可以参考本blog的另外一篇关于SIFT的文章。不论科研还是应用上都希望可以和人类的视觉一样通过程序自动找出两幅图像里面相同的景物,并且建立它们之间的对应,前几年才被提出的SIFT(尺度不变特 征)算法提供了一种解决方法,通过这个算法可以使得满足一定条件下两幅图像中相同景物的某些点(后面提到的关键点)可以匹配起来,为什么不是每一点都匹配 呢?下面的论述将会提到。SIFT算法实现物体识别主要有三大工序,1、提取关键点;2、对关键点附加详细的信息(局部特征)也就是所谓的描述器;3、通过两方特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,也就建立了景物间的对应关系。日常的应用中,多数情况是给出一幅包含物体的参考图像,然后在另外一幅同样含有该物体的图像中实现它们的匹配。两幅图像中的物体一般只是旋转和缩放的关 系,加上图像的亮度及对比度的不同,这些就是最常见的情形。基于这些条件下要实现物体之间的匹配,SIFT算法的先驱及其发明者想到只要找到多于三对物体 间的匹配点就可以通过射影几何的理论建立它们的一一对应。首先在形状上物体既有旋转又有缩小放大的变化,如何找到这样的对应点呢?于是他们的想法是首先找 到图像中的一些“稳定点”,这些点是一些十分突出的点不会因光照条件的改变而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点,既然两幅图像中有相 同的景物,那么使用某种方法分别提取各自的稳定点,这些点之间会有相互对应的匹配点,正是基于这样合理的假设,SIFT算法的基础是稳定点。SIFT算法 找稳定点的方法是找灰度图的局部最值,由于数字图像是离散的,想求导和求最值这些操作都是使用滤波器,而滤波器是有尺寸大小的,使用同一尺寸的滤波器对两 幅包含有不同尺寸的同一物体的图像求局部最值将有可能出现一方求得最值而另一方却没有的情况,但是容易知道假如物体的尺寸都一致的话它们的局部最值将会相 同。SIFT的精妙之处在于采用图像金字塔的方法解决这一问题,我们可以把两幅图像想象成是连续的,分别以它们作为底面作四棱锥,就像金字塔,那么每一个 截面与原图像相似,那么两个金字塔中必然会有包含大小一致的物体的无穷个截面,但应用只能是离散的,所以我们只能构造有限层,层数越多当然越好,但处理时 间会相应增加,层数太少不行,因为向下采样的截面中可能找不到尺寸大小一致的两个物体的图像。有了图像金字塔就可以对每一层求出局部最值,但是这样的稳定 点数目将会十分可观,所以需要使用某种方法抑制去除一部分点,但又使得同一尺度下的稳定点得以保存。有了稳定点之后如何去让程序明白它们之间是物体的同一 位置?研究者想到以该点为中心挖出一小块区域,然后找出区域内的某些特征,让这些特征附件在稳定点上,SIFT的又一个精妙之处在于稳定点附加上特征向量 之后就像一个根系发达的树根一样牢牢的抓住它的“土地”,使之成为更稳固的特征点,但是问题又来了,遇到旋转的情况怎么办?发明者的解决方法是找一个“主 方向”然后以它看齐,就可以知道两个物体的旋转夹角了。下面就讨论一下SIFT算法的缺陷。SIFT/SURT采用henssian矩阵获取图像局部最值还是十分稳定的,但是在求主方向阶段太过于依赖局部区域像素的梯度方向,有可能使得找到的主 方向不准确,后面的特征向量提取以及匹配都严重依赖于主方向,即使不大偏差角度也可以造成后面特征匹配的放大误差,从而匹配不成功;另外图像金字塔的层取 得不足够紧密也会使得尺度有误差,后面的特征向量提取同样依赖相应的尺度,发明者在这个问题上的折中解决方法是取适量的层然后进行插值。SIFT是一种只 利用到灰度性质的算法,忽略了色彩信息,后面又出现了几种据说比SIFT更稳定的描述器其中一些利用到了色彩信息,让我们拭目以待。最后要提一下,我们知道同样的景物在不同的照片中可能出现不同的形状、大小、角度、亮度,甚至扭曲;计算机视觉的知识表明通过光学镜头获取的图像,对于平 面形状的两个物体它们之间可以建立射影对应,对于像人脸这种曲面物体在不同角度距离不同相机参数下获取的两幅图像,它们之间不是一个线性对应关系,就是说 我们即使获得两张图像中的脸上若干匹配好的点对,还是无法从中推导出其他点的对应。

物体识别算法——SIFT/SURF、haar特征、广义hough变换的对比分析相关推荐

  1. 三种强大的物体识别算法——SIFT/SURF、haar特征、广义hough变换的特性对比分析

    识别算法概述: SIFT/SURF基于灰度图, 一.首先建立图像金字塔,形成三维的图像空间,通过Hessian矩阵获取每一层的局部极大值,然后进行在极值点周围26个点进行NMS,从而得到粗略的特征点, ...

  2. 广义hough变换matlab,matlab – 广义Hough R表

    我试图在MATLAB中实现 this paper中提出的广义Hough变换.我也尝试使用 this document来理解算法.我不知道如何计算梯度角来找到Φ在R表中使用. 我试图运行这个matlab ...

  3. 自动人脸识别基本原理 --基于静态图像的识别算法(一)特征脸

    人脸识别经过近 40 年的发展,取得了很大的发展,涌现出了大量的识别算法.这些算法的涉及面非常广泛,包括模式识别.图像处理.计算机视觉.人工智能.统计学习.神经网络.小波分析.子空间理论和流形学习等众 ...

  4. sift分类java_使用SIFT / SURF进行特征匹配是否可以用于类似对象的分类?

    我已经在OpenCV中实现了SIFT算法,使用以下步骤进行特征检测和匹配: 使用Otsu的阈值处理去除背景 使用SIFT特征检测器进行特征检测 使用SIFT特征提取器进行描述符提取 使用BFMatch ...

  5. 基于ROS机器人的3D物体识别与三维重建(一) 介绍篇

    基于ROS机器人的3D物体识别与三维重建(一) 介绍篇 由来:清理电脑硬盘,发现了当时做毕设的一些资料,所以打算整理一下资料和代码写成专栏,记录下当时的暗金岁月,尽管现在实验室的做的项目已经不是这个方 ...

  6. 基于ROS机器人的3D物体识别与三维重建(三)基于ROS的3D物体识别

    Kinect2相机标定与点云数据获取 1.介绍 2 基于Gazebo搭建物体识别仿真环境 2.1 Gazebo简介 2.2 创建仿真环境 3 三维物体识别 3.1 基于模板匹配的物体识别流程 3.2 ...

  7. 空间金字塔匹配 matlab,基于核函数匹配的空间金字塔物体识别方法

    基于核函数匹配的空间金字塔物体识别方法 [技术领域]: [0001] 本发明涉及机器视觉领域,特别涉及一种基于核函数匹配的空间金字塔物体识别 方法. [背景技术]: [0002] 随着计算机和多媒体技 ...

  8. 基于matlab数字识别算法系统设计与实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 目 录 内容摘要------------------------------1 关键字----- ...

  9. Haar特征类有哪些最新发表的毕业论文呢?

    一.总体简介 Haar特征的相关文献在2006年到2020年内共计132篇,主要集中在自动化技术.计算机技术.无线电电子学.电信技术.公路运输 等领域,其中期刊论文100篇.会议论文4篇.专利文献28 ...

最新文章

  1. win7能用的matlab,win7环境下使用matlab7.0(R14)方法
  2. 大创idea2018-03-30
  3. 关于cocos creator换装功能的实践与思考
  4. [css] 说说你对sass的嵌套规则的理解?
  5. 股东痛斥联想管理层:都是帅哥 但业绩差
  6. 某单位配置GRE_×××命令
  7. 写了一个对象集合排序的类
  8. 深度学习2.0-26.Regularization减轻overfitting
  9. 7-1 宿舍谁最高? (20 分)
  10. mysql-connector-java 5.1.13,Java连MySQL,mysql-connector-java-5.1.13-bin.jar究竟要怎
  11. python调用phone库查询手机号码相关信息
  12. 使用 JMeter 进行API接口压力测试
  13. android色温值转成rgb
  14. c语言家谱管理系统不是二叉树,二叉树实现的简单家谱管理系统
  15. A12 屏幕旋转流程
  16. TI C2000系列DSP可配置逻辑块(CLB)设计说明
  17. 串口通信 数据采集软件 上位机 数据采集软件,可以采集plc,串口通信设备,tcp通信设备的数据
  18. e4a php上传,POST上传文件(E4A)
  19. 6翻了 (15 分)
  20. 对C51单片机的初步认识

热门文章

  1. Python 函数学习
  2. android studio 的中文网站
  3. BZOJ4152 AMPPZ2014 The Captain(最短路)
  4. 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?...
  5. PyTorch 笔记(13)— autograd(0.4 之前和之后版本差异)、Tensor(张量)、Gradient(梯度)
  6. datatable和dataset的区别
  7. Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
  8. 有关 ecshop 属性 {$goods.goods_attr|nl2br} 标签的赋值问题
  9. 达内——java变量
  10. C++数组名做函数形参/指针