数字图像的冗余包括空间冗余、结构冗余、知识冗余和视觉冗余等。空间冗余是指规则物体和规则背景的表面物理特性都具有相关性,数字化后表现为数字冗余。例如:某图片的画面中有一个规则物体,其表面颜色均匀,各部分的亮度、饱和度相近,把该图片作数字化处理,生成位图后,很大数量的相邻像素的数据是完全一样或十分接近的,完全一样的数据当然可以压缩,而十分接近的数据也可以压缩,因为恢复后人亦分辨不出它与原图有什么区别,这种压缩就是对空间冗余的压缩。再比如视觉冗余,视觉系统对于图像场的注意是非均匀和非线性的,视觉系统不是对图像的任何变化都能感知,因此对图像进行压缩后人眼也并不会非常敏锐地察觉画面内容有所删减。所谓的图像压缩编码技术就是对要处理的图像数据按一定的规则进行变换和组合,从而达到以尽可能少的数据流(代码)来表示尽可能多的数据信息。在众多的图像压缩编码标准中,JPEG(JointPhotographicExpertsGroup)格式是一种称为联合图像专家组的图像压缩格式,它适用于不同类型、不同分辨率的彩色和黑白静止图像。而在JPEG图像压缩算法中,有一种是以离散余弦变换(DCT,DiscreteCosineTransform)为基础的有损压缩算法,是为本论文的主要研究对象。DCT变换利用傅立叶变换的性质。采用图像边界褶翻将像变换为偶函数形式,然后对图像进行二维傅立叶变换,变换后仅包含余弦项,所以称之为离散余弦变换。DCT编码属于正交变换编码方式,用于去除图像数据的空间冗余。变换编码就是将图像光强矩阵(时域信号)变换到系数空间(频域信号)上进行处理的方法。在空间上具有强相关的信号,反映在频域上是在某些特定的区域内能量常常被集中在一起,或者是系数矩阵的分布具有某些规律。我们可以利用这些规律在频域上减少量化比特数,达到压缩的目的。图像经DCT变换以后,DCT系数之间的相关性就会变小。而且大部分能量集中在少数的系数上,因此,DCT变换在图像压缩中非常有用,是有损图像压缩国际标准JPEG的核心。从原理上讲可以对整幅图像进行DCT变换,但由于图像各部位上细节的丰富程度不同,这种整体处理的方式效果不好。为此,发送者首先将输入图像分解为8*8或16*16块,然后再对每个图像块进行二维DCT变换,接着再对DCT系数进行量化、编码和传输;接收者通过对量化的DCT系数进行解码,并对每个图像块进行的二维DCT反变换。最后将操作完成后所有的块拼接起来构成一幅单一的图像。对于一般的图像而言,大多数DCT系数值都接近于0,所以去掉这些系数不会对重建图像的质量产生较大影响。因此,利用DCT进行图像压缩确实可以节约大量的存储空间。在实验中,先将输入的原始图像分为8*8块,然后再对每个块进行二维DCT变换。1.1.1DCT编码DCT编码属于正交变换编码。这类算法通常是将空间域上的图像经过正交变换映射到系数空间,使变换后的系数直接相关性降低。图像变换本身并不能压缩数据,但变换后图像大部分能量集中到了少数几个变换系数上,再采用适当的量化和熵编码便可以有效地压缩图像。信息论的研究表明,正交变换不改变信源的熵值,变换前后图像的信息量并无损失,完全可以通过反变换得到原来的图像值。但图像经过正交变换后,把原来分散在原空间的图像数据在新的坐标空间中得到集中,对于大多数图像而言,大量的变换系数很小,只要删除接近于0的系数,并对较小的系数进行粗量化,而保留包含图像主要信息的系数,以此进行压缩编码。在重建图像进行解码(逆变换)时,所损失的将是些不重要的信息,几乎不会引起图像失真,图像的变换编码就是利用这些来压缩图像并得到很高的压缩比。由于图像可看成二维数据矩阵,所以在图像编码中多采用二维正交变换方式,然而其正交变换的计算量太大,所以在实用中变换编码并不是对整幅图像进行变换和编码,而是将图像分成若干个n×n的子图像分别处理。这是因为小块图像的变换计算比较容易,而且距离较远的像素之间的相关性比距离较近的像素之间的相关性要小。实践证明4×4、8×8、16×16适合图像压缩,这是因为:①如果子图像尺寸取得太小,虽然计算速度快,实现简单,但压缩能力有限;②如果子图像尺寸取得太大,虽然去相关效果好,因为DCT等正弦类变换均渐近最佳化,同时也渐近饱和,犹豫图像本身的相关性很小,反而使得压缩效果不明显,并且增加了计算的复杂度。1.1.2变换系数的选择对子图像经过变换后,保留变换后的哪些系数用作编码和传输将直接影响信号恢复的质量,变换系数的选择原则是保留能量集中、方差大的系数。系数选择通常有变换变换区域编码和变换阈值编码两种方法。1)变换区域编码变换区域编码是对设定形状的区域内的变换系数进行量化编码区域外的系数被舍去。一般来说,变换后的系数值较大的会集中在区域的左上部,即低频分量都集中在左上部。保留的也是这一部分。其他部分的系数被舍去,在恢复信号时对它们补0。这样以来,由于保留了大部分图像信号能量,在恢复信号后,其质量不会产生显著变化。变换区域编码的明显缺陷是高频分量完全丢失。反应在恢复图像上将是轮廓及细节模糊。为克服这一缺陷,可预先设定几个区域,根据实际系数分布自动选取能力最大的区域。2)变换阈值编码变换阈值编码是根据实际情况设定某一大小幅度的阈值,若变换系数超过该阈值,则保留这些系数进行编码传输,其余补0.这样,多数低频成分被编码输出,而且少数超过阈值的高频成分也将被保留下来进行编码输出。这在一定程度上弥补了区域变换法的不足。但也有两个问题需要解决:一是被保留下来的系数在矩阵中的位置不是不确定的,因此需增加地质编码比特数,其码率相对要高一些;二是阈值需要通过实验来确定,当然也可以根据总比特数进行自适应阈值选择,但需要一定技术,将增加编码的复杂程度。1.1.3基于DCT编码的JPEG编码压缩基于DCT编码的JPEG编码压缩过程框图,如图2-1所示。图图22--11基基于于DDCCTT编编码码的的JJPPEEGG压压缩缩过过程程简简化化图图压缩数据原始图像数据分成8*8的小块量化器DCT变换熵编码器码表量化表上图是基于DCT变换的图像压缩编码的压缩过程,解压缩与上图的过程相反。在编码过程中,首先将输入图像分解为8×8大小的数据块,然后用正向二维DCT把每个块转变成64个DCT系数值,其中左上角第一个数值是直流(DC)系数,即8×8空域图像子块的平均值,其余的63个是交流(AC)系数,接下来对DCT系数进行量化,最后将变换得到的量化的DCT系数进行编码和传送,这样就完成了图像的压缩过程。在解码过程中,形成压缩后的图像格式,先对已编码的量子化的DCT系数进行解码,然后求逆量化并把DCT系数转化为8×8样本像块(使用二维DCT反变换),最后将操作完成后的块组合成一个单一的图像。这样就完成了图像的解压过程。1.2二维离散余弦变换图像数据压缩的目的是在满足一定图像质量的条件下,用尽可能少的比特数来表示原始图像,以提高图像传输的效率和减少图像存储的容量,在信息论中称为信源编码。图像压缩是通过删除图像数据中冗余的或者不必要的部分来减小图像数据量的技术,压缩过程就是编码过程,解压缩过程就是解码过程。假设有一个无记忆的信源,它产生的消息为ia,1iN,其出现的概率是已知的,记为iPa。则其信息量定义为:2logiiIaPa(2-1)由此可见一个消息出现的可能性越小,其信息量就越多,其出现对信息的贡献量越大,反之亦然。信源的平均信息量称为“熵”entropy,可以表示为:11logNNiiiiiiHPaIPaPaPa(2-2)对上式取以2为底的对数时,单位为比特(bits):21logNiiiHPaPa(2-3)在图像压缩中,压缩比是一个重要的衡量指标。可以定义压缩比为:C=原始数据的平均比特率(B)/压缩数据的平均比特率(H)DCT变换后系数的量化是引起失真的主要原因,压缩效果与图像内容本身有较大的关系。在傅里叶级数展开式中,如果被展开的函数是实偶函数,那么,其傅里叶技术中只包含余弦项,在将其离散化由此可导出余弦变换,或称之为离散余弦变换(DCT,DiscreteCosineTransform)。vNyuNxyxfNvcucvuFNyNx212cos212cos,2,1010(2-4)式中,1,,1,0,,,Nvuyx。其它10,021)()(vuvcuc二维离散余弦逆变换公式为vNyuNxvuFvcucNyxfNvNu212cos212cos,2,1010(2-5)式中,1,,1,0,,,Nvuyx。其它10,021)()(vuvcucJPEG采用的是8×8大小的子块的二维离散余弦变换。在编码器的输入端,把原始图像顺序地分割成一系列8×8的子块,子块的数值在-128到127之间。采用余弦变换获得64个变换系数。变换公式,如式(2-6)所示。770012121,,coscos41616xyxyFuvcucvfxyuv(2-6)式中,7,,1,0,,,vuyx。其它10,021)()(vuvcuc在MATLAB仿真实现中,主要是采用二维DCT变换的矩阵式定义来实现的,矩阵式定义可以表示为:(,)(,),(,)(,)TTFuvAFuvAfxyAfxyA(2-7)其中(,)fxy是空间数据阵列,(,)Fuv是变换系数阵列,A是变换矩阵,TA是A的转置。ThebasisfunctionsoftheDCTof64X64anImage1.2.1DCT系数的量化量化是对经过DCT变换后的频率系数进行量化,其目的是减小非“0”系数的幅度以及增加“0”值系数的数目,它是图像质量下降的最主要原因。量化过程定义了一种从实数到整数映射的方法,它是通过降低DCT变换产生的数值结果的精确度,来减少存储变换后的系数需要的比特数。定义量化公式为:(,)(,)int(,)FuvKuvQuv(2-8)其中,(,)Fuv为量化前的DCT系数,(,)Kuv为量化后的DCT系数,而(,)Quv为量化步长,int表示取整。对于基于DCT的JPEG图像压缩编码算法,量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。因为人眼对亮度信号比对色差信号更敏感,因此使用了表2-1所示的量化表。此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小。亮度和色度因为代表的图像的信息量不同,亮度代表了图像的低频分量,色度代表了图像的高频分量,要分别对亮度和色度进行量化,所以量化表也是不同的。量化就是用DCT变换后的系数除以量化表中想对应的量化阶后四舍五入取整。由于量化表中,左上角的数值比较小,而右下角的数值比较大,因而能够起到保持低频分量,抑制高频分量的作用。JPEG压缩色度和亮度量化表如表2-1所示。表2-1JPEG压缩色度和亮度量化表亮度量化表色度量化表116611111100116622444400551166111177118822444477999999999999999911221122114411992266558866005555118822112266666699999999999999991144113311662244440055776699556622442266556699999999999999999999114411772222229955118877880066224477666699999999999999999999999911882222337755666688110099110033777799999999999999999999999999999999224433555555664488