计算机视觉相关的任务都需要先提取特征,然后基于所提取的特征做分类、分割、视觉问答等任务。现在主流的提取特征的方法,都是采用神经网络自动提取对任务起作用的特征,使用人工设计的特征已经成为过去时了。然而,笔者认为,对于每一个算法,找准它的细分领域,还是能够发光发热的,拿人工特征来说,比如当前任务为去除训练集中的相似图片,总不至于去收集一批新的数据,然后人工标注、训练模型等等步骤吧,所以,还是有必要了解一下传统的人工特征的。

一、SIFT(局部特征)

SIFT算法,全称为“Scale Invariant Feature Transform”,它可以用于检测图像中显著的、稳定的特征点,然后基于检测出的像素点所在的局部邻域,生成多维特征,该多维特征代表了对当前特征点的描述。

1、特征点检测

二维高斯函数定义如下,其中,σ表示标准差,

由信号处理相关知识可知,将图像函数与高斯函数卷积等同于将图像的频谱与高斯函数的傅里叶变换相乘,因为高斯函数的傅立叶变换仍然是高斯函数,因此这等同于对源图像进行了低通滤波,即平滑效果,而且,σ值越大,滤波后的图像越模糊,得到高斯差分金字塔。

在得到DOG图像后,对于每一个octave的一组图像,查找所有的极值点,以下图为例,该极值点像素值大于局部8领域点和上下两个Scale的像素点,也就是说,定义一个极值点时,需要将当前像素点同9*2+8=26个像素值做比较。

在对所有的octave都执行上面的操作后,会得到很多的特征点,值得一提的是,这里空间尺寸较小的octave的特征点,需要映射到原图像上的对应坐标。

2、特征点描述

(1)对于每一个特征点,选取其16×16的局部邻域;
(2)将16×16的局部邻域进行校准。具体操作为:绘制梯度分布直方图,选择出主方向,然后将该局部邻域做旋转使其同主方向对齐;


(3)将该局部邻域划分成4×4=16 个sub-blocks,对于每一个sub-block,绘制其方向直方图(横坐标为梯度方向索引,纵坐标为当前梯度方向的像素点个数),这里选取了8个梯度方向,所以每一个sub-block有8个特征值,当前特征点对应的总的特征值维度为8∗16=128,也即,该128维特征向量作为当前特征点的描述。

3、特征点匹配

对于两幅图像A和B,为了使用特征点匹配验证是否为相同图,需要经过如下步骤,

(1)分别得到图像A和B对应的特征点集合S1 和S2

(2)对于集合S1中的每一个特征点,分别找到S2中对应的最近邻特征点,可以用欧式距离作为度量标准,若小于阈值,则表明当前特征点匹配成功,否则匹配失败;

(3)若集合S1中匹配成功个数大于指定阈值,则表明图像A近似为图像B的一部分,判定为相同图片;

二、HOG(全局特征)

