将一组图片数据导入.mat文件中

导语:由于用MATLAB做神经网络、深度学习相关的实验时,需要用到的数据是以.mat文件的格式存储,所以在数据准备阶段,如何将一组图片的参数导入到.mat文件,便于通过MATLAB训练,这便是这里要讨论的问题。

1.什么是MAT文件

    MAT文件是MATLAB使用的一种特有的二进制数据文件。通常采用MAT文件把工作区的变量存储在磁盘里。MAT文件可以包含一个或多个MATLAB变量数据本身,而且同时保存变量名及数据类型等。

    在MATLAB中载入某个mat文件后,可以在当前工作区完全再现当初保存在mat文件时的那些变量。同样,也可以使用mat文件从MATLAB中导出数据。

(1)输出数据到mat文件

save filename:保存工作变量中的全部数据

save filename var1,var2......varN:选择需要保存的变量

note:也可以使用通配符“*”将所有以s开头的变量保存到文件中去。

用法:save filename s*

(2)读取mat文件

S=load(filename)

S=load(filename,variables)

S=load(filename,'-mat',variables)

S=load(filename,'-ascii')%用于强调以mat文件格式处理文件或者强制用文件方式处理文件

note:直接用load函数,可将mat文件载入,如果是带有返回参数的load函数,则会将mat文件中的所有数据载入到返回变量。

可用whos函数查看工作空间的变量。

(3)查看mat文件变量

   whos -file filename 

2.将图片数据存入mat文件

(1)这里我将图片都imresize成[64,64]大小,共20张图片、

clc 
clear all
data=zeros(20,64,64,3)
for i=1:20
    pic_name=[num2str(i),'.jpg'];
    I=imread(pic_name);
    I=imresize(I,[64,64]);
    data(i,:,:,:)=I(:,:,:)
end

save imag_data.mat data

(2)更加通用的方法

clc
clear all
file=dir('*.jpg');
n=length(file);
data=zeros(n,64,64,3);
for i=1:n
    img=imread(file(i).name);
    I=imresize(img,[64,64]);
     data(i,:,:,:)=I(:,:,:)
end

save img_data.mat data

note:这种方法不适用图片数量过多的情况,否则会报出处理的数据量过大,超过处理极限的问题。针对数量过多的图片,可进行分布处理。

    这里可能关于矩阵的格式跟之后用到不同,之后的处理就可以通过load之后的矩阵进行处理,这里只是将图片的数据保存在mat文件中。这只是一个简单的例子,总体思想是这个样子。

总结:在做机器学习或深度学习相关的练习中,数据的准备是第一步,而通过MATLAB做的训练时,数据通常为mat文件,因此如何将待训练的数据处理为mat文件是很必要的步骤。本次此仅仅介绍了一个小例子,并且没有存储标签,这是因为我将要做的这个实验不需要标签,关于如何将标签数据存入的思想也与上诉类似,首先建立一个空的矩阵,确定维度,之后往矩阵里面填入数据,最后保存变量。在使用时,load不同变量即可。

附:若需要更加详细的代码,可参阅https://blog.csdn.net/yongjiankuang/article/details/72824081。里面的代码更加完善。写代码一定要目标明确。


猜你喜欢

转载自blog.csdn.net/yeyoenjoy/article/details/80545641