資源簡介
matlab實現(xiàn)彩色圖像DCT變換

代碼片段和文件信息
function?[?RGB_recmiss?]?=?ColorDCTtransform(?RGBmask?)
%進行彩色圖像的DCT變換
%??返回重構(gòu)的圖像
%亮度量化表
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);
%轉(zhuǎn)換為雙精度
IR?=?double(R);
IG?=?double(G);
IB?=?double(B);
%建立8*8的DCT變換矩陣
T=dctmtx(8);
%進行DCT變換
RR?=?blkproc(IR[88]‘P1*x*P2‘TT‘);
GG?=?blkproc(IG[88]‘P1*x*P2‘TT‘);
BB?=?blkproc(IB[88]‘P1*x*P2‘TT‘);
%量化
LR?=?blkproc(RR[8?8]?‘round(x./P1)‘m);
LG?=?blkproc(GG[8?8]?‘round(x./P1)‘m);
LB?=?blkproc(BB[8?8]?‘round(x./P1)‘m);
%對DCT系數(shù)進行遮罩處理
mR=blkproc(LR[8?8]‘x.*P1.*P2‘maskm);
mG=blkproc(LG[8?8]‘x.*P1.*P2‘maskm);
mB=blkproc(LB[8?8]‘x.*P1.*P2‘maskm);
%反DCT變化?IDCT
YR?=blkproc(mR[8?8]‘P1*x*P2‘T‘T);
YG?=blkproc(mG[8?8]‘P1*x*P2‘T‘T);
YB?=blkproc(mB[8?8]‘P1*x*P2‘T‘T);
%轉(zhuǎn)換為uint8
?YR?=?uint8(YR);
?YG?=?uint8(YG);
?YB?=?uint8(YB);
%計算重構(gòu)圖像和差值
RGB_rec?=cat(3YRYGYB);
miss=RGB-RGB_rec;
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????1774227??2016-12-01?20:37??實驗報告.docx
?????目錄???????????0??2016-12-01?10:21??DCT\
?????文件????????1264??2016-12-01?20:47??DCT\ColorDCTtransform.m
?????文件????????2456??2016-11-30?21:00??DCT\DCTmain.m
?????文件?????????650??2016-11-30?20:49??DCT\DCTtransform.m
?????文件????????1912??2016-11-30?21:48??DCT\DCT_RGB.m
?????文件?????1434328??2016-11-26?11:19??DCT\road.tif
評論
共有 條評論