SVM+HOG对图像进行分类(MATLAB实现)

2 篇文章 1 订阅
2 篇文章 0 订阅

网上看到关于用opencv对图像进行分类的不少,这次用MATLAB做了些尝试,图像数据集为:链接: https://pan.baidu.com/s/1i5OhC7z 密码: utn7,其他MATLAB版本http://blog.csdn.net/libin88211/article/details/19968205 ,点击打开链接,http://blog.csdn.net/jcy1009015337/article/details/53763484 另外opencv版本的为:点击打开链接,http://blog.csdn.net/always2015/article/details/47107129

废话就不说,直接上代码(适合MATLAB 2016b版本及以上),代码有相应注释。

我训练的图像在磁盘上位置如下,包含5个类别,省去了前人制作txt存储图像路径的过程:



测试图像分布为:


%% 用hog特征对图像进行多分类,svm训练,1 VS 1  
%% 1 数据集,包括训练的和测试的 (注意自己图片存放路径,附录我给出示例下载图片链接) 
imdsTrain = imageDatastore('F:\svm_images\train_images',...  
    'IncludeSubfolders',true,...  
    'LabelSource','foldernames');  
imdsTest = imageDatastore('F:\svm_images\test_image');  


%% 显示训练的图片种类Labels和数量Count
Train_disp = countEachLabel(imdsTrain);
disp(Train_disp);
  
%%   2 对训练集中的每张图像进行hog特征提取,测试图像一样  
% 预处理图像,主要是得到features特征大小,此大小与图像大小和Hog特征参数相关  
imageSize = [256,256];% 对所有图像进行此尺寸的缩放  
image1 = readimage(imdsTrain,1);  
scaleImage = imresize(image1,imageSize);  
[features, visualization] = extractHOGFeatures(scaleImage);  
imshow(scaleImage);hold on; plot(visualization)  
  
% 对所有训练图像进行特征提取  
numImages = length(imdsTrain.Files);  
featuresTrain = zeros(numImages,size(features,2),'single'); % featuresTrain为单精度  
for i = 1:numImages  
    imageTrain = readimage(imdsTrain,i);  
    imageTrain = imresize(imageTrain,imageSize);  
    featuresTrain(i,:) = extractHOGFeatures(imageTrain);  
end  
  
% 所有训练图像标签  
trainLabels = imdsTrain.Labels;  
  
% 开始svm多分类训练,注意:fitcsvm用于二分类,fitcecoc用于多分类,1 VS 1方法  
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  
  
    

命令行对训练集imdsTrain
统计输出结果如下:





第一张图像显示的是提取到的HOG特征,这个主要可以初步了解下特征是否选择的合适,不合适可以调节extractHOGFeatures里面的参数,如cellsize,blocksize,bins等,具体可以参考这个点击打开链接 http://cn.mathworks.com/help/vision/ref/extracthogfeatures.html?searchHighlight=extractHOGFeatures&s_tid=doc_srchtitle。本程序选择的默认参数,从图1可以预览到特征分别合适。




  • 44
    点赞
  • 389
    收藏
    觉得还不错? 一键收藏
  • 69
    评论
### 回答1: MATLAB是一种计算机程序语言和交互式环境,它可以用于各种数据分析、科学计算和工程设计任务,包括图像分类和目标检测。其中,HOG(方向梯度直方图)和SVM(支持向量机)是两种常见的方法用于图像分类HOG特征表示一张图像中不同方向的梯度信息,并构建一个直方图来表示每个图像块的特征。这种特征提取方法在行人检测和人脸识别等领域得到了较好的应用。在MATLAB中,可以使用图像处理工具箱中的函数来提取HOG特征,并使用机器学习工具箱中的函数来训练分类器。 SVM是一种常用的分类器,它可以将不同类别的图像分开。对于训练样本,SVM可以找到一个最优的超平面将它们分割开来。在MATLAB中,可以使用机器学习工具箱中的函数来训练SVM分类器,并将其用于测试数据的分类。 将HOG特征和SVM分类器结合在一起,可以实现高效的图像分类。在MATLAB中,可以先使用HOG特征提取函数来生成图像特征,然后使用训练好的SVM分类器来实现分类。这种方法在机器视觉和计算机视觉中有广泛的应用,例如行人检测、人脸识别和物体识别等。总之,MATLAB图像分类hog svm方法是一种常用的图像识别方法,在各种不同的应用领域都有很好的表现。 ### 回答2: MATLAB是一款强大的编程软件,其中包括了图像处理和机器学习等领域的工具箱。其中,一种常见的图像分类算法是HOG+SVMHOG(Histogram of Oriented Gradients)提取图像中各个方向的梯度信息,并将其转化为直方图的形式,以描述图像的纹理和形状特征。SVM(Support Vector Machine)则利用这些特征来进行分类或多分类的决策。这种方法广泛应用于人脸识别、物体检测等图像分类领域,具有较高的准确性和稳定性。在MATLAB中,用户可以通过调用相关函数,如hogFeatureExtractor、trainImageCategoryClassifier等,来实现该算法的图像分类。同时,用户也可以根据实际情况对算法进行优化和改进,例如:引入更多的特征描述符、设置合适的SVM参数等。总之,MATLAB提供了丰富的工具和方法,为用户快速、高效地进行图像分类和机器学习提供了便利。 ### 回答3: HOG-SVM分类器是一种常用的图像分类方法。HOG特征描述子是由Navneet Dalal和Bill Triggs于2005年提出的一种用于图像中物体检测的特征描述子。他们通过传统人工特征提取方法,从人眼视觉能够识别的局部图像特征出发,将图像转换成方向梯度直方图(Histogram of Oriented Gradient, HOG)特征。 HOG特征的提取,是指首先将图像分成很多小的单元格(cell),每个单元格内维护一个梯度方向直方图,然后使用经过分块(block)的梯度直方图来描述每个block中的梯度方向信息,最后将所有的分块信息串起来得到一个用于描述整张图片特征的向量。 SVM分类器则是通过对正负样本数据进行训练,使其能够将各类样本分开的一个分类器。SVM分类器最后将每个测试样本特征向量作为其输入,判定其属于哪个类别,并给出对于属于每个类别的置信度。 在图像分类中,使用HOG-SVM分类器能够实现对于目标物体的自动识别。先对训练数据进行HOG特征提取和SVM训练,训练完毕后,可以对测试数据进行HOG特征提取,并使用训练好的SVM分类进行物体的分类识别。实验表明,HOG-SVM分类器具有较高的分类准确率和较好的鲁棒性,广泛应用于目标检测、人脸识别等领域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值