700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > MATLAB的jpg bmp jpeg等格式转换为RAW并显示图片。

MATLAB的jpg bmp jpeg等格式转换为RAW并显示图片。

时间:2019-06-16 04:55:45

相关推荐

MATLAB的jpg bmp jpeg等格式转换为RAW并显示图片。

最近在做图像传输接口方面的工作,所以想了解一下图片的数据格式,浅浅的用matlab跑了一下。不多说直接贴代码

close allclear all% /读取jpg图像显示//A=imread('1.jpg');subplot(1,3,1);imshow(A);title('jpg图像');% 另存为bmp格式图片//imwrite(A,'1.bmp','bmp');% 读取bmp图像显示/B=imread('1.bmp');subplot(1,3,2);imshow(B);title('bmp图像');% 另存为raw格式图片///[img_n,map] = imread('1.bmp');fid=fopen('1.raw','wb');%存为raw\\img_n=permute(img_n,[3,2,1]);%转置n*c*r[nums,clos,rows]fwrite(fid, img_n, 'uint8');%注意将img转置fclose(fid);% 读取raw图像显示[rows,clos,nums] = size(A);%根据图像大小设定id = fopen('1.raw');img=fread(id,'uint8=>uint8');%以'uint8'数据类型打开,因为本人存储的raw数据是以uint8保存的imgsize = size(img);%读出的图像的size为n*1大小img = reshape(img,[nums,clos,rows]);img=permute(img,[3,2,1]);%转置fclose(id);subplot(1,3,3);imshow(img)title('raw图像');

matlab运行后的图像结果如图,需要说明的是,如果对于一幅RAW格式的图像,应该需要提前知道它的像素大小,才能通过matlab正确解析它的像素数据。

需要说明一下的是,本代码能够将其他格式的图片转换为RAW,但是对于在RAW像素层数据需要转置的问题并不是很深入了解,所以有点迷惑:

比如我在转换前对数据转置(permute函数)然后写成RAW格式的图片,matlab的fopen函数并没有报错,读RAW格式文件的时候就相应的需要转置。(本代码是这类写法)

如果我在转换前没有对数据转置(permute函数)然后写成RAW格式的图片,matlab的fopen函数也没有报错,当读RAW格式文件显示的时候就不需要转置。

我参看了大量的CSDN的博客,都涉及到了要让像素的图层(多维像素,这里理解为图层(3层))转置的问题,所以我也就用到了permute函数。疑惑就是其实用不用permute函数我都可以转成RAW格式。希望有懂的图像大佬解答一下!

所有的代码都有相应的解释,代码比较简单就不做过多的描述,这是本人参加工作以来第一篇博客,以后将常驻分享,学识浅薄,希望能够帮助大家,同时在学习的道路上一起进步!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。