基于JPG标准的图像压缩

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
资料介绍:
摘要
本论文主要介绍了JPEG的编码和解码过程。该程序的编码部分能把一张BMP格式的图象进行JEPG编码,压缩成以二进制形式保存的文件;通过相应的解码程序又可以把图象解压缩出来。在图象传送过程中,我们经常采用JPEG格式对静态图象进行编码。JPEG基本系统是一种有损编码,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。尽管我们希望能够无损压缩,但是通常有损压缩的压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压缩的高。JPEG编码先把图象色彩RBG变成亮度Y和色度Cr、Cb,它利用人的视觉对色度不敏感的特点,减少一部分色度数据,以达到压缩。
JPEG采取多种编码方式,包含有行程编码(Run
Length Coding)和哈夫曼(Huffman)编码,有很高的压缩比。在编码前,先对数据进行分块,离散余弦变换(DCT)及量化,保留能量大的低频信号,丢弃高频信号以达到压缩。解码时,进行熵解码,反量化,反离散余弦变换(IDCT)。
关键字:JPEG;有损压缩;行程编码;哈夫曼编码 ?
v:* {behavior:url(#default#VML);}
o:* {behavior:url(#default#VML);}
w:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
?1、主要设计研究内容及关键技术
JPEG压缩格式是目前图像处理领域里面用得最广泛的一种图像压缩方式,本毕业设计将进行就JPEG标准对图像进行编、解码的研究。主要内容包括:
1.从BMP格式图像的文件中(未压缩)读出图像,并能显示。
??? ?2.将BMP图像数据以JPEG标准压缩,保存为*.JPG文件。
3.要求能读出jpg文件,并显示在界面上
其中,JPEG的压缩实现主要分成四个步骤:
??? 1.颜色模式转换及采样;
??? 2.DCT变换(离散余弦变换);
3.量化;
4.编码(有算术编码和霍夫曼编码两种,这里采用霍夫曼编码)。
一、颜色转换及采样
1.颜色转换:对BMP图像中的颜色数据进行由RGB一YCbCr的转换,Y表示亮度,Cb Cr分别表示蓝色度和红色度。转换公式:
Y=0.2990R+0.5870G+0.1140B
Cb=-0.1687R-0.3313G+0.5000B
Cr=0.5000R-0.4187G-0.0813B
这样转换以后就得到三个新的基色值,对这三个基色值来讲,都可以当作一个独立的图像平面来进行压缩编码。
2.采样:颜色转换后,保留每一点的亮度值Y,而色度值Cb Cr则是每两点保留一点,在图像的行和列方向上都可执行颜色采样。如果采用的是1:1:1的采样比例,不用抽样。若采用的采样比是行列方向都是2:1:1,在行方向,每两点保留一点,列方向也是每两点保留一点,这样如果假设原来的CbCr矩阵大小为M*S,则经过2:1:1抽样之后成了M/2*s/2=1/4M*S,只有原来的1/4了,图像大大缩小,如果想减小图像的失真度,则可行方向不抽样或列方向不抽样。
二、二维DCT变换
??? 二维DCT变换公式为:
F(u,v)=
??? 其中x,y代表图像数据矩阵中的某个数据值的坐标位置
??? f(x,y)指图像数据矩阵中该点的资料值
??? u,v指经过DCT变换后矩阵中的某数值点的坐标位置,在这里u=x,v=y
??? F(u,v)指经过DCT变换后该坐标点的资料值。
??? 当u=0,v=0时,C(u)C(v)=1.414/2
??? 当u>0,v>0时,C(u)C(v)=1,经过变换后的资料值F(u,v)称为频率系数(或
称DFT系数)。
三、量化
量化过程实质上是把亮度数据Y和色度数据Cb/Cr由时域转变成频域(DCT变换)并滤除高频分量的过程,由于人眼对高频分量不敏感,所以可以滤除高频分量,经过量化以后的每一个8*8数据块中,左上角第一个元素数据值为直流分量,称为DC,其余63个资料为交流分量,称为AC。
四、游程编码,ZIGZAG扫描
经过量化后的DCT系数矩阵,除DC值一般不为零外,AC系数大多是在零点附近的浮点数。经过取整以后,每一个8*8块中,有大量的AC系数的值为0。为了把尽可能多的其值为0的AC系数串在一起,以利于AC编码及提高压缩比,还必须把YCbCr矩阵中的每一个8*8块中的64个元素进行“之”字形排序(这样就可以做到把尽可能多的0串在一起)。