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

这篇博客介绍了使用MATLAB进行图像格式转换的过程,包括从jpg转bmp,再转为raw格式。作者探讨了在转换过程中是否需要使用permute函数对图像数据进行转置,并发现在不同情况下两种做法都能成功,但对图像数据的正确解析提出了疑问。博主分享了代码和运行结果,并期待图像处理专家解答困惑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

close all
clear 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格式。希望有懂的图像大佬解答一下!

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值