标签设置,用svmtrain()函数完成对训练集图像的训练过程,同样提取测试集图像的phog特征并对不同类别的图像进行标签设置,用svmpredict函数完成对测试集图像的测试,从而完成分类过程,得到分类准确率。 3.2.2 框图设计
开始 . 读入训练图像 提取phog图像特征
设置训练图像标签 对训练集图像进行训练 读入测试图像 提取测试图像的phog图像特征 设置测试图像的标签 对读入的测试图像进行测试 得到准确率 结束
4. 代码及相关注释
本文主要采用梅兰竹菊和松竹梅两组图像,其图像大小均为60*60像素,且每一类的训练集均为10个图片,每一类的测试集均为30个图片。 梅兰竹菊组的训练图像如下:
梅兰竹菊组的测试图像如下:
松竹梅组的训练图像如下:
松竹梅组的测试图像如下:
4.1 基于libsvm的gist特征提取分类仿真结果
4.1.1 代码及注释 梅兰竹菊训练样本代码:
clc clear all close all tic;
%读入训练图像;
A=dir('D:\\梅兰竹菊gist\\train\\*.jpg'); C=[];
for k=1:size(A)%k为训练图像的总数; B=strcat('D:\\梅兰竹菊gist\\train\\',A(k).name); img=imread(B);
%获取图像的GIST特征向量;
Nblocks = 4;
imageSize = 60;
orientationsPerScale = [8 8 8 8];%每个数值范围的方向数量
numberBlocks = 4;
createGabor(orientationsPerScale, imageSize); G = createGabor(orientationsPerScale, imageSize); output = prefilt(double(img), 4);
g = gistGabor(output, numberBlocks, G); C(k,:)=g;%C为该图像的特征矩阵; end
%设置训练图像标签; s=[]; for i=1:4
A=i*ones(10,1); s=[s;A]; end
%对图像进行训练; model = svmtrain(s, C); t1=toc
梅兰竹菊测试样本代码: Tic;
A=dir('D:\\梅兰竹菊gist\\test\\*.jpg'); D=[];
%读入测试图像;
for k=1:size(A)%k为测试图像的总数; B=strcat('D:\\梅兰竹菊gist\\test\\',A(k).name); img=imread(B);
%获取图像的GIST特征向量; Nblocks = 4; imageSize = 60;
orientationsPerScale = [8 8 8 8];%每个数值范围的方向数量 numberBlocks = 4;
createGabor(orientationsPerScale, imageSize); G = createGabor(orientationsPerScale, imageSize); output = prefilt(double(img), 4); g = gistGabor(output, numberBlocks, G); D(k,:)=g;%C为该图像的特征矩阵; end T=[]; for i=1:4
A=i*ones(30,1); T=[T;A]; end
%对图像进行测试;