最近,根据项目要求,修改一段Matlab程序,要求原本处理raw格式的图像压缩程序,能适用于BMP图像。搜索了许多资料,并没有现成解决方法。有想过将BMP转为RAW,可程序编写比较麻烦。由于RAW结构是纯像素数据、二进制文件,里面只有像素值,没有文件头、调色板等数据。每个像素根据格式不同占有不同的字节,如8位256色每个像素占一个字节,24位真彩色每个像素占三个字节。
所以采取一种取巧方法解决了问题:提取BMP数据部分,存入到二进制bin(如:test.bin)文件中,fopen(‘test.bin’,‘rb’)打开读取就能运行在RAW中。如果直接提取BMP数据部分,用dec2bin转换成二进制数据,容易出现图像大小或者维度匹配问题。
代码如下:
A=imread('lena.bmp');
[m,n]=size(A);
%存数据
fip=fopen('test.bin','wb');
fwrite(fip,A,'uchar');
fclose(fip);
%提取数据
fip=fopen('test.bin','rb');
Image=fread(fip,[m n],'uchar');
fclose(fip);
Image 就能用在原本RAW的数据处理中了!