JPEG图像的编解码实现

JPEG图像的编解码实现
JPEG图像的编解码实现

毕业论文论文题目(中文)JPEG图像的编解码实现

论文题目(外文)Encoding and decoding of JPEG image

摘要

JPEG是一种十分先进的图像压缩技术,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像。本文设计和实现一个JPEG图像编解码器来进行图像转换,利用离散余弦变换、熵编码、Huffman编码等图像压缩技术将BMP图像转换成JPEG图像,即进行图像的压缩。验证JPEG压缩编码算法的可行性。通过比对图像压缩前后实际效果,探讨压缩比,峰值信噪比等评价图像数据压缩程度及压缩质量的关键参数,对JPEG 压缩编码算法的实用性和优越性进行研究。

关键词:JPEG;编码;解码;图像压缩

Abstract

JPEG is a very advanced image compression technology, it uses lossy compression to remove redundant image data, in obtaining a very high compression rate can show a very rich and vivid image. In this project, a JPEG image codec is designed and implemented to transform image, using discrete cosine transform, entropy coding, Huffman coding and other image compression techniques to convert BMP images into JPEG images. Verifies the feasibility of JPEG compression coding algorithm. Through the comparison of the actual effect of image compression, the key parameters of compression ratio, peak Snr, and the compression quality of image data are discussed, and the practicability and superiority of JPEG compression coding algorithm are researched.

Key words: JPEG; encoding; decoding; image compression

目录

摘要................................................................................................................................................................ I I Abstract .......................................................................................................................................................... III 目录............................................................................................................................................................ IV 第一章绪论.. (1)

第二章JPEG图像编码压缩原理 (3)

第三章实验过程与结论 (10)

致谢 (14)

第一章绪 论

1.1研究背景和意义

在如今这个信息化社会里,计算机网络飞速发展,信息交流成为了人们生活中必不可少的部分,近年来随着自媒体的兴起,大量的信息更是充斥着人们的日常生活,而图像作为日常信息交流中最常用的信息传递媒介之一,充满着各个信息平台和设备终端。

随着生活节奏的加快,人们对信息交流的质量和速度也有着越来越高的要求,但是由于图像和视频本身的数据量非常大,给存储和传输带来了很多不便,尤其在网络中传递图形图像时对传输速度有着很高的要求,这就使得图像压缩和视频压缩成为网络技术中的基础性技术。所以图像压缩和视频压缩得到了非常广泛的应用。

图像压缩是一种减少描绘一幅图像所需数据量的技术和科学,它是数字图像处理领域中最有用和商业上最成功的技术之一。每天被压缩和解压缩的图像的数量是惊人的。

为了理解图像压缩的需要,考虑使用720×480×24比特像素阵列来描绘2小时的标准清晰度(SD )电视电影所需的数据量。数字电影是由一帧一帧的全彩色静止图像排列起来而组成的,为了能让人眼感觉到流畅的视频画面,视频播放时必须以30帧每秒的速率连续地显示这些帧,因此必须以

()30720480331104000/???=帧像素字节字节秒秒帧像素

的速率读取SD 数字电影数据。可以计算得2小时电影的数据量为

()21131104000602 2.2410??≈?字节秒小时字节秒小时

假设用传统的12cm ,容量为8.5GB 双层光盘的话,这么多的数据需要27张才能存储完。这很明显是不现实的,所以为了能把这部2小时的电影存放在单张光盘上,视频的每一帧应该以平均26.3的系数进行压缩。

除此之外,为了减少存储空间和传输时间,网页图像和高分辨率数字摄像机图片也需要进行数据压缩。例如,利用宽带发送数据的速率为12Mbps (兆比特每秒)。以该速率传输一幅128×128×24比特全彩色小图像需要的时间为0.03秒。而经过压缩后再传输,这个时间可以减少2~10倍,甚至更多。同理,考虑大小为

1GB的闪存卡中可存储的8兆像素数字摄像机所拍摄的未压缩全彩色照片数量约为41幅(每幅约24MB),而经过压缩后,该数量也以2~10倍的数量增加。除了这些应用外,图像压缩在视频会议、遥感、文本和医学图像处理、传真传输等诸多领域也扮演者重要的角色。

1.2 发展历史与现状

JPEG的全称为Joint Photographic Experts Group(联合照片专家小组),它是一个在国际标准组织(ISO)下从事静态图像压缩标准制定的委员会。它是CCITT 于1992年正式通过的用来处理连续色调静止图象的压缩标准。JPEG既可以进行有损压缩,也可以进行无损压缩,最常见也最常用的就是有损压缩的方法,其压缩过程可分为颜色模式转换及采样、DCT变换、量化、编码等几部分。联合照片专家小组制定出了第一套国标静态图像压缩标准:ISO 10918-1,也就是我们俗称的JPEG。因为JPEG压缩编码拥有数据量小且兼容性好的优良品质,所以它在短短的几年内就获得了巨大的成功,目前网络媒体上大约百分之八十的图形图像都采用的是JPEG压缩标准。也正是由于JPEG格式可以对扫描或自然图像进行大幅度的压缩,使它成为迅速显示图像并保存较好分辨率的理想格式,这样利于存储和传输,所以在Internet上得到了广泛的应用。

随后,在诸多媒体应用领域的大量激增下,原始JPEG压缩技术已经不能满足人们对多媒体图形图像资料的要求。在此条件下,催生了更高压缩率以及更多新功能的新一代静态图像压缩技术——JPEG 2000。JPEG 2000同样是由JPEG组织负责制定的,命名为“ISO 15444”。该小组自1997年三月开始筹划,经过三年的艰苦努力,终于在2000年3月东京的一个会议上,提前出台了规定基本编码系统的最终协议草案。这比人们预计2000年12月才能制定完成要早,没有出现人们担心的改名为JPEG2001的情况。

近年来,有关图像编码技术对的研究也成果百出,图像编码技术已经发展到一种很成熟的状态,人们开始突破了传统的信源编码理论,开发出了小波变换编码、分形理论、人工神经网络理论以及视觉仿真理论,这些编码技术的特点是:充分考虑了人的视觉特性,使用了人工神经元网络的压缩编码技术。这些现代编码技术的出现与发展推动着图像编码技术走向繁荣。

1.3课题研究目标和内容

本课题对图像压缩编码的相关基础理论与技术进行学习研究,对BMP和JPEG两种图像文件格式也做针对性的理解和认识,在此基础上进行JPEG图像压缩编码算法的研究,结合实际情况,探索高效的JPEG图像编解码方法,从而在一定意义上实现图形的压缩编码和解码处理,程序采用C++环境,对图像压缩算法进行实现,并能做出一个可视化界面来处理图片,从而能更好地实现两种格式之间的转换,最后通过计算压缩比和峰值信噪比进行算法性能的分析比较。

本课题的研究内容包括:图形图像压缩编码原理技术,BMP、JPEG的图像格式,JPEG图像的压缩编码算法,C++编程环境实现图像处理,matlab工具计算峰值信噪比。实现BMP和JPEG图像文件的相互转换,同时研究图像压缩处理算法,对图像处理的未来进行探讨与展望。

第二章JPEG图像编码压缩原理

2.1图像编码方法

JPEG专家组研究和开发了两种基本的压缩算法、两种熵编码方法、四种编码模式来实现JPEG图像的编解码。如下所示:

压缩算法:

(1)有损的离散余弦变换DCT

(2)无损的预测压缩技术;

熵编码方法:

(1)Huffman编码;

(2)算术编码;

编码模式:

(1)基于DCT的顺序模式:通过一次扫描完成编解码;

(2)基于DCT的渐进模式:编码、解码需要经过多次扫描才能完成,扫描程度从粗略到精细,逐级递增;

(3)无损模式:基于DPCM,这种方法保证解码后图像能完全并精确地恢复到原图采样值;

(4)层次模式:图像编码在多个空间分辨率中进行,并可以选择放弃高分辨率信息,只对低分辨率数据做解码;

由于在实际应用中JPEG 图像的编码算法大多使用的是离散余弦变换、Huffman 编码、顺序编码的模式,因此这样的方式也被人们称为JPEG 图像压缩的基本系统。

2.2 JPEG 压缩步骤

