📄 exp4.asv
字号:
clear all;
close all;
%亮度量化表
LQT=[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];
%色度量化表
CQT=[17 18 24 47 99 99 99 99;
18 21 26 66 99 99 99 99;
24 26 56 99 99 99 99 99;
47 66 99 99 99 99 99 99;
99 99 99 99 99 99 99 99;
99 99 99 99 99 99 99 99;
99 99 99 99 99 99 99 99;
99 99 99 99 99 99 99 99];
%灰度图象处理
I1 = double(imread('Lena.bmp'));
[M,N] = size(I1);
last_Z = 0;
jpeg1 = '';
for i = 0:M/8-1
for j = 0:N/8-1
S = I1((1+8*i):(8*(i+1)), (1+8*j):(8*(j+1)));%分割成8*8处理
S = dct2(S);%DCT
S = round(S./LQT);%亮度量化
Z = Zigzag(S);%Zigzag扫描
DCH = DC_Huffman(Z(1),last_Z,1);%直流分量编码
ACH = AC_Huffman(Z(2:end),1);%交流分量编码
last_Z = Z(1);
jpeg1 = [jpeg1 DCH ACH];
end
end
rate1 = 8*M*N/length(jpeg1);%压缩比
%彩色图像处理
I2 = double(imread('LenaRGB.bmp'));
%转换成亮度
I2 = rgb2ycbcr(I2);
Y = I2(:,:,1);
Cr = I2(:,:,2);
Cb = I2(:,:,3);
[M,N] = size(Y);
Y_last_Z = 0;
Cr_last_Z = 0;
Cb_last_Z = 0;
jpeg2 = '';
for i = 0:M/8-1
for j = 0:N/8-1
S = Y((1+8*i):(8*(i+1)), (1+8*j):(8*(j+1)));%分割成8*8处理
S = dct2(S);%DCT
S = round(S./LQT);%亮度量化
Z = Zigzag(S);%Zigzag扫描
DCH = DC_Huffman(Z(1),last_Z,1);%直流分量编码
ACH = AC_Huffman(Z(2:end),1);%交流分量编码
last_Z = Z(1);
jpeg1 = [jpeg1 DCH ACH];
end
end
rate1 = 8*M*N/length(jpeg1);%压缩比
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -