识别算法概述:

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变换则是一种全局的特征——轮廓梯度,但也可以看做整个轮廓的每一个点的位置和梯度都是特征,每个点都对识别有贡献,用直观的投票,看票数多少去确定是否识别出物体。

http://blog.csdn.net/cy513/article/details/4285579

http://blog.csdn.net/cy513/article/details/4414352  SIFT/SURF算法的深入剖析——谈SIFT的精妙与不足

http://blog.csdn.net/kofsky/article/details/1845757 harr 点角特征分类

最新文章

  1. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
  2. mvc 4 ActionFilterAttribute 特性,进行权限验证
  3. 第八篇 SQL Server代理使用外部程序
  4. Linux crontab 定时任务
  5. 举例说明划分子网,路由器IP地址
  6. JavaWeb项目开发案例精粹-第2章投票系统-001设计
  7. android开发中如何结束所有的activity
  8. 打开网页自动弹出QQ临时会话 (打开网站弹出QQ聊天) qq.js文件代
  9. Windows下搭建deepnet环境
  10. SSM框架中的注解,配置和控制器相关笔记
  11. Django之BBS博客项目
  12. SpringBoot系列——花里胡哨的banner.txt
  13. 解决AndroidStudio导入项目卡在gradle加载界面
  14. mysql分区方案的研究
  15. 【已解决】ERR_BLOCKED_BY_XSS_AUDITOR:Chrome 在此网页上检测到了异常代码:解决办法
  16. 使用Redis 计数器防止刷接口
  17. [Python] 函数基本
  18. Java 经典 书籍
  19. new[] 到底做了什么?
  20. 《Head First 设计模式》学习笔记——策略模型

热门文章

  1. eval()函数的巧用
  2. Road(bzoj 2750)
  3. POJ 2228 naptime
  4. maven打包加入依赖包以及加入本地依赖包的方法
  5. 【POJ3352】Road Construction(边双联通分量)
  6. CentOS找不到想要的镜像版本?
  7. Java原来如此-反射机制
  8. es6 --数组--Array.from() 、Array.isArray()、Array.of()、find()、findIndex()、fill()、entries() 、keys() ,values()
  9. SPOJ 7001 VLATTICE【莫比乌斯反演】
  10. 洛谷—— P2183 巧克力