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

您所在的位置:网站首页 matlab读取png文件 MATLAB的jpg、bmp、jpeg等格式转换为RAW并显示图片。

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

2024-07-10 11:22| 来源: 网络整理| 查看: 265

        最近在做图像传输接口方面的工作,所以想了解一下图片的数据格式,浅浅的用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格式。希望有懂的图像大佬解答一下!

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3