• 大小: 2.99MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-11
  • 语言: Matlab
  • 标签: matlab  DCT  

资源简介

matlab实现彩色图像DCT变换

资源截图

代码片段和文件信息

function [ RGB_recmiss ] = ColorDCTtransform( RGBmask )
%进行彩色图像的DCT变换
%  返回重构的图像

%亮度量化表
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[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系数进行遮罩处理
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);

%转换为uint8
 YR = uint8(YR);
 YG = uint8(YG);
 YB = uint8(YB);

%计算重构图像和差值
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

评论

共有 条评论