趣谈MATLAB的图像读入格式问题

         最近gbl在学图像处理,为了卖弄一下所学知识,便去找lym切磋,说:“给你一个数据.csv文件,你来解读一下里面的信息,如果无法解读就不要找我玩了,解读出来的话有惊喜哦!”

         首先,弄一张图片,如下图所示,


      接下来就是将其转化为二维矩阵放到EXCEL中,程序如下:

    k=imread('/Users/gbl/Desktop/yy.png')%读入图片
    kb=rgb2gray(k)%转为灰度图像
    imshow(kb)

      显示结果如下:


       好了,大功告成,只要将矩阵kb发给lym就行了。但是转念一想,“万一不能由矩阵得到图片咋办,先自己试试吧”。

    gbl=load('key.csv')
    imshow(gbl)

       糟糕,果然不能还原!如下图:


 
       如此,gbl只能去学习了,原来MATLAB矩阵一般以double类型存储,而图片则以uint8来进行存储。所以必须进行转化,于是,gbl这样做: 
 

        gbl=load('key.csv')

        tmp=mat2gray(gbl)

        imshow(tmp)

        还原成功了唉!赶紧发给lym装逼~~~    
        lym 开始了他的破解之路,因为他很想跟gbl玩,凭借他对gbl的了解,细想之下,他打开了MATLAB,输入
    lym=load('key.csv')
    imagesc(lym)
       竟然成功了呢!!!
        
       赶紧去找gbl请吃饭!

总结:
     显示图片可以用imagesc函数,但是这可不是本篇文章的正解啊,虽然字显示出来了,但已经完全不是之前的图片了,颜色都变了。
     gbl来说一下正解哈哈!
     MATLAB中,将图像转为double格式的方法是,cur=double(now)/255,然后进行运算,否则会溢出;
相反,如果想用imshow命令显示图像,则需要将矩阵转化为unit格式,方法如下:
   I=im2uint8(im)%矩阵转化为uint8格式
   I=mat2gray(im)%矩阵转为灰度格式(double)(本文中用的方法)
 
  




发布了34 篇原创文章 · 获赞 20 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/G_B_L/article/details/52769981