方向梯度直方图(Histogram of OrientedGradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。

1、主要思想

在一副图像中,局部目标的表象和形状(appearance and shape)能够被梯度或边缘的方向密度分布很好地描述。(本质:梯度的统计信息,而梯度主要存在于边缘的地方)。

2、具体的实现方法是

首先将图像分成小的连通区域,我们把它叫细胞单元。然后采集细胞单元中各像素点的梯度的或边缘的方向直方图。最后把这些直方图组合起来就可以构成特征描述器。

3、提高性能

把这些局部直方图在图像的更大的范围内(我们把它叫区间或block)进行对比度归一化(contrast-normalized),所采用的方法是:先计算各直方图在这个区间(block)中的密度,然后根据这个密度对区间中的各个细胞单元做归一化。通过这个归一化后,能对光照变化和阴影获得更好的效果。

4、优点

与其他的特征描述方法相比,HOG有很多优点。首先,由于HOG是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。其次,在粗的空域抽样、精细的方向抽样以及较强的局部光学归一化等条件下,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响检测效果。因此HOG特征是特别适合于做图像中的人体测的。

5、HOG特征提取步骤

(1)预处理。选定图像区域做resize,比如缩放成 64x128大小;

(2)按照如下步骤,计算每个像素点的梯度;

  • 分别计算当前像素点水平和垂直方向的梯度,滤波器算子分别如下,

  • 分别使用如下公式,计算当前像素点的梯度的幅值和方向,

(3)将图像划分成不重叠的小的cells,比如每个cell包含了8x8的像素块,也即cell的步长为8;

(4)对于每一个cell,因为每一个像素的梯度包含两个值(magnitude和direction),所以总计8x8x2=128个特征值,使用这128个特征值绘制梯度方向直方图,具体步骤如下,

  • 选定9个角度值,0、20、40、60、、、160;
  • 将每个(g,θ) 对划分到上面的9个角度值上,比如(10, 2),可以把0度和20度的直方图值分别增加2;

(5)经过步骤(4)后,当前cell的特征描述子为一个9维向量;

(6)选定2x2的cells作为一个block,所以该block包含了4个cells,相邻的block有重叠,也即步长为8,将每个cell的特征描述子进行拼接,从而得到一个9x4=36维向量,然后对该36维向量做标准化操作;

(7)图像中总的blocks个数为7x15=105,因此concate之后总的特征向量维度为36*105=3780;

(8)将该3780维的特征向量作为分类器的输入。

三、LBP特征

1、介绍

LBP(Local Binary Pattern),局部二值模式是一种描述图像局部纹理的特征算子,该算子是由T.Ojala等人于1994年首次提出的,后经过发展改进可应用于图像特征分析,该算子具有旋转不变性与灰度不变性(不怕光照变化)等显著优点。

LBP特征描述的是一种灰度范围内的图像处理操作技术。LBP特征是高效的图像特征分析方法,经过改进与发展已经应用于多个领域之中,特别是人脸识别、表情识别、行人检测领域已经取得了成功。

LBP牲征将窗口中心点与邻域点的关系进行比较,重新编码形成新特征以消除对外界场景对图像的影响,因此一定程度上解决了复杂场景下(光照变换)特征描述问题。

LBP算法根据窗口领域的不同分为经曲LBP和圆形LBP两种。

2、经曲LBP

原始的LBP算子定义为在3∗3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于等于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3∗3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该窗口中心像素点的LBP值,并用这个值来反映该区域的纹理信息。需要注意的是,LBP值是按照顺时针方向组成的二进制数。

3、圆形LBP

基本的 LBP算子的最大缺陷在于它只覆盖了一个固定半径范围内的小区域,这显然不能满足不同尺寸和频率纹理的需要。为了适应不同尺度的纹理特征,并达到灰度和旋转不变性的要求,Ojala等对 LBP 算子进行了改进,将 3×3邻域扩展到任意邻域,并用圆形邻域代替了正方形邻域,改进后的 LBP 算子允许在半径为 R 的圆形邻域内有任意多个像素点。从而得到了诸如半径为R的圆形区域内含有P个采样点的LBP算子,称为Extended LBP,也叫Circular LBP。

上图内有八个黑色的采样点,每个采样点的值可以通过下式计算:

其中(xc,yc)为邻域中心点,(xp,yp)为某个采样点。通过上式可以计算任意个采样点的坐标,但是计算得到的坐标未必完全是整数,所以可以通过双线性插值来得到该采样点的像素值:

几种不同半径不同采样点的LBP算子:

4、LBP算子的优缺点

优点:

  • 一定程度上消除了光照变化的问题

  • 具有旋转不变性

  • 纹理特征维度低,计算速度快

缺点:

  • 当光照变化不均匀时,各像素间的大小关系被破坏,对应的LBP算子也就发生了变化。

  • 通过引入旋转不变的定义,使LBP算子更具鲁棒性。但这也使得LBP算子丢失了方向信息。

四、三者区别

参考文章:

https://blog.csdn.net/diligent_321/article/details/84967192

https://blog.csdn.net/diligent_321/article/details/84967192

https://blog.csdn.net/lk3030/article/details/84034963

图像特征之SIFT、HOG、LBP相关推荐

  1. 图像特征检测描述:SIFT、SURF、ORB、HOG、LBP特征的原理概述

    版权声明:本文为博主原创文章,转载请标明原始博文地址: https://blog.csdn.net/yuanlulu/article/details/82148429 </div>< ...

  2. Tips--图像特征提取方法HOG、SIFT、LBP优缺点对比

    图像特征提取方法HOG.SIFT.LBP优缺点对比 目前主流的图像特征提取方法无外乎三种:HOG.SIFT.LBP,现在讲三者的优缺点和应用领域做一个对比: 提取方法 优点 缺点 主要应用领域 HOG ...

  3. 视觉中的经典图像特征小结(一): 颜色直方图, HOG, LBP

    [普兒原创, 如有错误和纰漏欢迎指正. 更新中...] 1. 颜色直方图 颜色空间在本质上是定义在某种坐标系统下的子空间,空间中的每一个坐标表示一种不同的颜色.颜色空间的目的在于给出某种颜色标准,使得 ...

  4. matlab vlfeat hog,vlfeat-0.9.20-bin 特征提取的工具包,实现各种 ,如hog,lbp,sift. matlab 242万源代码下载- www.pudn.com...

    文件名称: vlfeat-0.9.20-bin下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 17828 KB 上传时间: 2015-07-21 下载次数: ...

  5. 使用HOG+LBP实现动物分类:matlab版本

    1.训练集测试集划分(同上一篇) 2.代码部分 %% 利用HOG + LBP分类%% 1 数据集,包括训练的和测试的 currentPath = pwd; % 获得当前的工作目录imdsTrain = ...

  6. 图像的全局特征--HOG特征、DPM特征

    HOG特征:方向梯度直方图(Histogram of Oriented Gradient,)特征是一种全局图像特征描述子. 它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM ...

  7. HOG+LBP+Haar

    原文  http://dataunion.org/20584.html (一)HOG特征 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征 ...

  8. 图像特征点—SIFT特征点

    图像特征点-SIFT特征点 关于SIFT特征点,以下三篇博客说的非常详细,再次不再赘述. https://mp.weixin.qq.com/s/XVB88f119gRqpwTTRvTyrA https ...

  9. CV之FD之HOG:图像检测之基于HOG算法、简介、代码实现(计算图像相似度)之详细攻略

    CV之FD之HOG:图像检测之基于HOG算法.简介.代码实现(计算图像相似度)之详细攻略 图像检测之基于HOG算法.简介.代码实现(计算图像相似度)之详细攻略 相关文章:CV之FD之HOG:图像检测之 ...

  10. lbp特征提取算法 知乎_Hog,SIFT以及LBP这三种特征有什么不同?

    SIFT.HOG.LBP,这三者都属于局部特征. 一.三者原理上的区别 1.SIFT:Scale-Invariant Feature Taransform,尺度不变特征变换.尺度空间的极值检测:搜索所 ...

最新文章

  1. Codeforces 987C. Three displays(o(n^2))
  2. ABAP package not extensible的原因
  3. 二维ising模型概率c语言_盘点近几年在二维材料中发现的铁磁性
  4. TypeScript - 字符串字面量类型
  5. 没有电脑基础能学计算机专业吗,没有绘画基础想学电脑绘画该怎么学?
  6. centos linux远程桌面连接工具,VNC Viewer轻松连接远程CentOS6.8桌面
  7. R语言常用的绘图参数
  8. GitHub下载指定文件或文件夹
  9. 怎么用软件测试相似相似度,文档相似性检测工具
  10. 优启通安装linux系统,利用U盘启动盘优启通(pe)安装centos到旧笔记本上
  11. 如何刷新bios?在windows系统上刷新bios的方法
  12. Android11编译导入PRODUCT_BOOT_JARS
  13. html涟漪动画效果,CSS+JS实现水滴涟漪动画按钮效果的示例代码
  14. 拼多多店铺流量解析:这些流量入口你必须了解!
  15. Excel——如何在多种分类下填充空白单元格
  16. (与运算)、|(或运算)、^(异或运算)等运算符的解释与运用
  17. 茜色的坂道SP线是啥鸟语?3级E文果然功力不够
  18. 应变片悬臂梁 电桥电路计算
  19. 手机克隆常见问题 安卓版手机便签怎么导出
  20. 【C】C语言中的设计模式

热门文章

  1. 台式计算机用手机流量上网,台式机如何使用手机流量上网
  2. iptables man手册翻译
  3. 花几分钟轻松搞定快速排序算法
  4. office 论文 页码_officexx论文页码【officexx设置论文页码】
  5. 求两个数的最小公倍数及多个数的最小公倍数的求法
  6. Centos7 raid0
  7. 联想服务器ThinkServer TS80x板载RAID设置教程
  8. python中的文字怎么居中_各位大神,wxPython中,怎么让text文本居中显示?
  9. DirectX11参考资料之美
  10. 在Windows 10下配置 DirectX11 + Visual Studio 2017开发环境