导航:首页 > 文件处理 > jpeg压缩编码代码

jpeg压缩编码代码

发布时间:2024-05-21 12:24:50

1. 用java能实现JPEG压缩算法

BufferedImageimage=newBufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(img,0,0,w,h,null);//绘制缩小后的图
FiledestFile=newFile("C:\tmp1.jpg");
FileOutputStreamout=newFileOutputStream("C:\tmp2.jpg");//输出到文件流
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();

2. 有谁知道,JPEG压缩编码算法的主要步骤

JPEG压缩编码算法的主要计算步骤如下:

1.正向离散余弦变换(FDCT)。

2.量化(quantization)。

3.Z字形编码(zigzag scan)。

4.使用差分脉冲编码调制(differential pulse code molation,DPCM)对直流系数(DC)进行编码。

5.使用行程长度编码(run-length encoding,RLE)对交流系数(AC)进行编码。

6.熵编码(entropy coding)。

2. 量化

量化是对经过FDCT变换后的频率系数进行量化。量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目。量化是图像质量下降的最主要原因。

对于有损压缩算法,JPEG算法使用均匀量化器进行量化,量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化值和色差量化值。此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此图中的左上角的量化步距要比右下角的量化步距小。

3. Z字形编排

量化后的系数要重新编排,目的是为了增加连续的“0”系数的个数,就是“0”的游程长度,方法是按照Z字形的式样编排,如图5-17所示。这样就把一个8 ? 8的矩阵变成一个1 ? 64的矢量,频率较低的系数放在矢量的顶部。

4. 直流系数的编码

8 ? 8图像块经过DCT变换之后得到的DC直流系数有两个特点,一是系数的数值比较大,二是相邻8 ? 8图像块的DC系数值变化不大。根据这个特点,JPEG算法使用了差分脉冲调制编码(DPCM)技术,对相邻图像块之间量化DC系数的差值(Delta)进行编码,

Delta=DC(0, 0)k-DC(0, 0)k-1 ........ (5-5)

5. 交流系数的编码

量化AC系数的特点是1 ? 64矢量中包含有许多“0”系数,并且许多“0”是连续的,因此使用非常简单和直观的游程长度编码(RLE)对它们进行编码。

JPEG使用了1个字节的高4位来表示连续“0”的个数,而使用它的低4位来表示编码下一个非“0”系数所需要的位数,跟在它后面的是量化AC系数的数值。

6. 熵编码

使用熵编码还可以对DPCM编码后的直流DC系数和RLE编码后的交流AC系数作进一步的压缩。

在JPEG有损压缩算法中,使用霍夫曼编码器来减少熵。使用霍夫曼编码器的理由是可以使用很简单的查表(lookup table)方法进行编码。压缩数据符号时,霍夫曼编码器对出现频度比较高的符号分配比较短的代码,而对出现频度较低的符号分配比较长的代码。这种可变长度的霍夫曼码表可以事先进行定义。

阅读全文

与jpeg压缩编码代码相关的资料

热点内容
md5磁盘加密 浏览:640
单片机x地址 浏览:208
回车键失灵运行命令如何使用 浏览:984
电脑一键解压缩的软件 浏览:171
怎么关闭手机通讯录对外app 浏览:370
我的世界如何强行进入一个满人的服务器 浏览:653
什么app可以查询会考成绩 浏览:389
程序员能创造的价值 浏览:259
服务器上的redis是什么意思 浏览:379
软件产品经理与程序员 浏览:922
高中生程序员 浏览:892
ps处理pdf 浏览:723
服务器c1什么意思 浏览:222
哈尔滨手机什么app拍违章有奖励 浏览:478
盗贼用什么app最好 浏览:904
51单片机如何测量电导率 浏览:500
移动花卡怎么使用app流量 浏览:556
个税算法2021表格公式解读 浏览:175
怎么进入电脑板2b2t服务器 浏览:286
idea编译进度条 浏览:135