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 文件了,就可以作为你的实验数据了。根据你自己的数据中类别数目修改上述的数字。

    结束!欢迎留言交流!

  • 13
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值