资源描述:
《dct变换编码分块尺寸对图像压缩的影响分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、DCT变换编码分块尺寸对图像压缩的影响分析刘观海(华中师范大学,湖北武汉430079)—、弓I主随着奏i体技术的发展,如何将数据最大限度地压缩已成为图像处理领域的一项重要内容。而基于DCT变换编码的JPEG压缩标准因其压缩性能高、图像恢复效果良好等优势得到了广泛的运用。通常,」PEG采用88、1616尺寸进行图像的分块,一定程度上体现了它在压缩效果上的优越性。MATLAB被广泛应用于信号处理及数据分析,通过在MATLAB环境下的仿真,可以更为直观地探讨出DCT在图像压缩中的应用原理以及分块尺寸对图像压缩的影响。二、理论分析1、静
2、态图像压缩编码JPEG变换编码实质上是一种对信号进行的某种可逆的、线性的变换,即将一种信号空间(如时域)变换到另一种空间(如频域),然后再对信号进行编码。将图像信号从时域变换到频域后,原本比较分散的数据在新的空间中得到集合,对该数据集合进行量化和编码,便可以实现数据的压缩。值得说明的是,变换本身并不能达到数据压缩的作用。基于离散余弦变换(DCT)的静态图像压缩编码JPEG(」ointPictureExpertGroup)标准是一种重要的图像压缩算法,其基本思想是通过二维DCT变换实现信号空间的转换,使原本具有高度相关的时域信号转
3、换为区域集中的频域信号,减少图像数据相关性,以此降低空间冗余。在DCT变换之前需要对源图像进行分块处理,以图像子块为单元进行变换,然后依据量化矩阵对变化系数矩阵进行量化及统计编码,进一步降低了图像的编码冗余。对于图像解码,则先对已编码的量化的系数进行解码,然后求逆量化并利用二维DCT反变换把DCT系数转化为图像子块块,最后将反变换后的块组合成一幅图像。JPEG压缩编码原理如图1所示:块内任一像素经量化形成的误差在逆DCT变换后将分布于整个图像块内,而相邻图像块所产生的这种误差却有所不同,重构图像数据在边界便存在着明显的差异;另外
4、,正交变换在块边界的两侧发生DCT(或IDCT)变换时的计算参数发生了的足兆跃,增加了边界数据的不连续性,在块的边界即产生了•条明显的界限。重构图像在视觉上被后分成了许多小块,即"方块效症"(Blockingeffect)。当分块尺寸増加时,子块边缘数据差异便越大,&觉上块边界越加明显。然而,就产生的子块数目而言,分块尺寸越小,图像所呈现的方块数目越多,方块效应越加明显。通常,随着分块尺寸的増加,算法的复杂度急剧上升,计算复杂度増加。因此,综合分块对压缩各因素的影响,JPEG标准采用了8x8、16x16的子块进行变换。三、仿真实
5、验依据基于DCT变换的」PEG压缩原理,在MATLAB环境下模拟实现Lena.bmp灰度图像(大小为512x512)的压缩。改变分块尺寸为2n(n=l,27),就分块大小对压缩效果的影响加以比较性的数据分析与理论验证。在MATLAB中,使用语句:blkproc(f,[NN],@dct2)实现图像的分块与子图像块的DCT变换;量化过程中,为了减少量化对数据分析产生的干扰,变换系数F(u,v)矩阵采用多次门限取样的方法逬行量化编码,若设定门限阈值为A,则令AEABSDCTttWrJM(a)DCT善吒鳍汐獨dnrxi图1基于DCT变换
6、的JPEG压缩解压缩原理JPEG压缩的核心是子图像块的离散余弦变换,它实现夸一个8x8(或16x16)大小的二维数组转换成为另一个同样是8x8(或16x16)的二维数组。若定义f(ij)为子图像块相列%像素值,F(u,v)为DCT变换后矩阵u行v列的系数值。那DCT公式为,(“r(u,v)={o
7、F^^l>AffSFA(u,v)=Interge(Round(F(u,v)/r(u,v)));其中,F(u,v1%变换后系数矩阵,P(u,v)为量化后系数矩阵。采用“之以字形扫描法对其一维转换并实现行程编码,存储编码后数据。使用语句bl
8、kproc(FA(u,v),[NN],@idct2)对量化后矩阵进行DCT反变换,彳<到解压缩图像。改变门限阈值,重复上述仿真实验,得到分块大小对图像压缩性能、解压缩图像保真效果的影响结果。1、分块对压缩性能的影响分析压缩比(compressratio)S俞S图像压缩性能的一项重要参数,设源图像数据最为D,图像经过景化编码后数据存储量为d,则压缩比CR=D/d;仿真实验得到不同分块情况下的压缩性能结果,如表1及图表1.1所示:(2*♦_TP♦1)、,:ICOR2NIDCT公式为云c⑻⑽其中,C(u),C(v)=,/為,当u,v^
9、r;C(u),C(vpl,其他/h为像块的水平或垂直大小,为2的整数次冪。JPEG标准采用线性均匀量化器,量化过程为对64个DCT系数除以量化步长并取整,对于DC系数采用DPCM编码,AC系数则采用行程编码;然后再进行熵编码,数据在量化编码后得到了大大的压缩。2