图像jpeg及MATLAB仿真

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《电视技术》三级项目基于MATLAB的JPEG压缩算法实现成员:赵勐130104020008刘帅130104020016董智锐120104020028班级:13级电子信息一班指导教师:侯春良燕山大学2016年7月1摘要现代社会,随着计算机网络、多媒体技术的发展,出现了信息大爆炸的现象。这就对图像处理技术要求越来越高。在几种有损和无损编码中,图像编码长期以来主要利用离散余弦变换(DCT)作为主要技术。本项目用Matlab实现对JPEG算法的仿真。关键词:MatlabJPEG压缩算法离散余弦变换前言本项目主要目的是了解学习图像压缩方法,学习JPEG算法的基本原理,并通过使用Matlab更加深入直观了解图像压缩过程以及掌握Matlab编程。JPEG算法包括基于空间预测(DPCM)的无损压缩和基于DCT的有损压缩算法正文1、图像压缩方法研究的背景及意义数字化到来使得数字图像技术得到广泛应用。相应的也使得数字图像技术得到不断的进步。在多媒体计算机系统、电子出版、视频会议、数字化图书馆等许多领域,数字图像都有着广泛的应用。但是越来越多的数据存贮、传送,巨大的信息量催生了图像编码理论,并且迅速发展。例如:从图像存储角度来说,一幅512*512像素8bit/pixel的黑白图像占256KB;一幅512*512像素8bit/pixel的彩色图像则占3*256KB;播放一小时的数字视频图像要占大约22G字节的空间,更别说现在超清蓝光视频了。从传输角度来看,压缩技术可以帮助减少传输所需带宽。因此图像数据十分必要。图像编码,即图像压缩,就是在保证一定重构质量的前提下,通过除去图像中的冗余尽量减少比特数来表征图像信息。传统的图像编码是以香农信息论为出发点,用概率论模型来描述信源,但是他没有考虑到接受者的主观性、图像信息具体含义和重要程度,JPEG、MPEG等就是由此产生。而新一代的基于内容的图像编码方法则补充了前者的缺陷。其中代表为小波变换。小波变化也从一开始的利用频率压缩特性发展到如今空间压缩特性。2、算法选择现今的图像压缩算法有:huffman编码,行程编码,预测编码,LZW编码,小波变换。(1)Huffman编码Huffman编码是无损编码的一种,是一种基于统计特性的可变长的编码方法。特点:对于出现概率大的符号编码成短字长的编码,对于概率小的符号,编以较长的编码。如果码字长严格按照所对应符号出现概率逆顺序排列,则平均码长一定小于其他任何符号顺序方式,这是一种最接近熵值的“最佳编码”。优点:简单易行;缺点:解码时必须知道所使用的码表,这给存储和通信带来不便;它还依赖于原始数据的概率,这在实际应用中受到许多限制。(2)行程编码(RLE)特点:在给定的图像数据中寻找连续重复的数值,然后用两个字符值取代这些连续值。2优缺点:处理包含大量重复信息时可以得到很好的压缩效率,但在连续重复数据少时效果差。(3)预测编码特点:根据过去已编码的像素来预测当前的像素值(预测值),然后对当前的像素值与预测值之间进行编码,亦称之差分编码。优点:可以用很少的比特表示一个差值,达到数据压缩的目的。缺点:抗御误码能力差。若有一个错码,会扩散到图像一个较大的区域。(4)LZW压缩算法特点:采用先进的串码压缩,将每个第一次出现的串放在一个串表中,用一个数字来表示串,压缩文件只存储数字,不存储串,提高图像的压缩率。优点:对连续出现的相同字符组成的字符串进行压缩,而且可以对经常出现的由不同字符组成的字符串进行压缩,所以在压缩处理不同值数据串方面,LZW优于RLE。缺点:有随机噪声图像很难压缩。(5)小波变换特点:它能将图像分解成交织在一起的多种尺度成分,并对不同的尺度成分采用对应粗细的时域或空域取样步长,对高频信号采用细处理,对低频信号采用粗处理,因此可以不断聚焦到对象的任意微小细节,优于傅里叶变换和盖博变换。优点:图像压缩比高,压缩速度快。缺点:冗余度大,降噪预处理的重构图像会失去其时域特征。综上所述:我们组选择了前三组算法研究,主要考虑到编程实现方便。3、图像压缩方法的基本理论JPEG是一个适用范围很广的静态图像数据压缩标准,既可用于灰度图像又可用于彩色图像。JPEG算法中首先对图像进行分块处理,在对每一快进行二维离散余弦变换,变换后的系数基本不相关,且系数矩阵的能量集中在低频区,通过保留低频区部分系数,去掉高频区的部分,从而达到压缩目的,余弦变换时经典谱分析的工具,它考察的是整个时域过程中的频域特性,或者整个频域过程中的时域特性,该算法具有较强的块内去相关的能力,适于较平坦的压缩,它的特点是没有利用图像中局域间的相关特性,在压缩倍数高时,恢复图像出现明显的方块效应。JPEG专家组开发了两种基本的压缩算法,一种是采用以离散余弦变换为基础的有损压缩算法,另一种是采用以预测技术为基础的无损压缩算法。使用有损压缩算法时,在压缩比为25:1的情况下,压缩后还原得到的图像与原始图像相比较,非图像专家难于找出它们之间的区别,因此得到了广泛的应用。例如,在DVD-Video电视图像压缩技术中,就使用JPEG的有损压缩算法来取消空间方向上的冗余数据。为了在保证图像质量的前提下进一步提高压缩比.JPEG压缩是有损压缩,它利用了人的视角系统的特性,使用量化和无损压缩编码相结3合来去掉视角的冗余信息和数据本身的冗余信息。JPEG压缩编码步骤:1.颜色模式转换2.采样3.分块4.离散余弦变换(DCT)5.Z型扫描6.量化7.DC系数的差分脉冲编码8.DC系数的中间格式转换9.AC系数游程编码10.AC系数中间格式转换11.熵编码JPEG算法处理的彩色图像是单独的彩色分量图像,因此它可以压缩来自不同彩色空间的数据,如RGB,YCbCr和CMYK。所以彩色图像要经过灰度变换才能进行压缩。步骤详细分析1、颜色模式转换JPEG采用的是YCrCb颜色空间。YCrCb颜色空间中,Y代表亮度,Cr,Cb则代表色度和饱和度,三者通常以Y,U,V来表示,即用U代表Cb,用V代表Cr。RGB和YCrCb之间的转换关系如下所示:Y=0.299R+0.587G+0.114BCb=-0.1687R-0.3313G+0.5B+128Cr=0.5R=0.418G-0.0813B+128一般来说,C值应该是一个有符号的数字,但这里通过加上128,使其变为8位的无符号整数,从而方便数据的存储和计算。R=Y+1.402(Cr-128)G=Y-0.34414(Cb-128)-0.71414(Cr-128)B=Y+1.772(Cb-128)2、采样研究发现,人眼对亮度变换的敏感度要比对色彩变换的敏感度高出很多。因此,我们可以认为Y分量要比Cb,Cr分量重要的多。在JPEG图片中,通常采用两种采样方式:YUV411和YUV422,它们所代表的意义是Y,Cb,Cr三个分量的数据取样比例一般是4:1:1或者4:2:2。4:1:1含义就是:在2x2的单元中,本应分别有4个Y,4个U,4个V值,用12个字节进行存储。经过4:1:1采样处理后,每个单元中的值分别有4个Y、1个U、1个V,只要用6个字节就可以存储了。这样的采样方式,虽然损失了一定的精度但也在人眼不太察觉到的范围内减小了数据的存储量,图像从这一步开始有一定的失真。3、分块由于后面的DCT变换是是对8x8的子块进行处理的,因此,在进行DCT变换之前必须把源图象数据进行分块。源图象中每点的3个分量是交替出现的,先要把这3个分量分开,存放到3张表中去。然后由左及右,由上到下依次读取8x8的子块,存放在长度为64的表中,即可以进行DCT变换。说明:编码时,程序从源数据中读取一个8x8的数据块后,进行DCT变换,量化,编码,然后再读取、处理下一个8*8的数据块。JPEG编码是以每8x8个点为一个单位进行处理的.所以如果原始图片的长宽不是8的4倍数,都需要先补成8的倍数,使其可以进行一块块的处理。将原始图像数据分为8*8的数据单元矩阵之后,还必须将每个数值减去128,然后一一带入DCT变换公式,即可达到DCT变换的目的。图像的数据值必须减去128,是因为DCT公式所接受的数字范围是-128到127之间。4、离散余弦变换DCT(DiscreteCosineTransform,离散余弦变换),是码率压缩中常用的一种变换编码方法。DCT是先将整体图像分成N*N的像素块,然后针对N*N的像素块逐一进行DCT操作。说明:JPEG的编码过程需要进行正向离散余弦变换,而解码过程则需要反向离散余弦变换。二维正向离散余弦变换计算公式:二维逆向离散余弦变换计算公式:N为水平、垂直方向的像素数目,一般取值为8。8*8的二维像素块经过DCT操作之后,就得到了8*8的变换系数矩阵。这些系数,都有具体的物理含义。例如,U=0,V=0时的F(0,0)是原来的64个数据的均值,相当于直流分量。随着U,V的增加,相另外的63个系数则代表了水平空间频率和垂直空间频率分量(高频分量)的大小,多半是一些接近于0的正负浮点数,称之为交流系数AC。DCT变换后的8*8的系数矩阵中,低频分量集中在矩阵的左上角。高频成分则集中在右下角。有图可见图像信号被分解为直流成分和一些从低频到高频的各种余弦成分。而DCT系数只表示了该种成分所占原图像信号的份额大小。恢复图像信息可以表示为F(n)=C(n)*E(n),5这里,E(n)是一个基底,C(n)是DCT系数,F(n)则是图像信号;如果考虑垂直方向的变化,那就需要一个二维的基底。大多数图像的高频分量比较小,相应的图像高频分量的DCT系数经常接近于0,再加上高频分量中只包含了图像的细微的细节变化信息,而人眼对这种高频成分的失真不太敏感,所以,可以忽略这些高频成分,从而降低传输的数据量。所以,传送DCT变换系数的所需要的编码长度要远远小于传送图像像素的编码长度。到达接收端之后通过反离散余弦变换就可以得到原来的数据,虽然这么做有一定的失真,但人眼是可接受的,而且对这种微小的变换是不敏感的。5、Z型扫描DCT将一个8x8的数组变换成另一个8x8的数组.但是内存里所有数据都是线形存放的,如果我们一行行的存放这64个数字,每行的结尾的点和下行开始的点就不相干,所以规定JPEG按如下图中的数字顺序依次保存和读取64个DCT的系数值。0156141527282471316262942381217253041439111824314044531019233239455254202233384651556021343747505659613536484957586263这样数列里的相邻点在图片上也是相邻的了。不难发现,这种数据的扫描、保存、读取方式,是从8*8矩阵的左上角开始,按照英文字母Z的形状进行扫描的,如下图所示:6、量化图像数据转换为DCT频率系数之后,还要进行量化,才能进入编码。量化阶段需要两个8*8量化矩阵数据,一个是专门处理亮度的频率系数,另一个则是针对色度的频率系数,将频率系数除以量化矩阵的值之后取整,即完成了量化过程。当频率系数经过量化之后,将频率系数由浮点数转变为整数,这才便于执行最后的编码。因此,经过量化之后,所有的数据只保留了整数近似值,也就再度损失了一些数据内容。在JPEG算法中,由于对亮度和色度的精度要求不同,分别对亮度和色度采用不同的量化表。前者细量化,后者粗量化。6这两张表依据心理视觉阀制作,对8bit的亮度和色度的图象的处理效果不错。量化表是控制JPEG压缩比的关键,这个步骤除掉了一些高频量,损失了很多细节信息。但事实上人眼对高频信号的敏感度远没有低频信号那么敏感。所以处理后的视觉损失很小,从上面的量化表也可以看出,低频部分采用了相对较短的量化步长,而高频部分则采用了相对较长的量化步长,这样做,也是为了在一定程度上得到相对清晰的图像和更高的压缩率。另一个重要原因是所有的图片的点与点之间会有一个色彩过渡的过程,而大量的图象信息被包含在低频率空间中,经过DCT处理后,在高频率部分,将出现大量连续的零。7、DC系数的差分脉冲调制编码8*8的图像块经过DCT变换之后得到的DC系数有两个

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功