JPEG 压缩是有信息损失的,它的基本原理是针对人的视角系统的某种特性,采用量化以及无损压缩编码相结合的方式,消除视角的冗余信息,并去掉数据本身的冗余信息。如下所列的是JPEG 压缩编码算法的主要计算步骤:

(1)色彩模式转换及采样

(2)离散余弦变换

(3)量化

(4)Z 字形编排

(5)直流系数编码

(6)交流系数编码

(7)熵编码

具体过程如图3-1所示

图 2-1 JPEG 的压缩过程

2.3 JPEG 压缩编码原理

2.3.1色彩模式转换及采样

YCrCb 颜色空间中,Y 代表亮度,Cr ,Cb 则代表色度和饱和度,有时也将Cb ,Cr 两者统称为色度,三者通常以Y ,U ,V 来表示,即用U 代表Cb ,用V 代表Cr 。YUV 表示法的好处是它利用了人的眼睛的某种特性,来降低图像中彩色所占用的存储空间。相较于对亮度细节的分辨能力,人的眼睛对彩色细节的分辨能力要低前向DCT 量化器熵编码器压缩图像数据

8×8个数据块

原始图像数据基于DCT 的编码器量化表编码表

很多。如果把人眼能分辨出的黑白条纹换做具有不同色彩的彩色条纹,那么眼睛就不容易能分辨出条纹来。基于此原理,便能够将彩色分量的分辨率减小,这不会对图像的质量有明显影响,因而便能够将相邻几个像素的不一样的彩色值看成是一样的彩色值来处理,这样能减少所需的存储空间。

考虑假如要存储RGB为8∶8∶8尺寸为640×480像素的彩色图像,即R、G、

B分量是用八位二进制数来描述的,那么可以算得需要的存储空间为921,600字节。要是换用YUV来描述这张彩色图像,那么,Y分量将是640×480,除此之外Y分量依旧是用八位二进制数来描述,而对每四个相邻像素(2×2)的U、V值,分别用相同的某个数值来描述,这时,存储这张图像所需要的存储容量便减少到460,800字节,可以看出减少了50%。

RGB和YCrCb之间的转换关系如下所示:YCrCb与RGB彩色空间变换模拟区域的彩色空间变换,与数字区域中的彩色空间变换不同。它们的分量用Cb、Cr、

Y来表示,与RGB空间的转换方法如下:

Y = 0.299000R + 0.587000G + 0.114000B

Cb = - 0.168736R - 0.3313G + 0.500002B

Cr = 0.500000R - 0.418688G - 0.081312B

JPEG的图片使用的是YCrCb色彩模型,它们大致为红色度,蓝色度,亮度,这与计算机中最常用的RGB是不一样的。实际的应用表明,YCrCb模型能进行更好压缩图形。因为人眼对图片里的亮度Y的敏感度要比色度C的敏感度高许多。在这里需要强调的一点是,为了有利于此后的最小代码单元(Minimum Code Unit 简称MCU)的获得,需要对产生的Cb、Cr、Y对高与宽进行扩充,让它是MCU 的整数倍,使用的方法是将图像的最右边一列,以及它最下边一行进行复制,扩展它的宽与高,从而让全部的图像划分为MCU个数的整数倍。而在解码输出时抛弃这些被复制的行列。

2.3.3 离散余弦变换

DCT(Discrete Cosine Transform,离散余弦变换),是码率压缩中常用的一种编码方法。任何连续实对称函数的傅里叶变换中只包含余弦项,因此,余弦变换同傅里叶变换一样具有明确的物理意义。离散余弦变换是先将一幅图像划分成多个N×N的像素块,然后针对每一个N×N的像素块逐个进行DCT操作。JPEG的编码过程需要进行正向离散余弦变换,而解码过程是通过反向离散余弦变换实现的。

正向离散余弦变换公式:

()()()()()()21212,,cos cos 22x u y v f x y C u C v F u v N N N ππ++????=

???????? ()C ω=0ω=;()1C ω=,当1,27ω=… 反向离散余弦变换公式:

()()()()()()770021212,,cos cos 22x y x u y v F u v C u C v F x y N N N ππ==++????=????????

∑∑ 式中的N 代表水平和垂直方向的像素数,在本设计中N 取值为8。所以图像划分为8×8的二维像素块,这些像素快在DCT 变换之后,便得到了相应8×8的变换系数矩阵。矩阵中的这些系数,都是有其具体的物理意义的,例如,u =0,v =0时的(),F u v 值是原来64个数据的平均值,也叫做直流分量,亦有人称之为DC 系数或直流系数。随着u ,v 值的增加,相应的其他63个系数则代表了水平和垂直空间的频率分量的大小,它们大多数是一些接近于0的正负浮点数,我们称之为交流系数或AC 系数。经过DCT 变换后得到的8×8的变换系数矩阵中,低频分量都集中在矩阵的左上角,高频成分则集中在右下角。

因为大多数图像的高频分量都比较小,因而也导致图像高频分量的DCT 系数接近于0,再加上高频分量表现在图像上只影响着图像细节的细微变化,而人眼的构造对这种高频成分的变动表现的不太敏感,因此,在图像压缩的时候可以考虑将这些高频成分舍弃,以此来减少传输的数据量。如此一来,传送DCT 变换系数所需的编码长度便远远小于传送图像像素所需的编码长度。当数据传送到接收端后,再通过反离散余弦变换便可还原到原来的数据,虽然这种方法会引起部分失真,但这些都是在人眼可接受的范围之内的。

2.3.4 Z 字形编排(Zigzag )

经过DCT 变换,我们将一个8×8的数组转换成了另外一个8×8的数组,但是在内存中所有的数据都是以线性的形式存放的, 如果我们像表格一样一行一行地

存放这64个数字, 那么每行结尾的点和下一行开始的点就不能联系在一起,即没有什么关系了, 所以JPEG规定按如图2-2中的数字顺序依次保存和读取这64个DCT的系数值。这样,数列里相邻的点在图片上便也是相邻的了。可以发现,这种数据扫描、保存以及读取的方式是从8×8矩阵的左上角开始,按照英文字母Z 的形状进行的,我们将其称为Zigzag扫描排序。如图2-2所示:

2.3.5量化

图像数据转换为DCT频率系数之后,还要经过量化,才能执行编码过程。量化阶段需要两个8×8量化矩阵,一个是亮度量化表,另一个称为色度量化表,将频率系数除以量化矩阵的值后取整,以便于执行最后的编码。可以看出,经过量化阶段之后,所有的数据只保留了他的整数近似值,这在一定程度上又损失了一些数据内容。在JPEG算法中,由于对亮度和色度有着不同的精度要求,所以对亮度和色度分别采用不同的量化表。前者细量化,后者粗量化。

表2-1和表2-2给出了JPEG的亮度量化表和色度量化表,该量化表是从广泛的实验中得出的。

表2-1JPEG亮度量化表

表2-2JPEG色度量化表

这两张表是根据心理视觉阀制作而成的, 经过大量实验,对8bit 亮度和色度的图象的处理有着很不错的效果。在这一步除掉了一部分高频量, 抛弃了许多细节信息,因此量化表成为了控制JPEG 图像压缩率的关键部分。从上面两个量化表也可以看出,高频部分采用了相对较长的量化步长,而低频部分则采用了相对较短的量化步长,这样做的目的也是在一定程度上得到更清晰的图像和更高的压缩率。

2.3.6直流系数的差分脉冲调制编码

8×8的图像块经过DCT 变换之后得到的DC 系数有两个特点:

(1)系数的数值比较大;

(2)相邻8×8像素块的DC 系数变化不明显;

根据这两个特点,DC 系数一般采用差分脉冲调制编码DPCM (Difference Pulse Code Modulation ),即:取同一个图像分量中每个DC 值与前一个DC 值的差值1--i i DC DC diff 来编码。因为对差值进行编码所需的位数相较对原值进行编

码所需的位数要少很多。

2.3.7交流系数的行程长度编码(RLC)

经过量化以后的AC 系数的特点是,63个系数中很多系数的值为0。因此,可以采用行程编码RLC (Run Length Coding )来进一步减少数据的传输量。利用该编码方式,可以将一个字符串中连续重复出现的字符用两个字节来代替,其中,第一个字节表示重复的次数,第二个字节表示被重复的字符。例如,(3,5)就代表字符串“5555”。但是,在JPEG 编码中,RLC 的含义与原始RLC 的定义稍有不同。在JPEG 编码中,若经过RLC 编码得到的数据对为(M,N ),那么其中的M 表示两个非零AC 系数之间所有连0的个数(行程长度),N 表示后面的非零AC 系数的值。用这样的方式表示的原因是AC 系数中有大量的0,在采用Zigzag 扫描之后AC 系数中会出现很多连续的0,这种情况下,便非常适合用这种RLC 进行编码。

