概述
实验数据说明
coil-100数据集是灰色图片集合,包含对100个物体从不同角度的拍摄,每隔 5 度拍摄一副图像,每个物体 72 张图像。每个子文件夹代表一个物体的全部图像。共100个子文件夹,每个文件夹有72张图像。
链接:https://pan.baidu.com/s/1MoI66gjWL8vjbNaD30oGNg 提取码:1xta
实验内容
for time=1:5 //对数据集进行五次划分,相当于进行五次实验,即五次循环
for i=1:100 //以一次循环访问物体图片为例,循环前指定为空,防止发生覆盖,i为子文件夹的个数,即第i个物体
1、以一个文件夹为例,随机打乱序号,生成索引向量,取前 2/3 作为训练样本,后 1/3 作为测试样本。在训练样本中,读取长度为训练样本大小的索引向量,读出图片,先调整为灰度图,后调整图像大小,将处理完的图像的属性按列存放在训练样本集中,测试样本以此类推,将测试图像的属性按列存放在测试样本中。
2、取完100个文件夹所有样本后,将得到的样本数据集利用save 函数存储在data.mat。
实验结果预览效果
实验代码
clc,clear all
datapath='F:/coil/object_1/';
im=dir([datapath,'/*.png']);%读出图像
ind=randperm(72);%随机打乱顺序
ims=imread([datapath,im(ind(1,1)).name]);%读出图像
figure(1);imshow(ims);
ims=rgb2gray(ims); %将图片转成灰度图
figure(2);imshow(ims);
ims=imresize(ims,[32,32]);%将图像调整为统一大小
figure(3);imshow(ims);
该代码用于展示效果图1,即展示原图,灰度图,变小后的图
clc;clear;
%读取图像:完成训练集与测试集的划分(比例为2:1)
datapath='F:/coil/object_%s/';%指定路径
traindata=[];%指定训练集为空
testdata=[];%指定测试集为空
trainlabel=[];testlabel=[];%标签矩阵
for time=1:5
traindata_now=[];trainlabel_now=[]; %当前第time次的训练集及标签
testdata_now=[];testlabel_now=[]; %当前第time次的测试集及标签
for i=1:100
ind=[];trainind=[];testind=[];xtrain=[];xtest=[];%循环前指定为空,防止发生覆盖
path=sprintf(datapath,num2str(i));%%拼接字符串
im=dir([path,'/*.png']);%读出图像
mysize=size(im);
if numel(mysize)>2 %判断图像是否为灰度图
im=rgb2gray(im);%将图片转换成灰度图
else
end
t=length(im);%统计个数
ind=randperm(t);%随机打乱顺序
trainind=ind(1:2*floor(t/3));%取前2/3作为训练样本的索引
testind=ind(1+2*floor(t/3):end);%剩下的1/3作为测试样本的索引
%取出训练样本
for j=1:size(trainind,2)
index=trainind(j);%取出训练样本索引中的一个
imr=imread([path,im(index).name]);%读出图像
imr=imresize(imr,[32 32]);%规定为统一大小
imf=imr(:);%拉成列向量
xtrain(:,j)=imf;%训练样本的第j个放在矩阵第j列
end
traindata_now=[traindata_now xtrain];%训练样本取完
trainlabel_now=[trainlabel_now i*ones(1,size(trainind,2))];%给训练样本赋标签
traindata{1,time}=traindata_now;%traindata的第一个元素是第一次划分的训练集矩阵,以此类推
trainlabel{1,time}=trainlabel_now;%trainlabel的第一个元素是第一次划分的训练集标签,以此类推
%取出测试样本
for jj=1:size(testind,2)
index=testind(jj);%取出测试样本索引中的一个
imr=imread([path,im(index).name]);%读出图像
imr=imresize(imr,[32 32]);%规定为统一大小
imf=imr(:);%图像拉成向量
xtest(:,jj)=imf;%测试样本的第jj个放在矩阵第jj列
end
testdata_now=[testdata_now xtest]; %测试样本取完
testlabel_now=[testlabel_now i*ones(1,size(testind,2))];%给测试样本赋标签
testdata{1,time}=testdata_now; %testdata的第一个元素是第一次划分的测试集矩阵,以此类推
testlabel{1,time}=testlabel_now; %testlabel的第一个元素是第一次划分的测试集标签,以此类推
end
end
save('data.mat','traindata','testdata','trainlabel','testlabel');
该代码是将样本进行划分并将五次划分数据后图片的属性按列存储。
最后
以上就是香蕉豌豆为你收集整理的基于matlab的图像识别分类实验(一)的全部内容,希望文章能够帮你解决基于matlab的图像识别分类实验(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复