SVM+HOG对图像进行分类(MATLAB实现)
2017-04-28 14:26
706 查看
网上看到关于用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存储图像路径的过程:
测试图像分布为:
命令行对训练集imdsTrain
统计输出结果如下:
第一张图像显示的是提取到的HOG特征,这个主要可以初步了解下特征是否选择的合适,不合适可以调节extractHOGFeatures里面的参数,如cellsize,blocksize,bins等,具体可以参考这个点击打开链接 http://cn.mathworks.com/help/vision/ref/extracthogfeatures.html?searchHighlight=extractHOGFeatures&s_tid=doc_srchtitle。本程序选择的默认参数,从图1可以预览到特征分别合适。
废话就不说,直接上代码(适合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可以预览到特征分别合适。
相关文章推荐
- hog matlab代码1——实现hog+svm图像二分类
- matlab实现hog+svm图像二分类
- SVM+HOG对图像进行多分类(OpenCV实现)
- HOG+SVM进行图像分类
- 一个用BoW|Pyramid BoW+SVM进行图像分类的Matlab Demo
- 采用线性SVM对线性不可分的数据进行分类(含matlab实现)
- matlab版hog+svm图像二分类
- 二分类SVM方法Matlab实现
- SVM中图像常用的HOG特征描述及实现
- CNN中使用SVM进行分类(keras的实现)
- 在opencv3中利用SVM进行图像目标检测和分类
- HOG + SVM 进行图片分类(python)
- Matlab实现Hough变换检测图像中的直线 分类: 图像处理 2014-06-14 22:07 641人阅读 评论(0) 收藏
- libsvm遥感图像的分类(MATLAB中进行)
- 在opencv3中利用SVM进行图像目标检测和分类
- 二分类SVM方法Matlab实现
- [数字图像处理]常见噪声的分类与Matlab实现
- [数字图像处理]常见噪声的分类与Matlab实现
- Matlab 支持向量机(SVM)实现多分类
- 数字图像处理]常见噪声的分类与Matlab实现