用一个例子来说明这种RLC 编码方式,若有如下所示字符串:

57,45,0,0,0,0,23,0,-30,-8,0,0,1,000.....

经过RLC 编码之后,将会以如下形式呈现:

(0,57);(0,45);(4,23);(1,-30);(0,-8);(2,1);(0,0)

特别的,当连续0的数目超过16个时,则用一个扩展字节(15,0)来表示16个连续的0。

2.3.8 熵编码

为了降低熵信息,本设计的熵编码采用了Huffman编码。因为Huffman编码可以在编码时采用简单方便的查表方法。

Huffman编码是Huffman于1952年提出的一种编码方式。这种编码方法的主要思想是根据源数据符号出现的概率进行编码,给出现概率越高的符号分配以越短的编码,给出现概率较低的符号分配以较长的编码,从而达到用尽可能少的编码符号表示数据源的目的。它的原理来自信息论中的Huffman定理,详细如下:定理:在变长编码中,对出现概率大的信源符号赋以短码字,而对于出现概率小的信源符号赋予长码字。如果将码字长度严格按照其所对应符号的出现概率大小逆序排列,则编码结果的平均码字长度一定小于其他任何排列方式。

Huffman编码的一般步骤:

(1)概率统计(如对一副图像或m副同种类型图像做灰度信号统计),得到n 个不同概率的信号符号;

(2)将信源符号按概率递减顺序排列;

(3)把两个最小概率相加作为新符号的概率,并按(2)重排;

(4) 重复(1)、(2),直到概率为1;

(5)在每次合并信源时,将合并的信源分别赋以“0”和“1”;

(6) 寻找从每一信源符号到概率为1处的路径,记录路径上的“1”和“0”;

(7)写出每一符号的“1”、“0”序列(从树根到信源符号结点)。

在计算Huffman编码时需要对原始图像扫描两遍:第一遍扫描要精确地统计出原始图像中的每个灰度值出现的概率;第二遍扫描是建立Huffman树并进行编码,其数据压缩和解压速度都较慢,但这种编码的效率相当高。

2.4图像文件格式

图像文件格式即图像文件存放在存储媒介上的格式,通常有JPEG、BMP、TIFF、RAW、PNG、GIF等。下面针对本文用到的两种格式进行简单介绍。2.4.1BMP文件格式

BMP(位图文件,全称Bitmap)文件格式是微软Windows系统中定义的标准的图像文件格式,它分为两大类:一类叫做设备相关位图(DDB),另一类叫做设备无关位图(DIB),BMP文件格式得到了非常广泛的使用。它的存储格式采

用的是位映射方法,只有图像深度可以选择,除此之外,没有采用其他任何的压缩,这也直接导致BMP文件所占用的存储空间很大。BMP格式的图像文件的图像可选深度为lbit、4bit、8bit以及24bit。BMP文件在存储数据的时候,图像的扫描方式是按照从左到右、从下到上的顺序。因为BMP文件格式是微软Windows 环境下交换与图像有关的数据的一种标准,所以Windows环境下运行的所有图形图像软件都支持BMP图像格式。

2.4.2 JPEG文件格式

JPEG文件格式是由联合照片专家小组(Joint Photographic Experts Group)开发的命名为"ISO 10918-1"的图像格式,JPEG只是一种俗称。微处理机中数据的存放次序有两种,一种是大端存放(big endian),另一种叫做小端(little endian)存放。大端存放的意思是前面存放高字节后面存放低字节,而小端存放则相反,前面存放低字节后面存放高字节。比如,16进制数为CD12,大端存放就是CD12,小端存放就是12CD。而JPEG文件中的字节是使用大端存放格式存放的。JPEG格式作为目前网络上最流行的图像格式,是公认能把图像文件压缩到最小的格式,占用经可能少的空间,提高了传输速率,有着体积小且兼容性好的有点。

第三章实验过程与结论

3.1压缩质量评估原理

冗余数据,相同数量的信息可以用不同数量的数据表示,包含不相关或重复信息的表示称之为冗余数据。如果我们令b和b'代表相同信息的两种表示中的比特数(或信息携带单元),那么相对数据冗余R表示为

1

=-(3-1)

R

1

C

其中,C通常称为压缩率,定义为

b

C

=(3-2)

b'

PSNR ,峰值信噪比,通常用来评价一幅图像压缩后和原图像相比质量的好坏,当然,压缩后图像一定会比原图像质量差的,所以就用这样一个评价指标来规定标准了。PSNR 越大,表明压缩后失真越小。PSNR 公式如下 210lg PSNR MSN P ??= ? ??? (3-3)

其中P 表示图像的灰度级,在这里就是8bits 表示法的最大值255,MSN 称为均方差,公式如下 11

2001(,)(,)m n i j MSN mn I i j K i j --===-∑∑ (3-4)

3.2 实验结果与分析

基于前文介绍的编解码原理,使用VC++编程实现对JPEG 文件的读取,压缩与存储。通过此应用程序中,用户可以将BMP 文件压缩编码为JPEG 图像,也可以实现JPEG 图像解码为BMP 文件,即能实现两者的格式转换。

第一组通过程序实现BMP 图像压缩为JPEG 图像的图像文件如图3-1所示:

ab

图3-1BMP 图片压缩编码为JPEG 图片对比:(a)test.bmp (256×256,196,662字节,24位图);

(b)test.jpg (256×256,11,094字节,4位图)

第二组实验的图像文件如图3-2所示:

ab

c

图3-2BMP图像先压缩为JPEG图像再解压缩为BMP文件:(a)昆仑堂.bmp(1048×622,1,955,622字节,24位图);(b)昆仑堂.jpg(1048×622,145,917字节,24位图);(c)昆仑堂新.bmp(1048×622,1,955,622字节,24位图)

图3-1中原始图片test.bmp为256×256像素,大小为196,662字节的24位图,经过压缩编码,选择质量为75等级(100为质量最高)得到图片test.jpg为256×256

像素,大小为11,094字节的24位图。

根据公式4-1和4-2可以计算得压缩比为17.7,相对数据冗余为0.9435这表明原始图像中94.35%的数据冗余的,经过压缩,数据量大大减少,节省了存储空间。而通过利用matlab,根据公式3-1和3-2计算压缩前后两幅图像的峰值信噪比PSNR 结果为68.7828,因此证明压缩后,图像和原图很接近,即失真很小,压缩前后图片用肉眼是无法区分出来的。

图3-2中,三幅兰大榆中校区昆仑堂的照片看起来没啥区别,但是图a和图b 在数据量上有很大差别,通过计算压缩比为13.4,相对数据冗余为0.9254,计算峰值信噪比PSNR为43.916,相比第一组PSNR有所下降,换句话说,压缩后失真较第一组严重。图c是将压缩后的图像解压缩得到的BMP图像,在数据量上来看,完全恢复到压缩前的大小,但是通过计算PSNR我们发现,值依然是43.916。由此可以看出,JPEG压缩过程是有损压缩,当再次解压缩的时候,图片无法恢复到跟原始图像一样的质量。

3.3实验结论与总结

在此设计中,使用离散余弦变换,将空间区域中描绘的图形,变换为频率区域描绘的图形;采用加权函数量化得到DCT的系数;采用Huffman可变字长编码器来编码量化系数的信息;采用行程长度编码RLE来编码交流系数(AC)的信

息;采用差分脉冲编码调制来编码直流系数(DC)的信息;为了降低熵信息,熵编码采用了Huffman编码器。

经过对实验结果的分析可知,本次用C++实现JPEG图像的编解码过程比较成功,压缩后得到15左右的压缩比,表明原图有90%以上的冗余数据。而在图像质量方面,通过计算峰值信噪比,得到比较高的峰值信噪比,证明图像质量保持的比较好,即失真很小。

致谢

本设计能较成功地完成,与xx老师的悉心指导和热心帮助是分不开的,在此,我对他表示衷心的感谢。

