matlab版hog+svm图像二分类

开始接触svm分类器是opencv中的使用起来很方便,后来根据实际需要需要使用matlab版的,以前没怎么接触过,开始有点头大,不知从何下手,查阅相关例子后,就开始训练了自己所需分类器了,也很方便.其中hog源程序参考

准备工作

1:创建正阳本文件夹“pos”将正阳本放入

2:创建负样本文件夹“neg”将负样本放入

3:制作正阳本文件列表pos_list.txt

4:制作负样本文件列表neg_list.txt

5:执行下面程序进行训练,测试

clear ;%% 训练阶段ReadList1 = textread(‘pos_list.txt’,’%s’,’delimiter’,’\n’);%载入正样本列表sz1=size(ReadList1);label1=ones(sz1(1),1); %正阳本标签ReadList2 = textread(‘neg_list.txt’,’%s’,’delimiter’,’\n’);%载入负样本列表sz2=size(ReadList2);label2=zeros(sz2(1),1);%负样本标签label=[label1′,label2′]’;%标签汇总total_num=length(label);data=zeros(total_num,1764);%读取正样本并计算hog特征for i=1:sz1(1) name= char(ReadList1(i,1)); image=imread(name); im=imresize(image,[64,64]); img=rgb2gray(im); hog =hogcalculator(img); data(i,:)=hog;end%读取负样本并计算hog特征for j=1:sz2(1) name= char(ReadList2(j,1)); image=imread(name); im=imresize(image,[64,64]); img=rgb2gray(im); hog =hogcalculator(img); data(sz1(1)+j,:)=hog;end[train, test] = crossvalind(‘holdOut’,label);cp = classperf(label);svmStruct = svmtrain(data(train,:),label(train));save svmStruct svmStructclasses = svmclassify(svmStruct,data(test,:));classperf(cp,classes,test);cp.CorrectRate %% 训练完成后保存 svmStruct即可对新输入的对象进行分类了无需再执行上面训练阶段代码 load svmStruct test=imread(‘test2.jpg’);im=imresize(test,[64,64]); figure; imshow(im); img=rgb2gray(im); hogt =hogcalculator(img); classes = svmclassify(svmStruct,hogt);%classes的值即为分类结果

,流转的时光,都成为命途中美丽的点缀,

matlab版hog+svm图像二分类

相关文章:

你感兴趣的文章:

标签云: