您的位置:首页 > 编程语言 > MATLAB

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

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

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



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

k=imread('/Users/gbl/Desktop/yy.png')%读入图片
kb=rgb2gray(k)%转为灰度图像
imshow(kb)<span style="font-size: 14px; text-align: center; font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">    </span>

      显示结果如下:



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

gbl=load('key.csv')
<span style="font-size: 14px;">imshow(gbl)</span>

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




      如此,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=matgray(im)%矩阵转为灰度格式(double)(本文中用的方法)


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