基于传统计算机视觉特征的图片分类

1 理论知识

1.1 局部特征SIFT

特点:多量性;支持视角变换,仿射变换,对噪声处理效果好。
基本思想:

  • Step1:找关键点
    用DOG(高斯差分)代替LOG(高斯微分)
    ①用两个不同尺度的高斯核滤波得到的图片相减,可得到边缘。
    ②构建高斯金字塔:
    金字塔的每一层:用不同参数做高斯模糊,得到多组图片。
    层与层之间:下层降采样得到上层,每一层包含了不同尺度特征。下层包含细节特征,上层包含大的特征(全局特征)。

  • Step2:处理关键点
    寻找梯度变化最大的方向,获取极值点,以X为监测点,其周围点除了同层8个点,还有上一层与下一层的9个点都要满足极值条件。用位置插值法找精确的关键点,去除不稳定的边缘点。

  • Step3:找到主方向
    ①计算梯度直方图,以特征点为圆心,固定半径画圆,获取区域内梯度方向,做直方图统计。最高值为主方向,超过最高值80%为辅助方向。
    ②以特征点方向为基准,调整邻域点梯度方向:即将原图像X轴转到与主方向相同的方向。

  • Step4:计算特征点描述子
    在旋转后的坐标上采样16*16像素窗,每个格子统计梯度直方图,这样每个格子都有一个直方图,合在一起,就形成了该点基于主方向的八方向梯度向量描述。共16x8=128维。

1.2 Hog特征

Step1: 将整个图像进行gamma空间,颜色归一化。

Step2: 计算图像梯度
①分别计水平垂直梯度,计算幅值,方向。对于彩色图,选择梯度幅值最大的通道。
②block拆分:将图像拆分成不同的block,例如16x16block,步长为8,这样每个block与其他block有50%的重合,每个点参与了多个梯度运算。每个每个block包含2x2个cell,每个cell包含8x8像素点。这样的拆分最大程度上避免了光照明暗等问题。

Step3: 构建9方向梯度直方图
①基于以往经验,计算水平线上9个方向梯度,积累梯度幅值,使用位置高斯加权平滑,相邻bin使用线性插值方法,尽可能将梯度幅度分配精细,避免粗糙带来的误差。

Step4: 串接所有的block直方图,例如64x128像素图片。共有7x15block, 105x(2x2)x9=3780维向量。

Step5: 收集HOG特征
因为幅值和梯度大小容易受前景与背景对比度及光照的影响,要减少这种影响,需对局部细胞单元使用L1,L2范式做对比度归一化处理。把各个细胞单元组成大的,空间上联通的block。

这样,HOG描述子就变成了各区间所有细胞单元的直方图组成的一个向量,这些向量互有重叠,每一个细胞单元都多次作用于最终的描述子。

1.3 ORB特征

ORB是基于Fast角点与BRIEF特征描述技术,更快更准。

  • 1.对Fast角点改进实现尺度不变,生成特征点

Fast的基本思想是若某像素点与周围邻域内足够多的像素点明暗不同,可能为角点。Fast做法是对像素点周围16个像素点进行明暗比较,若右12个像素点都大于或小于该点像素值,则为角点。它的缺点是没有尺度和方向信息。
ORB通过构造高斯金字塔,在每一层金字塔上检测角点,实现尺度不变。

  • 2.对BRIEF改进实现旋转不变,生成描述子
    Brief的做法是先平滑图像,在特点点周围选择一个像素窗,在像素窗内随机找点对,把点对相连。比较连接后点对的大小,(p(x)>p(y)取1,p(x)<p(y)取0),生成二进制串,可以描述特征点周围的像素分布。
    ORB在计算brief描述子时建立坐标:以关键点为圆心,以像素值大小为质量计算形心,以关键点与形心连线方向为x轴建立坐标系,这样就确定了主方向,通过改进方法生成的描述子保持了旋转不变性。

