hog svm 视频 matlab,SVM+HOG對圖像進行分類(MATLAB實現)

網上看到關於用opencv對圖像進行分類的不少,這次用MATLAB做了些嘗試,圖像數據集為:點擊打開鏈接,http://blog.csdn.net/jcy1009015337/article/details/53763484 另外opencv版本的為:點擊打開鏈接,http://blog.csdn.net/always2015/article/details/47107129

廢話就不說,直接上代碼(適合MATLAB 2016b版本及以上),代碼有相應注釋。

我訓練的圖像在磁盤上位置如下,包含5個類別,省去了前人制作txt存儲圖像路徑的過程:

521d44e30540be21753bcdad2cf97cdf.png

測試圖像分布為:

9ff032271950746827b4951099da0445.png

%% 用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

統計輸出結果如下:

dd0b1946a4674999f56c18acdd426fcb.png

2a2bf479496e14086f6d2a748475ef9e.png

0cf889fce4daec2545f414958acaa718.png

a04226a94668560bb13a14668e0124a3.png

718ffed419aa3660afac302a2033fd35.png

ff648633f7e01aca2241e18ef4d91469.png

第一張圖像顯示的是提取到的HOG特征,這個主要可以初步了解下特征是否選擇的合適,不合適可以調節extractHOGFeatures里面的參數,如cellsize,blocksize,bins等,具體可以參考這個點擊打開鏈接 http://cn.mathworks.com/help/vision/ref/extracthogfeatures.html?searchHighlight=extractHOGFeatures&s_tid=doc_srchtitle。本程序選擇的默認參數,從圖1可以預覽到特征分別合適。

歡迎加入全國MATLAB愛好者qq群1:193984759,討論圖像處理,機器學習,深度學習,數學建模等MATLAB相關的技術!

全國Matlab愛好者群1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值