三种强大的物体识别算法

转载 2015年08月13日 22:52:48

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

opencv形状识别学习总结

OpenCV基元检测 Primitive Detection 目录 基元的概念 基元泛指图像中有特点的单元。常说的基元有:边缘、角点、斑点、直线段、圆、等 基元检测是图像分析的基础 边缘(Ed...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年03月16日 13:20
  • 19943

OpenCV轮廓检测,计算物体旋转角度

效果还是有点问题的,希望大家共同探讨一下     // FindRotation-angle.cpp : 定义控制台应用程序的入口点。 // // findContours.cpp...
  • wangyaninglm
  • wangyaninglm
  • 2015年02月27日 00:54
  • 24957

OpenCV颜色识别

彩色模型 数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型。而HSV模型更符合人描述...
  • Liuqz2009
  • Liuqz2009
  • 2015年08月13日 22:45
  • 35551

OpenCV颜色识别

彩色模型数字图像处理中常用的采用模型是RGB(红,绿,蓝)模型和HSV(色调,饱和度,亮度),RGB广泛应用于彩色监视器和彩色视频摄像机,我们平时的图片一般都是RGB模型。而HSV模型更符合人描述和解...
  • qq_29796317
  • qq_29796317
  • 2017年06月29日 20:36
  • 631

基于opencv的物体定位

opencv是一个很强大的机器视觉库,利用它我们可以开发出丰富多彩的使用项目。近日,我在研究一个图中物体定位系统。本程序用的是OpenCV2.4.9,附带OpenCV3.0。 程序中的原图为我随手拍的...
  • MyLinChi
  • MyLinChi
  • 2016年08月17日 20:44
  • 6199

基于opencv3实现运动物体识别

一:背景减法          对于一个稳定的监控场景而言,在没有运动目标,光照没有变化的情况下,视频图像中各个像素点的灰度值是符合随机概率分布的。由于摄像机在采集图像的过程中,会不可避免地引入噪...
  • OliverkingLi
  • OliverkingLi
  • 2017年09月22日 22:26
  • 1569

OpenCV+OCR文字识别

需配置好OpenCV和OCR环境下运行 1、opencv简介 OpenCV的全称是Open Source Computer Vision Library,是...
  • u010983763
  • u010983763
  • 2017年06月29日 16:01
  • 1283

opencv图像识别

利用OpenCV检测图像中的长方形画布或纸张并提取图像内容   问题如下: 也就是在一张照片里,已知有个长方形的物体,但是经过了透视投影,已经不再是规则的长方形,那么如何...
  • bcbobo21cn
  • bcbobo21cn
  • 2016年02月28日 15:39
  • 3249

Opencv实现物体识别和追踪

  • 2015年05月25日 00:30
  • 2.25MB
  • 下载

【OpenCV_contri】找出任意物体可能在的位置(Selective search,物体检测)

Selective search用法
  • zmdsjtu
  • zmdsjtu
  • 2017年10月15日 18:32
  • 464
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:三种强大的物体识别算法
举报原因:
原因补充:

(最多只允许输入30个字)