Matlab将图片存为.mat文件

将图片存为.mat文件

  • 原因 :由于做深度学习相关研究的时候,需要将图片存为.mat作为网络的输入,故写了该程序。

    有时候我们会有将图片与标签存为一个.mat文件,做到一一对应的效果。例如做fcn分割的时候图片与mask。我们的做法是首先将img和mask加载到工作空间,然后用

    img=imread('000.jpg');
    mask = imread('000.jpg');
    save('mydata.mat','img','mask')
    % 这样就将你的两个文件存为了"mydata.mat"这个名字,下次要用直接
    load mydata
    % 就好了

    当然本文要讲的不是这,本文要将的是将 FCN 中的单通道的标签 Label 制作为.mat文件。
    程序如下

    clc   
    clear   
    % im=imread('C:\Users\Administrator\Desktop\1.png');   %单张图片测试
    dirction='E:\3Dircadb\liver';        %图片存放文件夹
    Path=dir(fullfile(dirction,'*.jpg'));   %保存的图片格式为.jpg格式
    for k=1:numel(Path)   
    imPath=fullfile(dirction,Path(k).name);   
    im=imread(imPath);     
    [row col]=size(im);                        %图片的尺寸   
    bd=cell(1,33);   
    bd(:)={logical(sparse(row,col))};  %在一个元胞数组中预载33个全零稀疏矩阵,背景0不算   
    N=unique(im);                              %图片分成多少类   
    if N(1)==0                                 %排除背景像素   
        N=N(2:numel(N),1);   
    end   
    for i=1:numel(N)   
        [x y]=find(im==N(i)); %找到图片中标号为一类的所有坐标   
        flog=1;   
        for t=1:numel(x)   
            if ((x(t)-1)==0)||((y(t)-1)==0)||((x(t)+1)>row)||((y(t)+1)>col)    %找到边界线点,排除他  
                continue;   
            else   
                if (im(x(t)-1,y(t))~= N(i))||(im(x(t)+1,y(t))~= N(i))||(im(x(t),y(t)-1)~= N(i))||(im(x(t),y(t)+1)~= N(i)) %找到一类图像上的边框点  
                    X(flog)=x(t);   
                    Y(flog)=y(t);   
                    flog=flog+1;   
                end   
            end   
        end   
        val=zeros(row,col);      %创建输入图像大小的全零矩阵   
        val((Y-1)*row+X)=1;     %将其一类图像的的边框存入全零矩阵   
        bd(N(i))={logical(sparse(val))};  %将这个带有图像边框的矩阵以稀疏矩阵的方式存入元胞数组对应的边框分类中   
        X=zeros(0);Y=zeros(0);  % X,Y矩阵归零处理,方便下次重新存储坐标   
    end   
    GTcls.Boundaries=bd;   
    GTcls.Segmentation=im;   
    GTcls.CategoriesPresent=N;   
    save_path=fullfile('E:\my\pic_mat',strcat(Path(k).name(1:5),'.mat'));  %保存文件夹
    save(save_path,'GTcls');   
    end  

    至此,我们的label 就转化为.mat 文件了,就可以作为你的实验数据了。根据你自己的数据中类别数目修改上述的数字。

    结束!欢迎留言交流!

你可能感兴趣的:(FCN)