1.4 LBP特征

基本思想:每个像素点与周围点比大小

  • Step1: -半径为R的圆上,均匀采样P个点,大小量化为0或1
  • Step2:-多个bit组成1个二进制数,转换为十进制数即LBP码,共256种。
  • Step3: -解决旋转不变性:将LBP周围二进制码按位旋转,取其最小值为最终LBP值.
    LBP是局部二值模式的采样,因此具有灰度不变性,最小值保证了其旋转不变性。

1.5 Haar-like特征

Haar特征分为三类:边缘特征、线性特征和对角特征,这些组合成特征模板。特征模板内有白两种矩形,特征值为白色矩阵像素减黑色矩阵像素和,不同形式的矩形针对检测不同的特征,不同的特征模板可用于检测不同的边界。因此Haar特征值反映了图像的灰度变化情况。
如果同一像素被包含在不同的模板中,会被重复计算多次,haar-like特征可以采用积分图的方法快速计算。其思想是:根据四个角点的像素差运算,计算区域内的像素和。根据模板内区域像素的变化可以检测到图像特征。

2.实验过程

实验选择的是caltech256数据集,从中挑选图片最多的前10类图片,为了平衡样本,每类图片集最终为200张,按4:1分为训练集和测试集。通过传统视觉特征检测获取特质值,通过聚类直方图获取类似词向量的视觉向量,通过svm进行分类,得到最终的实验结果。在python3.6环境下借助OpenCV库进行实验。

实验主要分以下几个步骤:

  1. 按灰度图像的方式读入图片,并给每一张图片定义label。
  2. 创建sift,orb特征描述器,获取描述符
  3. 使用Kmeans聚类算法对描述符进行聚类,得到聚类中心。
  4. 将图像中的每个特征点放入离其最近的聚类中心,生成一列频数表为特征向量,用svm分类器进行分类。
    在10-5000个簇进行聚类,选择最佳的结果作为实验结果。
    SIFT实验结果:
    在这里插入图片描述
    SIFT混淆矩阵如下:
    在这里插入图片描述
    横轴代表预测轴,纵轴代表真实值,对角线表示预测值与真实值相等的情况,颜色越浅,预测效果越好。观察上图,可以看到类别5的分类结果最差,8分类结果最好。分别对最好,最差的类别进行可视化,
    SIFT实验可视化
    类别5
    在这里插入图片描述
    类别8:
    在这里插入图片描述
    分析图像,对于类别8人脸,SIFT在任务的头发、眼睛、鼻子、嘴巴部分提取到了较多具有代表性的关键点。类别5吊床,SIFT提取了大量的关键点,理想状态下,这些特征点应该较多的分散在吊床周围以捕捉吊床的特征,但实验结果显示,这些关键点但分类散乱,不具有代表性。
    ORB实验分析:
    在0-1000个聚类中心点中进行实验,选择最佳结果作为分类结果,orb实验分类准确率仅为0.3175.
    在这里插入图片描述
    混淆矩阵如下:
    在这里插入图片描述
    对分类结果相差较大的类别进行可视化:
    类别5:
    在这里插入图片描述
    类别8:
    在这里插入图片描述
    在orb特征检测中,由于在人脸类别实验中,虽然有少量关键点匹配错误,但orb模型基本上较好的匹配了眼部特征。由于类别5帐篷图像本身类别特征不是很明显,匹配效果也不理想。

同时,实验发现,图像模糊程度影响了实验效果,将图像转化为200*100尺寸获取较为模糊的图像后分类效果更好。模板图像的选择也对效果产生了影响。总体来看,sift的分类结果要高于orb,

3.总结

该实验主要总结了计算机传统视觉特征的基本思想,并进行了实战。在实践过程中,对python和opencv库掌握不足,反复调试代码中花费了大量的时间,haarlike、HOG、LBP的实验代码还在调试中…

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值