數字圖像處理|Matlab-灰度和彩色圖像的離散餘弦變換-對分塊圖像進行離散餘弦變換(DCT)

Matlab-灰度和彩色圖像的離散餘弦變換

代碼鏈接:https://download.csdn.net/download/qq_43571150/12033265

問題
對輸入的灰度和彩色圖像進行分塊,每一塊圖像爲8*8像素的大小。對分塊圖像進行離散餘弦變換,輸出頻譜圖(DCT係數);

結果圖像👇
在這裏插入圖片描述
Matlab代碼👇

clc;clear;
RGB=imread('05.jpg');
gary=rgb2gray(RGB);

%亮度量化表
m=0.5*[ 16 11 10 16 24 40 51 61;
        12 12 14 19 26 58 60 55;
        14 13 16 24 40 57 69 56;
        14 17 22 29 51 87 80 62;
        18 22 37 56 68 109 103 77;
        24 35 55 64 81 104 113 92;
        49 64 78 87 103 121 120 101;
        72 92 95 98 112 100 103 99];

%RGB圖分層處理? 得到3個分量圖
R = RGB(:,:,1);
G = RGB(:,:,2);
B = RGB(:,:,3);

%轉換爲雙精度
IR = double(R);
IG = double(G);
IB = double(B);

%建立8*8的DCT變換矩陣
T=dctmtx(8);

%進行DCT變換
RR = blkproc(IR,[8,8],'P1*x*P2',T,T');
GG = blkproc(IG,[8,8],'P1*x*P2',T,T');
BB = blkproc(IB,[8,8],'P1*x*P2',T,T');

D1=blkproc(gary,[8 8],'dct2');
D2=cat(3,RR,GG,BB);


subplot(2,2,1);imshow(RGB);title('彩色圖像')
subplot(2,2,2);imshow(log(abs(D2)));title('彩色圖像分塊DCT頻譜圖')
subplot(2,2,3);imshow(gary);title('灰度圖')
subplot(2,2,4);imshow(log(abs(D1)));title('灰度圖分塊DCT頻譜圖')

imwrite(log(abs(D2)),'05 彩色圖像分塊離散餘弦變換頻譜圖.jpg');
imwrite(log(abs(D1)),'05 灰度圖分塊離散餘弦變換頻譜圖.jpg');


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章