SVM + HOG实现图像分类

数据集组成

  • test_image 测试数据
    在这里插入图片描述
  • train_image 训练数据
    包含 5 个类别,分别为飞机、蝴蝶、相机、剪刀和太阳花
    在这里插入图片描述
    在这里插入图片描述

SVM 和 HOG 特征实现图像分类

%% 目标:用 HOG 特征对图像进行多分类,svm训练
%% 构建数据集(训练和测试)
imdsTrain = imageDatastore('H:\DataSet\ausr\svm_images\train_images',...  
    'IncludeSubfolders',true,...  
    'LabelSource','foldernames');  
imdsTest = imageDatastore('H:\DataSet\ausr\svm_images\test_image');  

%% 显示训练集图片的标签 Labels 和数量 Count
Train_disp = countEachLabel(imdsTrain);
disp(Train_disp);
  
%% 对训练集中的每张图像进行 HOG 特征提取,测试图像一样  
%% 预处理图像,主要是得到 features 特征大小,此大小与图像大小和 Hog 特征参数相关
imageSize = [256,256];  % 对图像进行此尺寸的缩放
image1 = readimage(imdsTrain,1); % 先拿一张图片看看HOG特征
scaleImage = imresize(image1,imageSize);  % 缩放该图片
%% 显示提取了 HOG 特征的该图片
[features, visualization] = extractHOGFeatures(scaleImage);  
imshow(scaleImage);
hold on; 
plot(visualization)  
  
% 对所有训练图像进行特征提取  
numImages = length(imdsTrain.Files);  % 得到训练集文件的图片个数
% 创建存储各图像特征的矩阵,featuresTrain为单精度  
featuresTrain = zeros(numImages,size(features,2),'single'); 
% 对训练集中的每个图像进行处理
for i = 1:numImages 
	% 读取图片
    imageTrain = readimage(imdsTrain,i);  
    % 对图片进行缩放
    imageTrain = imresize(imageTrain,imageSize);  
    % 提取HOG特征,存储在矩阵的每一行
    featuresTrain(i,:) = extractHOGFeatures(imageTrain);  
end  
  
%% 取出所有训练图像的标签
trainLabels = imdsTrain.Labels;  
  
%% 开始 SVM 多分类训练,fitcsvm用于二分类,fitcecoc用于多分类
classifer = fitcecoc(featuresTrain,trainLabels);  
  
%% 对测试数据进行分类并显示分类结果图  
numTest = length(imdsTest.Files); % 获取测试集图片数量
%% 对每张测试图片进行预测
for i = 1:numTest  
	% 读取测试图片
    testImage = readimage(imdsTest,i);  
    % 缩放测试图片大小
    scaleTestImage = imresize(testImage,imageSize);  
    % 提取特征
    featureTest = extractHOGFeatures(scaleTestImage); 
    % 预测 
    [predictIndex,score] = predict(classifer,featureTest); 
     
    figure;
    imshow(testImage);  
    title(['predictImage: ',char(predictIndex)]);  
end  

训练集标签和数量的统计结果:

>> disp(Train_disp);
      Label      Count
    _________    _____

    airplanes     48  
    butterfly     48  
    camera        53  
    scissors      36  
    sunflower     46  

提取到的 HOG 特征

在这里插入图片描述
初步了解特征的选区是否合适,不适合可以调节 extractHOGFeatures 里的参数,比如 cellsize,blocksize,bins等。
参考:extractHOGFeature

测试数据分类结果

只列出几项最终的分类结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 10
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃饭就会放大招

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值