来源:机器学习AI算法工程 本文约6200字,建议阅读10+分钟 本文为你介绍不同的机器视觉特征提取方法及其区别。 目录一、SIFT(尺度不变特征变换) 先对几个概念和问题做一个解释:
1. 识别物体,最关键的因素是梯度(SIFT/HOG),梯度意味着边缘,这是最本质的部分,而计算梯度,自然就用到灰度图像了,可以把灰度理解为图像的强度。 2. 颜色,易受光照影响,难以提供关键信息,故将图像进行灰度化,同时也可以加快特征提取的速度。
平面上任意两条线,经过仿射变换后,仍保持原来的状态(比如平行的线还是平行,相交的线夹角不变等)。
局部特征从总体上说是图像或在视觉领域中一些有别于其周围的地方;局部特征通常是描述一块区域,使其能具有高可区分度;局部特征的好坏直接会决定着后面分类、识别是否会得到一个好的结果。 一、SIFT(尺度不变特征变换)1.1 SIFT特征提取的实质 在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出、不会因光照、仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。 1.2 SIFT特征提取的方法 a. 构建DOG尺度空间: 1.3 SIFT特征提取的优点 a. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对b. 视角变化、仿射变换、噪声也保持一定程度的稳定性; c. 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配; d. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量; e. 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求; f. 可扩展性,可以很方便的与其他形式的特征向量进行联合; g. 需要较少的经验主义知识,易于开发。 1.4 SIFT特征提取的缺点 a. 实时性不高,因为要不断地要进行下采样和插值等操作; b. 有时特征点较少(比如模糊图像); c. 对边缘光滑的目标无法准确提取特征(比如边缘平滑的图像,检测出的特征点过少,对圆更是无能为力)。 1.5 SIFT特征提取可以解决的问题 目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标识别跟踪的性能。而SIFT算法在一定程度上可解决: a. 目标的旋转、缩放、平移(RST) b. 图像仿射/投影变换(视点viewpoint) c. 光照影响(illumination) d. 目标遮挡(occlusion) e. 杂物场景(clutter) f. 噪声 近来不断有人改进,其中最著名的有 SURF(计算量小,运算速度快,提取的特征点几乎与SIFT相同)和 CSIFT(彩色尺度特征不变变换,顾名思义,可以解决基于彩色图像的SIFT问题)。二、HOG(方向梯度直方图)2.1 HOG特征提取的实质 通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。 2.2 HOG特征提取的方法 a. 灰度化; b. 采用Gamma校正法对输入图像进行颜色空间的标准化(归一化),目的是调节图像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干扰; c. 计算图像每个像素的梯度(包括大小和方向),主要是为了捕获轮廓信息,同时进一步弱化光照的干扰; d. 将图像划分成小cells(例如6*6像素/cell); e. 统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor; f. 将每几个cell组成一个block(例如3*3个cell/block),一个block内所有cell的特征descriptor串联起来便得到该block的HOG特征descriptor。 g. 将图像image内的所有block的HOG特征descriptor串联起来就可以得到该image(你要检测的目标)的HOG特征descriptor了。这个就是最终的可供分类使用的特征向量了。 如果对上述纯文字理解困难,可以参考文章: 2.3 HOG特征提取特点 a. 由于HOG是在图像的局部方格单元上操作,所以它对图像几何的和光学的形变都能保持很好的不变性,这两种形变只会出现在更大的空间领域上。 b. 在粗的空域抽样、精细的方向抽样以及较强的局部光学归一化等条件下,只要行人大体上能够保持直立的姿势,可以容许行人有一些细微的肢体动作,这些细微的动作可以被忽略而不影响检测效果。因此HOG特征是特别适合于做图像中的人体检测的。 三、SIFT和HOG的比较共同点:都是基于图像中梯度方向直方图的特征提取方法
笔者曾做过一个自然场景分类的实验,发现SIFT的准确率比HOG高,而如果检测像人这种刚性的object,HOG的表现要比SIFT好。四、SIFT/HOG与神经网络特征提取的比较众所周知,随着深度学习的发展,通过神经网络提取特征得到了广泛的应用,那么,神经网络提取的特征与传统的SIFT/HOG等特征提取方法有什么不同呢? 4.1 神经网络提取到的特征 我们知道,对于一副图像,像素级的特征没有任何价值,而如果特征是一个具有结构性(或者说有含义)的时候,比如摩托车是否具有车把手,是否具有车轮,就很容易把摩托车和非摩托车区分,学习算法才能发挥作用。 这就是神经网络每层提取到的特征。由于是通过神经网络自动学习到了,因此也是无监督的特征学习过程(Unsupervised Feature Learning) 。直观上说,就是找到make sense的小patch再将其进行combine,就得到了上一层的feature,递归地向上learning feature。在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就会completely different了。 4.2 传统特征提取方法与神经网络特征提取的比较 观点1:传统特征提取方法的研究过程和思路是非常有用的,因为这些方法具有较强的可解释性,它们对设计机器学习方法解决此类问题提供启发和类比。有部分人认为(也有部分人反对)现有的卷积神经网络与这些特征提取方法有一定类似性,因为每个滤波权重实际上是一个线性的识别模式,与这些特征提取过程的边界与梯度检测类似。同时,池化(Pooling)的作用是统筹一个区域的信息,这与这些特征提取后进行的特征整合(如直方图等)类似。通过实验发现卷积网络开始几层实际上确实是在做边缘和梯度检测。不过事实上卷积网络发明的时候,还没有这些特征提取方法。 那么提出两个问题:(1)现在流行的特征学习方法siamese或triplet等结构是否缺失了什么?(2)虽然CNN可以挖掘patch里面包含的信息并建立对于复杂几何和光照变化的不变性,但是这种学习到的不变性是否过度依赖于数据而无法有效泛化到真实匹配场景中所遇到的影像之间的复杂变化呢? 可以参考以下知乎话题,查看更多观点: 五、其他传统特征提取的方法(SURF、ORB、LBP、HAAR)SURF、ORB、LBP可以参考文章: https://link.jianshu.com/?t=http://lib.csdn.net/article/opencv/41913 5.1 SURF 前面提到SITF的缺点是如果不借助硬件加速或专门的图像处理器很难达到实现,所以人们就要想办法对SITF算子进行改进,SURF算子便是对SIFT的改进,不过改进之后在算法的运行时间上还是没有质的飞跃。后面要介绍的ORB特征描述算子在运行时间上才是一种质的飞跃。 5.2 ORB ORB特征描述算法的运行时间远优于SIFT与SURF,可用于实时性特征检测。ORB特征基于FAST角点的特征点检测与描述技术,具有尺度与旋转不变性,同时对噪声及透视仿射也具有不变性,良好的性能使得用ORB在进行特征描述时的应用场景十分广泛。
5.3 LBP LBP(Local Binary Pattern),局部二值模式是一种描述图像局部纹理的特征算子,具有旋转不变性与灰度不变性等显著优点。LBP特征描述的是一种灰度范围内的图像处理操作技术,针对的是输入源为8位或16位的灰度图像。LBP特征是高效的图像特征分析方法,经过改进与发展已经应用于多个领域之中,特别是人脸识别、表情识别、行人检测领域已经取得了成功。LBP特征将窗口中心点与邻域点的关系进行比较,重新编码形成新特征以消除对外界场景对图像的影响,因此一定程度上解决了复杂场景下(光照变换)特征描述问题。 5.4 HAAR 人脸检测最为经典的算法Haar-like特征+Adaboost。这是最为常用的物体检测的方法(最初用于人脸检测),也是用的最多的方法。 具体细节可以参考文章: https://link.jianshu.com/?t=http://blog.csdn.net/xizero00/article/details/46929261 再附一个Haar和HOG比较的问题: https://link.jianshu.com/?t=http://blog.csdn.net/DuinoDu/article/details/51981327 1. SIFT / HOG 不同点:SIFT提取的关键点是角点,HOG提取的是边缘特征。 2. 传统特征提取 / CNN特征提取不同点:传统特征提取方法的检测算子一般是人为设计好的,是经过大量的先验知识总结得到的;CNN特征提取相当于在训练一个个filter(过滤器、卷积核),这些filter相当于传统特征提取方法中的检测算子。因此,CNN特征提取是利用神经网络的自主学习得到的。 |
|
来自: taotao_2016 > 《图像处理》