【Matlab图像处理】学习笔记:读取16进制RGB文档转为彩色图片
在JPEG解码中对JPG图片进行了解码,解码的数据分为RGB三色,这三色数据(16进制)存放在3个文件中red.dat,green.dat,blue.dat;用matlab把这3色数据复原成图像。
这里仅对红色处理,其他两种颜色的处理方法类似。
这里解码的是一幅1080*1920的jpg图片。
red.dat文件中存放的是16进制的数据
格式如上图,这里只列了12个数据,总共有1080*1920个数据。
Matlab源程序如下
rgb
1 clear;
2 RGB=imread('blank.jpg');
3 red=zeros(1080,1920);
4 a=textread('red.dat','%s')';
5 b=hex2dec(a);
6 c=uint8(b);
7 for i=1:1080
8 for j=1:1920
9 m=1920*(i-1)+j;
10 red(i,j)=c(m);
11 end
12 end
13
14 RGB(:,:,1)=red;
15 RGB(:,:,2)=0;
16 RGB(:,:,3)=0;
17 jpeg=imread('picture.jpg');
18 subplot(1,2,1),imshow(jpeg);
19 subplot(1,2,2),imshow(RGB);
第2行:blank.jpg是一幅1080*1920的空图像。
第3行:建立一个二维数组red用来保存R的值。
第4行:读取16进制的red.dat文件中的数据放到a中。
第5行:16进制转化为10进制。
第7-12行:读取的数据放到二维数组red中。
第14行:设置红色分量。
第15行:设置绿色分量,这里设为0;
第16行:设置蓝色分量,这里设为0;
第17行:读取原始图像。
第18-19行:显示原始图像和解码之后的只含红色分量的图像。
运行结果:
左边的为原始图像,右边的为解码之后的只含红色分量的图像。