我的指导教师陆福相老师,在我的课题研究进行期间,指导我如何搜集相关的资料,并且在百忙中抽出时间来检查、指导我的工作,在具体的设计过程中又给了我很多的启示,在我进行程序调试时,他们又给了我很多的建议。在他们的指导下,我能合理安排时间并顺利完成了各阶段的相应的任务,按时完成此次的课题研究。

同时,也要感谢同学,在我进行程序设计时遇到的许多的问题都是与他们共同探讨、研究之后,在他们的帮助下解决的。

再一次感谢在课题研究期间给予我帮助的每一个人。

预测图像编码和解码

题目: 7, 对图象p04-01实施预测编码和解码,并将原图象与解码图象进行方差计算,考察解码后图象的视觉效果。预测模型为: 原理: 预测就是根据过去时刻的样本序列,运用一种模型,预测当前的样本值。预测编码是易于实现的,如差分脉冲编码调制(DPCM )方法。这种方法中,对每一个像素灰度值,都用先前扫描过的像素灰度值去减,求出它们的差值,此差值称为预测误差,预测误差被量化和编码与传送。接收端再将此差值与预测值相加,重建原始图像像素信号。由于量化和传送的仅是误差信号,根据一般扫描图像信号在空间及时间邻域内各像素的相关性,预测误差分布更加集中,即熵值比原来图像小,可用较少的单位像素比特率进行编码,使得图像数据得以压缩。DPCM 系统的基本系统框图如下图所示。 在该系统中,N x 为N t 时刻的亮度取样值。预测器根据N t 时刻之前的样本1x , 2x ,……,1-N x 对N x 作预测,得到预测值'N x 。N x 与'N x 之间的误差为: 'N N N x x e -= 量化器对N e 进行量化得到'N e 。编码器对'N e 进行编码发送。接收端解码时的预测过程与发送端相同,所用预测器亦相同。接收端恢复的输出信号''N x 是N x 的近似值,两者的误差是 ' '''')(N N N N N N N N e e x x e x x x -=-=+-=? 当输入图像信号是模拟信号时,“量化”过程中的信息损失是不可避免的。当N x ?足够小时,输入信号N x 和DPCM 系统的输出信号几乎一致。 其它预测方法还有以下几种: (1)前值预测:用),(y x f 同一行中临近的前一像素预测,即)1,(),(^-=y x f y x f (2)一维预测:用同一行中前面若干像素预测。 (3)二维预测:用几行内像素预测。 (4)三维预测:利用相邻两帧图像信号的相关性预测。 ) ,1(5.0)1,(5.0),(y x f y x f y x f -+- =

JPEG图像的编解码实现

毕业论文论文题目(中文)JPEG图像的编解码实现 论文题目(外文)Encoding and decoding of JPEG image

摘要 JPEG是一种十分先进的图像压缩技术,它用有损压缩方式去除冗余的图像数据,在获得极高的压缩率的同时能展现十分丰富生动的图像。本文设计和实现一个JPEG图像编解码器来进行图像转换,利用离散余弦变换、熵编码、Huffman编码等图像压缩技术将BMP图像转换成JPEG图像,即进行图像的压缩。验证JPEG压缩编码算法的可行性。通过比对图像压缩前后实际效果,探讨压缩比,峰值信噪比等评价图像数据压缩程度及压缩质量的关键参数,对JPEG 压缩编码算法的实用性和优越性进行研究。 关键词:JPEG;编码;解码;图像压缩

Abstract JPEG is a very advanced image compression technology, it uses lossy compression to remove redundant image data, in obtaining a very high compression rate can show a very rich and vivid image. In this project, a JPEG image codec is designed and implemented to transform image, using discrete cosine transform, entropy coding, Huffman coding and other image compression techniques to convert BMP images into JPEG images. Verifies the feasibility of JPEG compression coding algorithm. Through the comparison of the actual effect of image compression, the key parameters of compression ratio, peak Snr, and the compression quality of image data are discussed, and the practicability and superiority of JPEG compression coding algorithm are researched. Key words: JPEG; encoding; decoding; image compression

编码器详细介绍与编程指导

增量型编码器与绝对型编码器的区分 编码器如以信号原理来分,有增量型编码器,绝对型编码器。 增量型编码器 (旋转型) 工作原理: 由一个中心有轴的光电码盘,其上有环形通、暗的刻线,有光电发射和接收器件读取,获得四组正弦波信号组合成A、B、C、D,每个正弦波相差90度相位差(相对于一个周波为360度),将C、D信号反向,叠加在A、B两相上,可增强稳定信号;另每转输出一个Z相脉冲以代表零位参考位。 由于A、B两相相差90度,可通过比较A相在前还是B相在前,以判别编码器的正转与反转,通过零位脉冲,可获得编码器的零位参考位。 编码器码盘的材料有玻璃、金属、塑料,玻璃码盘是在玻璃上沉积很薄的刻线,其热稳定性好,精度高,金属码盘直接以通和不通刻线,不易碎,但由于金属有一定的厚度,精度就有限制,其热稳定性就要比玻璃的差一个数量级,塑料码盘是经济型的,其成本低,但精度、热稳定性、寿命均要差一些。 分辨率—编码器以每旋转360度提供多少的通或暗刻线称为分辨率,也称解析分度、或直接称多少线,一般在每转分度5~10000线。 信号输出: 信号输出有正弦波(电流或电压),方波(TTL、HTL),集电极开路(PNP、NPN),推拉式多种形式,其中TTL为长线差分驱动(对称A,A-;B,B-;Z,Z-),HTL 也称推拉式、推挽式输出,编码器的信号接收设备接口应与编码器对应。 信号连接—编码器的脉冲信号一般连接计数器、PLC、计算机,PLC和计算机连接的模块有低速模块与高速模块之分,开关频率有低有高。 如单相联接,用于单方向计数,单方向测速。 A.B两相联接,用于正反向计数、判断正反向和测速。 A、B、Z三相联接,用于带参考位修正的位置测量。 A、A-, B、B-,Z、Z-连接,由于带有对称负信号的连接,电流对于电缆贡献的电磁场为0,衰减最小,抗干扰最佳,可传输较远的距离。 对于TTL的带有对称负信号输出的编码器,信号传输距离可达150米。 对于HTL的带有对称负信号输出的编码器,信号传输距离可达300米。

JPEG压缩编码标准

JPEG压缩编码标准 JPEG是联合图象专家组(Joint Picture Expert Group)的英文缩写,是国际标准化组织(ISO)和CCITT联合制定的静态图象的压缩编码标准。和相同图象质量的其它常用文件格式(如GIF,TIFF,PCX)相比,JPEG是目前静态图象中压缩比最高的。我们给出具体的数据来对比一下。例图采用Windows95目录下的,原图大小为640*480,256色。用工具SEA将其分别转成24位色BMP、24位色JPEG、GIF(只能转成256色)压缩格式、24位色TIFF压缩格式、24位色TGA压缩格式。得到的文件大小(以字节为单位)分别为:921,654,17,707,177,152,923,044,768,136。可见JPEG比其它几种压缩比要高得多,而图象质量都差不多(JPEG处理的颜色只有真彩和灰度图)。 正是由于JPEG的高压缩比,使得它广泛地应用于多媒体和网络程序中,例如HTML语法中选用的图象格式之一就是JPEG(另一种是GIF)。这是显然的,因为网络的带宽非常宝贵,选用一种高压缩比的文件格式是十分必要的。 JPEG有几种模式,其中最常用的是基于DCT变换的顺序型模式,又称为基线系统(Baseline),以下将针对这种格式进行讨论。 的压缩原理 JPEG的压缩原理其实上面介绍的那些原理的综合,博采众家之长,这也正是JPEG有高压缩比的原因。其编码器的流程为: 图 JPEG编码器流程 解码器基本上为上述过程的逆过程:

图解码器流程 8×8的图象经过DCT变换后,其低频分量都集中在左上角,高频分量分布在右下角(DCT变换实际上是空间域的低通滤波器)。由于该低频分量包含了图象的主要信息(如亮度),而高频与之相比,就不那么重要了,所以我们可以忽略高频分量,从而达到压缩的目的。如何将高频分量去掉,这就要用到量化,它是产生信息损失的根源。这里的量化操作,就是将某一个值除以量化表中对应的值。由于量化表左上角的值较小,右上角的值较大,这样就起到了保持低频分量,抑制高频分量的目的。JPEG使用的颜色是YUV格式。我们提到过,Y分量代表了亮度信息,UV分量代表了色差信息。相比而言,Y分量更重要一些。我们可以对Y采用细量化,对UV采用粗量化,可进一步提高压缩比。所以上面所说的量化表通常有两张,一张是针对Y的;一张是针对UV的。 上面讲了,经过DCT变换后,低频分量集中在左上角,其中F(0,0)(即第一行第一列元素)代表了直流(DC)系数,即8×8子块的平均值,要对它单独编码。由于两个相邻的8×8子块的DC系数相差很小,所以对它们采用差分编码DPCM,可以提高压缩比,也就是说对相邻的子块DC系数的差值进行编码。8×8的其它63个元素是交流(AC)系数,采用行程编码。这里出现一个问题:这63个系数应该按照怎么样的顺序排列为了保证低频分量先出现,高频分量后出现,以增加行程中连续“0”的个数,这63个元素采用了“之”字型(Zig-Zag)的排列方法,如图所示。 图 Zig-Zag 这63个AC系数行程编码的码字用两个字节表示,如图所示。

计算机常见编码

计算机常见编码 一.有关编码的基础知识 1. 位bit 最小的单元 字节byte 机器语言的单位 1byte=8bits 1KB=1024byte 1MB=1024KB 1GB=1024MB 2. 二进制binary 八进制octal 十进制decimal 十六进制hex 3. 字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符 号,数字等。 字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。 字符编码:字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一 个字符用多少字节表示等问题,则是由编码来决定的。计算机要 准确的处理各种字符集文字,需要进行字符编码,以便计算机能 够识别和存储各种文字。 二.常见字符集的编码介绍: 常见的字符集有:ASCII 字符集,GB2312 字符集,BIG5 字符集,GB18030 字符集,Unicode 字符集,下面一一介绍: 1. ASCII 字符集: 定义: 美国信息互换标准代码,是基于罗马字母表的一套电脑编码系统,主要显示 英语和一些西欧语言,是现今最通用的单字节编码系统。 包含内容: 控制字符(回车键,退格,换行键等) 可显示字符(英文大小写,阿拉伯数字,西文符号) 扩展字符集(表格符号,计算符号,希腊字母,拉丁符号) 编码方式: 第0-31 号及127 号是控制字符或通讯专用字符; 第32-126 号是字符,其中48-57 号为0-9 十个阿拉伯数字,65-90 号为26 个 大写英文字母,97-122 号为26 个英文小写字母,其余为一些标点符号,运 算符号等。 在计算机存储单元中,一个ASCII 码值占一个字节(8 个二进制位),最高位 是用作奇偶检验位。【奇偶校验是指:在代码传送的过程中,用来检验是否 出错的一种方法。】奇偶校验分为奇校验和偶校验。奇校验规定:正确的代 码一个字节中1 的个数必须是奇数,若非奇数,则在最高位添1;偶校验规 定:正确的代码一个字节中 1 的个数必须是奇数,若非奇数,则在最高位添 1。

语音编码和图像编码的分类及特点

语音编码和图像编码的分类及特点 一、语音编码 一般而言,语音编码分三大类:波形编码、参数编码及混合编码。 <1>、波形编码 波形编码将时域模拟话音的波形信号进过采样、量化和编码形成数字语音信号,是将语音信号作为一般的波形信号来处理,力图使重建的波形保持原语音信号的波形形状。具有适应能力强、合成质量高的优点。但所需编码速率较高,通常在16KB/S以上,并且编码质量随着编码速率的降低显著下降,且占用的较高的带宽。 波形编码又可以分为时域上和频域上的波形编码,频域上有子带编码和自适应变换域编码,时域上PCM、DPCM、ADPCM、APC和?M增量调制等。 ①、子带编码 它首先用一组带通滤波器将输入信号按频谱分开,然后让每路子信号通过各自的自适应PCM编码器(ADPCM)编码,经过分接和解码再复合成原始信号。 特点:1、每个子带独立自适应,可按每个子带的能量调节量化阶;2、可根据各个子带对听觉的作用大小共设计最佳的比特数;3、量化噪声都限制在子带内某一频带的量化噪声串到另一频带中去。 ②、自适应变换域编码 利用正交变换将信号有时域变换到另外的一个域,使变换域系数密集化,从而使信号相邻样本间冗余度得到降低。 特点:对变换域系数进行量化编码,可以降低数码率。 ③、PCM(Pulse-code modulation),脉冲编码调制 对连续变化的模拟信号进行进行抽样、量化和编码产生。 特点是保真度高,解码速度快,缺点是编码后的数据量大。 ④、DPCM(Differential Pulse Code Modulation)差分脉冲编码调制 是对模拟信号幅度抽样的差值进行量化编码的调制方式,是用已经过去的抽样值来预测当前的抽样值,对它们的差值进行编码。 特点:对于有些信号瞬时斜率比较大,很容易引起过载;而且瞬时斜率较大的信号也没有像话音信号那种音节特性,因而也不能采用像音节压扩那样的方法,只能采用瞬时压扩的方法;传输的比特率要比PCM低;一个典型的缺点就是易受到传输线路上噪声的干扰。 ⑤、ADPCM(adaptive differential pulse code modulation),自适应差分脉冲编码调制 是DPCM的扩展,区别在于较DPCM在实现上预测器和量化器会随着相关的参数自适应的变化,达到较好的编码效果。 特点:优点在算法复杂度低,压缩比小,编解码延时最短,压缩/解压缩算法非常的简单,低空间消耗。缺点是声音的质量一般。 ⑥、?M增量调制 只保留每一信号样值与其预测值之差的符号,并用一位二进制数编码的差分脉冲编码调制。 特点:1、电路简单,而脉码调制编码器需要较多逻辑电路;2、数据率低于

jpeg编解码过程详解海王博客园

JPEG编解码过程详解- 海王- 博客园 JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写。它由国际电话与电报咨询委员会CCITT(The International Telegraph and Telephone Consultative Committee)与国际标准化组织ISO于1986年联合 成立的一个小组,负责制定静态数字图像的编码标准。 小组一直致力于标准化工作,开发研制出连续色调、多级灰度、静止图像的数字图像压缩编码方法,即JPEG 算法。JPEG算法被确定为国际通用标准,其适用范围广泛,除用于静态图像编码外,还推广到电视图像序列的帧 内图像压缩。而用JPEG算法压缩出来的静态图片文件称为JPEG文件,扩展名通常为*.jpg、*.jpe*.jpeg。 JPEG专家组开发了两种基本的压缩算法、两种数据编码方法、四种编码模式。具体如下: 压缩算法: l 有损的离散余弦变换(Discrete Cosine Transform,DCT);l 无损的预测技术压缩。 数据编码方法: l 哈夫曼编码; l 算术编码; 编码模式:

l 基于DCT顺序模式:编/解码通过一次扫描完成; l 基于DCT递进模式:编/解码需要多次扫描完成,扫描效果从粗糙到精细,逐级递进; l 无损模式:基于DPCM,保证解码后完全精确恢复到原图像采样值; l 层次模式:图像在多个空间多种分辨率进行编码,可以根据需要只对低分辨率数据作解码,放弃高分辨率信息。 在实际应用中,JPEG图像使用的是离散余弦变换、哈夫曼编码、顺序模式。 JPEG压缩编码算法的主要计算步骤如下: (0) 8*8分块。 (1) 正向离散余弦变换(FDCT)。 (2) 量化(quantization)。 (3) Z字形编码(zigzag scan)。 (4) 使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码。 (5) 使用行程长度编码(RLE)对交流系数(AC)进行编码。 (6) 熵编码。 笔者在实践过程中查阅了大量的资料,发现大多数书籍资料和网上资料都是从编码角度分析JPEG的编/解码方式,

matlab压缩JPEG实验及程序

实验四JPEG压缩 一、实验原理 1、数据分块 对图像进行编码前,将每个分量图像分割成不重叠的8×8像素块,每一个8×8像素块称为一个数据单元(DU)。在彩色图像中,JPEG分别压缩图像的每个彩色分量。虽然JPEG可以压缩通常的红绿蓝分量,但在YCbCr 空间的压缩效果会更好。这是因为人眼对色彩的变化不如对亮度的变化敏感,因而对色彩的编码可以比对亮度的编码粗糙些,这主要体现在不同的采样频率和量化精度上。因此,编码前一般先将图像从RGB空间转换到YCbCr 空间,再把各分量图像分割成8×8数据块。 在对图像采样时,可以采用不同的采样频率,这种技术称为二次采样。 由于亮度比色彩更重要,因而对Y分量的采样频率可高于对Cb、Cr的采样频率,这样有利于节省存储空间。常用的采样方案有YUV422和YUV411。 把采样频率最低的分量图像中一个DU所对应的像区上覆盖的所有各分量上的DU按顺序编组为一个最小编码单元(MCU)。对灰度图像而言,只有一个Y分量,MCU就是一个数据单元。而对彩色图像而言,以4:1:1的采样方案为例,则一个MCU由4个Y分量的DU、1个Cb分量的DU和1个Cr 分量的DU组成。 2、DCT处理 图像数据块分割后,即以MCU为单位顺序将DU进行二维离散余弦变换。 对以无符号数表示的具有P位精度的输入数据,在DCT前要减去2P-1,转换成有符号数,而在IDCT后,应加上2P-1,转换成无符号数。对每个8×8的数据块DU进行DCT后,得到的64个系数代表了该图像块的频率成分,其中低频分量集中在左上角,高频分量分布在右下角。系数矩阵左上角的叫做直流(DC)系数,它代表了该数据块的平均值,其余63个叫交流(AC)系数。 3、系数量化 在DCT处理中得到的64个系数中,低频分量包含了图像亮度等主要信息。在从空间域到频域的变换中,图像中的缓慢变化比快速变化更易引起人眼的注意,所以在重建图像时,低频分量的重要性高于高频分量。因而在编码时可以忽略高频分量,从而达到压缩的目的,这也是量化的根据和目

JPEG编码过程详解

JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写。它由国际电话与电报咨询委员会 CCITT(The International Telegraph and Telephone Consultative Committee)与国际标准化组织ISO于1986年联合 成立的一个小组,负责制定静态数字图像的编码标准。 小组一直致力于标准化工作,开发研制出连续色调、多级灰度、静止图像的数字图像压缩编码方法,即JPEG 算法。JPEG算法被确定为国际通用标准,其适用范围广泛,除用于静态图像编码外,还推广到电视图像序列的帧 内图像压缩。而用JPEG算法压缩出来的静态图片文件称为JPEG文件,扩展名通常为*.jpg、*.jpe*.jpeg。 JPEG专家组开发了两种基本的压缩算法、两种数据编码方法、四种编码模式。具体如下: 压缩算法: ● 有损的离散余弦变换(Discrete Cosine Transform,DCT); ● 无损的预测技术压缩。 数据编码方法: ● 哈夫曼编码; ● 算术编码; 编码模式: ● 基于DCT顺序模式:编/解码通过一次扫描完成; ● 基于DCT递进模式:编/解码需要多次扫描完成,扫描效果从粗糙到精细, 逐级递进; ● 无损模式:基于DPCM,保证解码后完全精确恢复到原图像采样值; ● 层次模式:图像在多个空间多种分辨率进行编码,可以根据需要只对低 分辨率数据作解码,放弃高分辨率信息。 在实际应用中,JPEG图像使用的是离散余弦变换、哈夫曼编码、顺序模式。JPEG压缩编码算法的主要计算步骤如下: (0) 8*8分块。 (1) 正向离散余弦变换(FDCT)。 (2) 量化(quantization)。 (3) Z字形编码(zigzag scan)。 (4) 使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码。 (5) 使用行程长度编码(RLE)对交流系数(AC)进行编码。 (6) 熵编码。 笔者在实践过程中查阅了大量的资料,发现大多数书籍资料和网上资料都是从编码角度分析JPEG的编/解码方式, 并且都只是介绍编码过程中的主要方法。所以,本文从解码角度详细分析JPEG的编/解码过程,并且加入许多笔

一种基于MATLAB的JPEG图像压缩具体实现方法

一种基于MATLAB的JPEG图像压缩具体实现方法 说明:该方法主要是对FPGA硬件实现编码的一个验证,MATLAB处理时尽量选择了简单化和接近硬件实现需要。 JPEG编码解码流程:BMP图像输入、8*8分块、DCT变换、量化、Zig_Zag 扫描、获取DC/AC系数中间格式、Huffman熵编码、DC/AC系数Huffman熵解码,反zig_zag扫描、反量化、反DCT变换、8*8组合、解码图像显示。 下面根据具体代码解释实现过程。 1.BMP图像输入 A=imread('messi_b.bmp'); %读取BMP图像矩阵 R=int16(A(:,:,1))-128; %读取RGB矩阵,由于DCT时输入为正负输入, G=int16(A(:,:,2))-128; %使得数据分布围-127——127 B=int16(A(:,:,3))-128; 通过imread函数获取BMP图像的R、G、B三原色矩阵,因为下一步做DCT 转换,二DCT函数要求输入为正负值,所以减去128,使得像素点分布围变为-127~127,函数默认矩阵A的元素为无符号型(uint8),所以如果直接相减差值为负时会截取为0,所以先用int16将像素点的值转为带符号整数。网上很多都提到了第一步的YUV转换,但是由于MATLAB在实验时YUV转换后色差失真比较严重,这里没有进行YUV转换。个人理解为YUV转换后经过非R/G/B原理显示器显示效果可能会比较好,或者如果图像有色差可以选择YUV调整。为了方便,读入的图像像素为400*296,是8*8的50*37倍,所以代码里没有进行8*8的整数倍调整。 2. 8*8分块 R_8_8=R(1:8,1:8);%取出一个8*8块 这里以R色压缩解码为例,后边解释均为R色编码解码过程,最后附全部代码。R_8_8为: 3.DCT变换 R_DCT=dct2(R_8_8); 使用MATLAB函数dct2进行DCT变换,也可使用DCT变换矩阵相乘的方法,即R_DCT=A* R_8_8*A T,其中A为DCT变换矩阵。R_DCT为:

字符编码方式介绍及编码方式测试

第一部分编码方式介绍 一、编码: 美国标准信息交换标准码( , ) 在计算机内部,所有地信息最终都表示为一个二进制地字符串.每一个二进制位()有和两种状态.一个字节()共由八个二进制位来组成,共有种状态,从到. 阿拉伯数字、英文字母、标点符号等这些字符,怎么定义才能让计算机识别呢?因为计算机只识别二进制位和,所以以上这些字符就必须与二进制位(和)建立关系,才能让计算机识别. 年代初,计算机界制定了一套统一地字符编码,来表示字符与二进制位之间地关系.这种统一地字符编码就叫做编码.码一共规定了个字符地编码,比如空格是(二进制),大写地字母是(二进制).这个符号(包括个不能打印出来地控制符号),只占用了一个字节地后面位,最前面地位统一规定为. 在英语国家,个编码足以表达所有字符,但其它非英语国家,字符不是由英文字符组成,这样就需要增加编码以表达这些字符,对于超过个字符地编码被称为非编码.比如:在中国,我们用简体中文,字符编码方式为.个人收集整理勿做商业用途 二、编码: 看到上面地介绍后,我们了解了最早编码是码.它只用个二进制位来表示,由于那个时期生产地大多数计算机使用位大小地字节,因此用户不仅可以存放所有可能地字符,而且有整整一位空余下来.如果你技艺高超,可以将该位用做自己离奇地目地:中那个发暗地灯泡实际上设置这个高位,以指示一个单词中地最后一个字母,同时这也宣示了只能用于英语文本. 由于字节有多达位地空间,因此许多人在想:“呀!我们可以把之间地编码用做个人地应用目地.”问题在于,同时产生这种想法地人相当多,而且在之间地各个位置上应该存放什么这一问题上,真是仁者见仁智者见智.事实上,只要人们开始在美国以外地地方购买计算机,那么各种各样地不同字符集都会进入规划设计行列,并且各人都会根据自己地需要使用高位地个字符.如此一来,甚至在同语种地文档之间就不容易实现互换. 可被扩展,最优秀地扩展方案是,通常称之为.包括了足够地附加字符集来写基本地西欧语言. 最后,这个人参与地终于以标准地形式形成文件.在标准中,每个人都认同如何使用低端地个编码,这与相当一致.不过,根据所在国籍地不同,处理编码以上地字符有许多不同地方式.这些不同地系统称为代码页. 同时,甚至更为令人头疼地事情正在逐步上演,亚洲国家地字符表有成千上万个字符,这样地字符表是用位二进制无法表示地.该问题地解决通常有赖于称为(,双字节字符集)地繁杂字符系统. 不过,仍然需要指出一点,多数人还是姑且认为一个字节就是一个字符,以及一个字符就是个二进制位,并且只要确保不将字符串从一台计算机移植到另一台计算机,或者说一种以上地语言,那么这几乎总是可以凑合.当然,只要一进入,从一台计算机向另一台计算机移植字符串就成为家常便饭了,而各种复杂状况也随之呈现出来.令人欣慰地是,随即问世了.个人收集整理勿做商业用途 字符集(简称为),国际标准组织于年月成立工作组,针对各国文字、符号进行统一性编码.年美国跨国公司成立,并于年月与达成协议,采用同一编码字集.目前是采用位编码体系,其字符集内容与地()相同.于年月通过(),目前版本于公布,内容包含符号个,汉字个,韩文拼音个,造字区个,保留个,共计个.编码后地大小是一样地.例如一个英文字母"" 和一个汉字"好",编码后都是占用地空间大小是一样地,都是两个字节!个人收集整理勿做商业用途 可以用来表示所有语言地字符,而且是定长双字节(也有四字节地)编码,包括英文字

图像编码基本方法(可编辑修改word版)

p p o ? 一、霍夫曼编码(Huffman Codes) 最佳编码定理:在变长编码中,对于出现概率大的信息符号编以短字长的码,对于出现概率小的信息符号编以长字长的码,如果码字长度严格按照符号出现概率大小的相反的顺序排列,则平均码字长度一定小于按任何其他符号顺序排列方式的平均码字长度。 霍夫曼编码已被证明具有最优变长码性质,平均码长最短,接近熵值。 X = ? x 1 x 2 x m ? ? p p p ? 霍夫曼编码步骤:设信源 X 有m 个符号(消息) ? 1 2 m ? , 1. 1. 把信源 X 中的消息按概率从大到小顺序排列, 2. 2. 把最后两个出现概率最小的消息合并成一个消息,从而使信源的消息数减少,并同时再按信源符号(消息)出现的概率从大到小排列; ? x o x o ? 3. 3. 重复上述 2 步骤,直到信源最后为 X o = ? 1 1 2 ? 2 ? 为止; 4. 4. 将被合并的消息分别赋予 1 和 0,并对最后的两个消息也相应的赋予 1 和 0; 通过上述步骤就可构成最优变长码(Huffman Codes)。 例: X P i 码字编码过程 x 1 0.25 10 x 2 0.25 01 x 3 0.20 11 x 4 0.15 000 x 5 0.10 0100 x 6 0.05 1100 则平均码长、平均信息量、编码效率、冗余度为分别为: N = 2 ? 2 ? 0.25 + 2 ? 0.20 + 3? 0.15 + 4 ? 0.1+ 4 ? 0.05 = 2.45 H = -(2 ? 0.25?log 0.25 + 0.2 ?log 0.2 + 0.15?log 0.15 + 0.1?log 0.1+ 0.05?log 0.05) = 2.42 = 98% Rd = 2% o

JPEG图像压缩原理

JPEG编码 JPEG是联合图象专家组(Joint Picture Expert Group)的英文缩写,是国际标准化组织(ISO)和CCITT联合制定的静态图象的压缩编码标准。和相同图象质量的其它常用文件格式(如GIF,TIFF,PCX)相比,JPEG是目前静态图象中压缩比最高的。我们给出具体的数据来对比一下。例图采用Windows95目录下的Clouds.bmp,原图大小为640*480,256色。用工具SEA(version1.3)将其分别转成24位色BMP、24位色JPEG、GIF(只能转成256色)压缩格式、24位色TIFF压缩格式、24位色TGA压缩格式。得到的文件大小(以字节为单位)分别为:921,654,17,707,177,152,923,044,768,136。可见JPEG比其它几种压缩比要高得多,而图象质量都差不多(JPEG处理的颜色只有真彩和灰度图)。 正是由于JPEG的高压缩比,使得它广泛地应用于多媒体和网络程序中,例如HTML语法中选用的图象格式之一就是JPEG(另一种是GIF)。这是显然的,因为网络的带宽非常宝贵,选用一种高压缩比的文件格式是十分必要的。 JPEG有几种模式,其中最常用的是基于DCT变换的顺序型模式,又称为基线系统(Baseline),以下将针对这种格式进行讨论。 1.JPEG的压缩原理 JPEG的压缩原理其实上面介绍的那些原理的综合,博采众家之长,这也

正是JPEG有高压缩比的原因。其编码器的流程为: 图9.3 JPEG编码器流程 解码器基本上为上述过程的逆过程: 图9.4 解码器流程 DCT 下面对正向离散余弦变换(FDCT)变换作几点说明。 (1)对每个单独的彩色图像分量,把整个分量图像分成8×8的图像块,如图所示,并作为两维离散余弦变换DCT的输入。通过DCT变换,把能量集中在少数几个系数上。 (2)DCT变换使用下式计算: 它的逆变换使用下式计算:

常用字符集介绍和编码转换原理

常用字符集介绍和编码转换原理 目录 1. GB2312编码介绍 (2) 1.1 基本信息 (2) 1.2 GB标准 (2) 1.3 分区表示 (2) 1.4 字节结构 (2) 2. 通用字符集UCS (3) 2.1 定义 (3) 2.2 概要 (3) 2.3 实现级别 (3) 2.4 与UNICODE的兼容关系 (3) 3. unicode编码介绍 (3) 3.1 基本简介 (4) 3.2 编码实现 (4) 3.2.1 编码方式 (4) 3.2.2 实现方式 (5) 4. UTF-8介绍 (5) 4.1 基本介绍 (5) 4.2 编码原理 (5) 4. 转换原理 (7)

1. GB2312编码介绍 1.1 基本信息 1.2 GB标准 GB2312或GB2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集·基本集》,又称为GB0,由中国国家标准总局发布,1981年5月1日实施。GB2312编码通行于中国大陆;新加坡等地也采用此编码。中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。 GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。 GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。 对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。 1.3 分区表示 GB 2312中对所收汉字进行了―分区‖处理,每区含有94个汉字/符号。这种表示方式也称为区位码。 01-09区为特殊符号。 16-55区为一级汉字,按拼音排序。 56-87区为二级汉字,按部首/笔画排序。 10-15区及88-94区则未有编码。 举例来说,―啊‖字是GB2312之中的第一个汉字,它的区位码就是1601。 1.4 字节结构

JPEG文件编解码详解

JPEG文件编/解码详解 cat_ng 猫猫 JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写。它由国际电话与电报咨询委员会 CCITT(The International Telegraph and Telephone Consultative Committee)与国际标准化组织ISO 于1986年联合 成立的一个小组,负责制定静态数字图像的编码标准。 小组一直致力于标准化工作,开发研制出连续色调、多级灰度、静止图像的数字图像压缩编码方法,即JPEG 算法。JPEG算法被确定为国际通用标准,其适用范围广泛,除用于静态图像编码外,还推广到电视图像序列的帧 内图像压缩。而用JPEG算法压缩出来的静态图片文件称为JPEG文件,扩展名通常为*.jpg、*.jpe*.jpeg。 JPEG专家组开发了两种基本的压缩算法、两种数据编码方法、四种编码模式。具体如下: 压缩算法: ● 有损的离散余弦变换(Discrete Cosine Transform,DCT); ● 无损的预测技术压缩。 数据编码方法: ● 哈夫曼编码; ● 算术编码; 编码模式: ● 基于DCT顺序模式:编/解码通过一次扫描完成; ● 基于DCT递进模式:编/解码需要多次扫描完成,扫描效果从粗糙到精细, 逐级递进; ● 无损模式:基于DPCM,保证解码后完全精确恢复到原图像采样值;

层次模式:图像在多个空间多种分辨率进行编码,可以根据需要只对低分辨率数据作解码,放弃高分辨率信息。 在实际应用中,JPEG图像使用的是离散余弦变换、哈夫曼编码、顺序模式。 JPEG压缩编码算法的主要计算步骤如下: (0) 8*8分块。 (1) 正向离散余弦变换(FDCT)。 (2) 量化(quantization)。 (3) Z字形编码(zigzag scan)。 (4) 使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码。 (5) 使用行程长度编码(RLE)对交流系数(AC)进行编码。 (6) 熵编码。 笔者在实践过程中查阅了大量的资料,发现大多数书籍资料和网上资料都是从编码角度分析JPEG的编/解码方式, 并且都只是介绍编码过程中的主要方法。所以,本文从解码角度详细分析JPEG的编/解码过程,并且加入许多笔 者实践过程中遇到的问题和解决方法,希望从另一个角度说明问题,以更好帮助读者结合其他资料解决问题。 不过,介绍解码过程之前,首先要了解JPEG文件中数据的存储格式。 一、JPEG文件格式介绍 JPEG文件使用的数据存储方式有多种。最常用的格式称为JPEG文件交换格式(JPEG File Interchange Format,JFIF )。而JPEG文件大体上可以分成两个部分:标记码(Tag)和压缩数据。

实验4JPEG压缩编解码的实现

实验四JPEG压缩编解码的实现 实验目的: 使学生掌握DIB文件和JPEG文件的读写过程,能够在程序中打开DIB文件或JPEG文件,可以进行DIB文件和JPEG文件之间的格式转换。 实验环境: 具有多媒体处理功能的计算安装有Windows操作系统,安装有Visual c++6.0程序设计软件。 实验要求: 学习相关理论指导,掌握相关程序设计知识;按照实验步骤要求完成程序设计任务,书写实验报告,试验报告中要求包含程序实现的主要程序代码。 实验内容和实验步骤: 1)创建基于单文档的应用程序:RWJpegExp,并支持窗口滚动 2)为项目添加CJpeg类和jpeglib2库文件 3)通过“Project/Settings…”菜单,选中Link选项卡如下设置:

4)利用ClassWaizard重载CwinApp的OnFileOpen()函数。 void CRWJpegExpApp::OnFileOpen() { // TODO: Add your command handler code here CString szOpenFilter = "图象文件|*.bmp; *.dib; *.jpg; *.jpe; *.jpeg; |位图文件(*.bmp;*.dib)|*.bmp; *.dib|JPEG文件(*.jpg;*.jpe;*.jpeg)|*.jpg; *.jpe; *.jpeg|All Files (*.*)|*.*||"; CFileDialog FileDlg(TRUE, "*.bmp", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szOpenFilter); if (FileDlg.DoModal() == IDOK) OpenDocumentFile(FileDlg.m_ofn.lpstrFile); } 5)利用ClassWaizard重载CRWJpegExpDoc类的的OnOpenDocument()函数。BOOL CRWJpegExpDoc::OnOpenDocument(LPCTSTR lpszPathName) { char drive[_MAX_DRIVE]; char dir[_MAX_DIR]; char fname[_MAX_FNAME]; char ext[_MAX_EXT]; _splitpath((LPCSTR)lpszPathName, drive, dir, fname, ext); if (! stricmp(ext, ".jpg") || ! stricmp(ext, ".jpe") || ! stricmp(ext, ".jpeg") ) // JPEG file {

JPEG图像格式详解

JPEG图像格式详解 JPEG 压缩简介 ------------- 1. 色彩模型 JPEG 的图片使用的是 YCrCb 颜色模型, 而不是计算机上最常用的 RGB. 关于色彩模型, 这里不多阐述. 只是说明, YCrCb 模型更适合图形压缩. 因为人眼对图片上的亮度 Y 的变化远比色度 C 的变化敏感. 我们完全可以每个点保存一个 8bit 的亮度值, 每 2x2 个点保存一个 Cr Cb 值, 而图象在肉眼中的感觉不会起太大的变化. 所以, 原来用 RGB 模型, 4 个点需要 4x3=12 字节. 而现在仅需要 4+2=6 字节; 平均每个点占 12bit. 当然 JPEG 格式里允许每个点的 C 值都记录下来; 不过 MPEG 里都是按 12bit 一个点来存放的, 我们简写为 YUV12. [R G B] -> [Y Cb Cr] 转换 ------------------------- (R,G,B 都是 8bit unsigned) | Y | | 0.299 0.587 0.114 | | R | | 0 | | Cb | = |- 0.1687 - 0.3313 0.5 | * | G | + |128| | Cr | | 0.5 - 0.4187 - 0.0813| | B | |128| Y = 0.299*R + 0.587*G + 0.114*B (亮度) Cb = - 0.1687*R - 0.3313*G + 0.5 *B + 128 Cr = 0.5 *R - 0.4187*G - 0.0813*B + 128 [Y,Cb,Cr] -> [R,G,B] 转换 ------------------------- R = Y + 1.402 *(Cr-128) G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128) B = Y + 1.772 *(Cb-128) 一般, C 值 (包括 Cb Cr) 应该是一个有符号的数字, 但这里被处理过了, 方法是加上了 128. JPEG 里的数据都是无符号 8bit 的. 2. DCT (离散余弦变换) JPEG 里, 要对数据压缩, 先要做一次 DCT 变换. DCT 变换的原理, 涉及到数学知识, 这里我们不必深究. 反正和傅立叶变换(学过高数的都知道) 是差不多了. 经过这个变换, 就把图片里点和点间的规律呈现出来了, 更方便压缩.JPEG 里是对每 8x8

常用解码芯片介绍

解码芯片介绍:(排名不分先后) 很多烧友在苦苦寻找哪款解码器最适合自己,那么下面就我一些所知作一下介绍,以便于大家选择,当然也期望高手光临指导,我也在探索研究中。以排名第一的PCM1794/PCM1794,为100分,对解码芯片进行打分。 比较常见的高端解码器芯片有下面那一些: 以下几款只要能设计好,调音好,做好,都可以出最好的声音,效果难分难解,各有特色,各有所长所好。芯片的指标并不代表声音的好坏,关键看周围其他电路设计,决定了最后输出声音的品质。下面的声音解说,都是按照“音乐剑神”的设计调音能力能达到的最高水平。不包括也不保证,其他品牌用同样的芯片,能达到同样效果。我觉得听了及格的没几款。如果发现和我们类同介绍,必是盗版。 多片DAC芯片并联能提高多少效果: 很多客户问,那2片并联或4片并联到底能提高多少效果呢?拿4片16BIT的并联,和1片24BIT的,区别多少? 并联使用DAC可提高等效比特数,提高转换精度,还原音乐的厚度感和力度感增强。当DAC并联使用时,信噪比、动态范围都会提高,而失真度将会减小,各种误差也被平均化而降低。并联的方法有很多种,风格稍有不同。

大体上说:2个18 bit DAC并联后的转换精度相当于19 bit,4个20 bit DAC并联后转换精度相当于23 bit ,而8个20 bit DAC并联后转换精度相当于24 bit,等等。PCM1704等24 bit DAC出现之前,高档数字音响的24 bit转换精度就是利用多个DAC并联方法得到的。所以4个16 bit的并联,相当于19 bit效果。 从人耳声音听感上来说,区别不可能象技术指标数字上的差距那么大。24BIT的技术指标要比20BIT高16倍,即2的4次方,24BIT的技术指标要比16BIT的高1024倍。所以2并联从技术指标上来,20BIT的就相当于21BIT的了,提高100%,但声音效果是提高10%左右。同理4并联可以提高约20%。所以多片DAC并联,实际听感,并不如很多人想象的可以提高那么多,很多还是商业广告需求。 1,TDA1541:16BIT芯片。飞利浦顶级CD机王,大量采用。虽然是16BIT的,但效果15年前算是一流,中音温暖迷人,音乐味道浓郁。属于温暖甜美类型,适合古典,听人声,是这几款里面最好的。缺点是,解稀力和动态由于是16BIT的限制,稍有不足,但也不差了。制作容易做成功。属于老黄忠了。有的人觉得很好,很喜欢那味道。我估计是他周围器材设备不是最好,声音比较硬,那松暖声音风格,对硬声的器材,有很好的调和作用。但配于更高档的,比如我们音乐剑神的器材,1541的缺陷就暴露无疑问。我个人觉得高音解析力不足,那种高档器材产生的透明度,空灵感,余音绕梁感很缺。中音是温暖,但缺中气,

相关文档
最新文档