目标分类:给一张图片,分类
目标检测:给一张图片,找到目标,并用矩形框画出
分类是对一幅图整体,检测是更进一步,找出一幅图中一部分。一般检测以分类为基础,
目标检测就是找出图像中所感兴趣的物体,包括物体定位和物体分类两个子任务,即不仅需要对物体进行分类,还要检测出物体的位置。 通常分为单目标检测和多目标检测,
1)区域选择(穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高)
2)特征提取(SIFT、HOG等;形态多样性、光照变化多样性、背景多样性使得特征鲁棒性差)
3)分类器分类(主要有SVM、Adaboost等)
上面的检测通常分三步走:
但是,我们知道,图片中的物体有大有小,尺度不同,所以用一个固定的窗口进行滑动,当物体较小的时候,会出现该窗口可能会框住很多的背景;而当物体较大的时候,会出现框住物体的局部,进而对该框的物体进行提取特征,进行分类的时候可能会产生误分类,或者出现多个正确识别的结果。
所以,在设计窗口大小的时候,得设计各种尺寸的窗口,这样就会产生大量的计算,导致运行速度慢。
总的来说,传统的目标检测算法有以下三个缺点:
候选框:一般用滑动窗口的方法提取
特征提取(模式识别):
低层次的,手工设计的特征,纹理、颜色、形状等(sift surf haar LBP HOG)
中层次的,机器学习出的特征,如pca特征,lda
分类器:提前训练好的分类器(基于上述特征的),这里是二分类,即目标和背景,也有多分类问题
SIFT算法的特点有:
主要是尺度不变性。
1. SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;
2. 独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;
3. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;
4. 高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;
5. 可扩展性,可以很方便的与其他形式的特征向量进行联合。
SIFT算法具有如下一些特点: [4]
1.SIFT特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角变化、仿射变换、噪声也保持一定程度的稳定性;
2. 区分性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快速、准确的匹配;
3. 多量性,即使少数的几个物体也可以产生大量的SIFT特征向量;
4.高速性,经优化的SIFT匹配算法甚至可以达到实时的要求;
5.可扩展性,可以很方便的与其他形式的特征向量进行联合。
SIFT特征检测主要包括以下4个基本步骤: [1] [4]
尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
2. 关键点定位
在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
3. 方向确定
基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
4. 关键点描述
在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。
SIFT特征匹配主要包括2个阶段: [1]
第一阶段:SIFT特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量。
第二阶段:SIFT特征向量的匹配。
SIFT特征的生成一般包括以下几个步骤:
1. 构建尺度空间,检测极值点,获得尺度不变性。
2. 特征点过滤并进行精确定位。
3. 为特征点分配方向值。
4. 生成特征描述子。
以特征点为中心取16×16的邻域作为采样窗口,将采样点与特征点的相对方向通过高斯加权后归入包含8个bin的方向直方图,最后获得4×4×8的128维特征描述子。示意图如下:
当两幅图像的SIFT特征向量生成以后,下一步就可以采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量。取图1的某个关键点,通过遍历找到图像2中的距离最近的两个关键点。在这两个关键点中,如果最近距离除以次近距离小于某个阈值,则判定为一对匹配点。
假设图一的点为a, 图二中的两个点为b,c。如何a和b的距离除以a和c的距离小于某个阈值,则判断为一对匹配点。
如果图二中只选择一个点,可能匹配错误,因为图二中可能某个点的的距离与a也很近。
SIFT特征匹配的例子:
更多sift资料:
https://mp.weixin.qq.com/s/sM78DCOK3fuG2JrP2QaSZA