【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行:显示原始图像和解码之后的只含红色分量的图像。

运行结果:

左边的为原始图像,右边的为解码之后的只含红色分量的图像。

原文地址:https://www.cnblogs.com/tony1224/p/2427891.html