图像的JPEG压缩编码
实验4 图像的JPEG压缩编码
选题意义
图像压缩编码是减少图像数据的重要手段,分为有损压缩和无损压缩两种。
要 求
结合相关课程,完成实验内容所列条款,写出实验报告。
实验目的
掌握图像的JPEG压缩编码。
实验原理
(1)数据分块
(2)DCT处理
(3)系数量化
(4)Z型扫描
(5)DC系数编码
1
(6)AC系数编码
实验仪器及设备
(1)微型计算机;
(2)Matlab 图像处理软件。
实验内容及步骤:
实现一个简单的JPEG图像编解码过程,省略Z型扫描,DC系数编码,AC系数编码。
1、图像编码:
(1)读入1幅彩色图像
rgb=imread(' ');
(2)RGB转换为YUV,即YCbCr
yuv=rgb2ycbcr(rgb);
(3)将得到的YUV转换为可进行数学运算的double类型,原来为uint8 类型
yuv=double(yuv);
2
(4)分别提取其中的Y,U,V矩阵
y=yuv(:,:,1);
u=yuv(:,:,2);
v=yuv(:,:,3);
(5)设定量化步长
eql=8;
(6)设定块操作时dct矩阵
T = dctmtx(8);
(7)将Y,U,V矩阵分割为8*8 的小块,并对每个小块进行DCT变换
y_dct=blkproc(y,[8,8],'P1*x*P2',T, T');
u_dct=blkproc(u,[8,8],'P1*x*P2',T, T');
v_dct=blkproc(v,[8,8],'P1*x*P2',T, T');
(8)将得到的DCT系数除以量化步长
3
y_dct=y_dct/eql;
u_dct=u_dct/eql;
v_dct=v_dct/eql;
(9)将量化后的系数四舍五入
y_dct_c=fix(y_dct);
u_dct_c=fix(u_dct);
v_dct_c=fix(v_dct);
2、图像解码:
(1)反量化
根据上面的变量编写程序;
(2)进行DCT反变换
根据上面的变量编写程序;
(3)恢复为YUV矩阵,转换为uint8 类型
4
根据上面的变量编写程序;
(4)YUV转换为RGB
rgb1=ycbcr2rgb(yuv);
(5)显示两幅图像
subplot(211),imshow(rgb),title('原始图像');
subplot(212),imshow(rgb1),title('处理后图像');
分析图像压缩前后的变化。
预习要求
数字图像处理中的第6章图像编码;设计程序。
实验报告
整理程序、数据,分析实验结果。
思考题
考虑图像的JPEG编码步骤中减少了哪些冗余。
5
因篇幅问题不能全部显示,请点此查看更多更全内容