参考文献:
[1] Vinay K.Ingle. 算术编码方法在图像压缩编码中的应用. 电子工业出版社,2008 [2] 王洪元. JPEG标准下图像压缩算法的研究与实现. 清华大学出版社,2010 [3] 贺兴华. MATLAB图像处理. 人民邮电出版社,2009 [4] 李欣文. 数字图像采集与处理. 电子工业出版社,2007 [5] 张思远. 图形图像处理与应用. 电子工业出版社,2009
[6] 严剑. 离散余弦变换在图像压缩中的应用. 人民邮电出版社,2006 [7] 王成优. JPEG图像压缩编码及其MATLAB仿真实现. 电子工业出版社,2007
21
附录
x=imread('C:\\Users\\hp\\Desktop\\z\\1.jpg','jpg');
%图像数据的读取,将图像数据放入矩阵A中,颜色数据放入矩阵M中
%*****************图像颜色空间变换*******************************% x=imread('C:\\Users\\hp\\Desktop\\z\\1.jpg','jpg'); figure(1) subplot(2,2,1) imshow(x);
title('原始图像'); ycbcrx=rgb2ycbcr(x) YCbCr=ycbcrx subplot(2,2,2) imshow(a,[]);
title('ycbcr彩色空间'); yiqx=rgb2ntsc(x) b=yiqx; subplot(2,2,3) imshow(b,[]);
title('ntsc彩色空间') x=double(x); R=x(:,:,1); G=x(:,:,2); B=x(:,:,3);
Y = 0.299*R + 0.587*G + 0.114*B; U = -0.147*R - 0.289*G + 0.436*B; V = 0.615*R - 0.515*G - 0.100*B; c=cat(3,Y,U,V); subplot(2,2,4) imshow(c,[]); title('yuv彩色空间')
22
%*************************************** %亮度量化表
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];
%****************************************** %****************************************** %彩色图像分块采样
Y = YCbCr(:,:,1); Cr = YCbCr(:,:,2); Cb = YCbCr(:,:,3); [M,N] = size(Y); Y_last_Z = 0; Cr_last_Z = 0; Cb_last_Z = 0; Y_jpeg2 = '';
23
Cr_jpeg2 = ''; Cb_jpeg2 = ''; for i = 0:M/8-1 for j = 0:N/8-1
S1 = Y((1+8*i):(8*(i+1)), (1+8*j):(8*(j+1)));%分割成8*8处理 S2 = Cr((1+8*i):(8*(i+1)), (1+8*j):(8*(j+1))); S3 = Cb((1+8*i):(8*(i+1)), (1+8*j):(8*(j+1))); A1 = dct2(S1);üT A2 = dct2(S2); A3 = dct2(S3);
B1 = round(A1./LQT);%亮度量化 B2 = round(A2./CQT);%色度量化 B3 = round(A3./CQT);%色度量化 %亮度量化的逆变换 C4=round(B1.*LQT); C5=round(B2.*CQT); C6=round(B3.*CQT); üT逆变换 S4=idct2(C4); S5=idct2(C5); S6=idct2(C6); %分块重组
Y((1+8*i):(8*(i+1)), (1+8*j):(8*(j+1)))=S4; Cr((1+8*i):(8*(i+1)), (1+8*j):(8*(j+1)))=S5; Cb((1+8*i):(8*(i+1)), (1+8*j):(8*(j+1)))=S6;
%********************************************************** %Zigzag扫描 Z1 = Zigzag(B1); Z2 = Zigzag(B2); Z3 = Zigzag(B3);
24
%********************************************************* %Huffman编码
%***************************** %直流分量编码(DC_Huffman)
DCH_Y = DC_Huffman(Z1(1),Y_last_Z,1); DCH_Cr=DC_Huffman(Z2(1),Cr_last_Z,2); DCH_Cb=DC_Huffman(Z3(1),Cb_last_Z,2); %交流分量编码(AC_HUffman)
ACH_Y = AC_Huffman(Z1(2:end),1); ACH_Cr = AC_Huffman(Z2(2:end),2); ACH_Cb = AC_Huffman(Z3(2:end),2); Y_last_Z =Z1(1); Cr_last_Z = Z2(1); Cb_last_Z = Z3(1);
Y_jpeg2 = [Y_jpeg2 DCH_Y ACH_Y]; Cr_jpeg2 = [Cr_jpeg2 DCH_Cr ACH_Cr]; Cb_jpeg2 = [Cb_jpeg2 DCH_Cb ACH_Cb]; end end figure(2)
subplot(2,3,1);imshow(A1);title('Y采样后DCT'); subplot(2,3,2);imshow(A1);title('cr采样后DCT'); subplot(2,3,3);imshow(A1);title('cb采样后DCT'); subplot(2,3,4);imshow(B1);title('Y亮度量化'); subplot(2,3,5);imshow(B2);title('cr色度量化'); subplot(2,3,6);imshow(B3);title('cb色度量化'); jpeg2 = [Y_jpeg2,Cr_jpeg2,Cb_jpeg2]; rate2 = 8*M*N*3/length(jpeg2);%压缩比 %**************************************** figure(3);
subplot(1,3,1);imshow(Y);title('解压的Y分量图像');
25
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于DCT的图像压缩编码算法的研究(5)在线全文阅读。
相关推荐: