在JPEG解碼中對JPG圖片進行了解碼,解碼的數據分為RGB三色,這三色數據(16進制)存放在3個文件中red.dat,green.dat,blue.dat;用matlab把這3色數據復原成圖像。
這里僅對紅色處理,其他兩種顏色的處理方法類似。
這里解碼的是一幅1080*1920的jpg圖片。
red.dat文件中存放的是16進制的數據
格式如上圖,這里只列了12個數據,總共有1080*1920個數據。
Matlab源程序如下

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行:顯示原始圖像和解碼之后的只含紅色分量的圖像。
運行結果:
左邊的為原始圖像,右邊的為解碼之后的只含紅色分量的圖像。