一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第27天, 点击查看活动详情 。
想着组合两种针对灰度图像提取特征再使用SVM进行分类,这里选用了LBP结合GLCM组合成特征向量,对特征向量进行SVM分类,输出混淆矩阵。
处理的数据集是 kth_tips_col_200x200 这个数据集
数据集介绍
kth_tips_col_200x200数据集总共类别是10类,内容为常见物体的表面图。
LBP和GLCM
在MATLAB中依靠 extractLBPFeatures 函数可以提取图像LBP特征,不过需要注意的事,这个函数是需要对灰度图进行提取特征,如果读取的图是三通道图像的话,需要转为单通道图像;同理在MATLAB中可以依靠 graycomatrix 对图像可以提取GLCM特征。
在处理 kth_tips_col_200x200 数据集的时候需要注意的是该数据集的图像像素大小已被固定为 200x200 但是该数据集为三通道的图像,所以在进行特征提取的时候需要将图像转化为单通道图像。
在对提取到特征矩阵(LBP+glcm)进行svm分类标签为提取到图像特征的类别名称。在MATLAB里 使用 fitcecoc 可以进行多分类的SVM分类;这里需要注意的是fitcecoc的使用方法,大家注意特征向量和标签相对应即可。
结果展示:
这里的单类的数量是65,通过混淆矩阵可以看出结果相对可以。
大家在提取特征的时候由于LBP和GLCM的矩阵维度不一致,大家需要转换一下矩阵维度,在组合总的特征向量的时候需要把两种特征横向地拼接起来,两个向量行数一致,列数可以不一样。