VC++数字图像处理常见图像格式及编码处理

更新时间:2023-05-04 04:00:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

内蒙古科技大学

本科生毕业设计说明书(毕业论文)

题目:VC++数字图像处理

-常见图像格式及编码研究

学生姓名:李俊武

学号:2003055316

专业班级:通信03-3

指导教师:吕晓琪教授

内蒙古科技大学毕业设计说明书(毕业论文)

摘要

图像是现在信息社会最基本的信息。由于图像的信息量大,图像的检索、分析、处理和存储又有较高的数据传输要求,而图像编码可以在满足一定要求下进行数据压缩,这样数字图像编码使得图像信号可以高质量地传输,增加通信能力,用较小的储存空间存储更大的信息量。

图像数据之所以能得到压缩是由于原始的图像信源存在相关性及不等概性。这些压缩技术可以归类为有失真压缩和无失真压缩。因此图像压缩编码技术的研究显得特别有意义,也正是由于图像压缩编码技术及传输技术的不断发展、更新,推动了现代多媒体技术应用的迅速发展。

数字图像编码研究从20世纪40年代开始,90年代提出了一系列编码标准。设计中涉及到了三种图像格式:BMP、GIF和JPEG;设计中的C++程序实现了三种图像格式的互相转化。BMP是Windows下经常使用的图像格式,GIF和JPEG是网络传输所支持的两种图像格式。

由于本人水平有限,在设计思路和程序中难免有不完善之处,敬请各位老师批评指正。

关键词:图像编码,BMP,GIF ,JPEG

I

内蒙古科技大学毕业设计说明书(毕业论文)

Abstract

Image is the basic information in the current information society. Image coding can meet certain requirements of the higher data transmission that image retrieval, analysis, processing and storage of the huge number of image information need under the data compression.In this way, we can improve transmission quality of image signals, increase communications capability and use smaller storage space to keep more information.

The reason why the digital image can be compressed is that there are correlation and unequal probability in the original source image. These compression technologies can be classified as anamorphic compression and lostless compression. Therefore image compression coding technology research is particularly meaningful. It is that image compression coding technology and transmission technology continues to develop, update promote the rapid development of application of modern multimedia technology.

The study of digital image coding started 1940s, and a series of coding standards was raised in 1990s. There are three file formats involved in this university graduate design .BMP GIF and JPEG., C + + program realizes format conversion from one to another one during the three file formats.Windows BMP is frequently used as photo format , and transmission network is supported by the two Photo format .

Because myself level is limited, unavoidably has many deficiency in the design mentality and the procedure, asks respectfully teacher to criticize the instruction.

Key words: Image coding, BMP, GIF, JPEG

II

内蒙古科技大学毕业设计说明书(毕业论文)

目录

摘要......................................................................................................................................... I Abstract ......................................................................................................................................II 第一章引言. (1)

1.1 图像编码研究背景 (1)

1.2 设计中涉及的图像格式 (1)

1.3 数字图像编码的概念 (2)

第二章BMP图像文件格式 (3)

2.1 BMP图像格式简介 (3)

2.2 BMP文件结构 (3)

2.3 BMP图像的基本操作 (4)

第三章GIF文件格式 (5)

3.1 GIF文件格式简介 (5)

3.2 GIF文件结构介绍 (6)

第四章JPEG文件格式 (8)

4.1 JPEG标准简介 (8)

4.1.1 JPEG图像的简单说明 (8)

4.1.2 JPEG压缩简介 (9)

4.1.3 JPEG颜色模型 (9)

4.2 JPEG编码步骤 (10)

4.3 JPEG文件格式内容 (11)

第五章数字图像编码简介 (12)

III

内蒙古科技大学毕业设计说明书(毕业论文)

5.1 编码的原则和步骤 (12)

5.2 主要的编码方法 (12)

5.3 设计中所用到编码简介 (13)

5.3.1 哈夫曼编码算法 (13)

5.3.2 LZW编码算法 (14)

5.3.3 RLE及其他编码 (14)

第六章设计程序简介 (15)

6.1 C++语言简介 (15)

6.1.1 C++语言特点 (15)

6.1.2 C++集成环境下MFC编程 (15)

6.1.3 VC++6.0面向对象的编程 (16)

6.2 本设计的程序简介 (16)

6.2.1 CDib类 (16)

6.2.2 CGif类 (17)

6.2.3 CJpeg类 (18)

6.2.4 程序设计的思路 (20)

6.2.5 程序运行界面的设计 (22)

6.2.6 程序运行及程序界面 (23)

第七章结论 (25)

参考文献 (26)

附录A:DIB.H源代码 (27)

附录B:JPEG.H源代码 (32)

附录C:GIF.H源代码 (34)

IV

内蒙古科技大学毕业设计说明书(毕业论文)

致谢 (38)

V

内蒙古科技大学毕业设计说明书(毕业论文)

第一章引言

1.1 图像编码研究背景

图像是物体反射或透射的光能量或者发光物体本身发出的光能量被人的视觉系统所接收,在大脑中所形成的印象或认识。照片、图画、电影、电视都属于图像范畴。

数字图像的定义:计算机处理图像的前提是图像必须以数字化的格式存储,我们把以数字化格式存储的图像称为数字图像。

今天,计算机技术和互联网络的飞速发展把社会的信息化进程推向了一个全新的阶段,图像信息的传递与交流已经成为整个现代社会生活运作的重要基础,随着多媒体和互联网的发展,不仅要求大量存储和传输图像,而且往往要求在保证质量的前提下以较小的空间存储图像,以较少的比特率传输图像,未压缩数字化图像的信息量过于庞大,因此最好采用合适的方法对图像进行压缩,以便图像的存储和传输。

多媒体技术和网络与移动的飞速发展激发了人们进行视频信息交流的需求,推动了图像通信和数字视频技术的全面发展。图像和视频信号数字化可避免远距离传输的累计失真,数字化存储可以高保真还原,并且容易借助计算机进行灵活处理和管理。但数字化为人们带来诸多便利的同时,也带来了挑战。数字化的高质量是以高码率为代价的,成为数字视频发展的瓶颈和计算机,通信,消费电子三大信息支柱产业共同的核心技术。

1.2 设计中涉及的图像格式

本设计程序仅实现对三种图像的格式做简单介绍;并对BMP,GIF和JPEG格式的图片互相转换,在附录中给出了操作三种图像文件程序的头文件。

把图像的像素按不同的方式进行组织存储,就得到不同图像格式的图像文件。

BMP-WINDOWS的基本图像文件格式。图像数据处理方式有压缩和不压缩两种,压缩方式采用的是行程长度编码(RLE)。

GIF-采用字串表压缩(LZW)编码为基础压缩图像数据,能够有效的压缩文件大小,此种格式图像支持网络传输。

JPEG-采用的多种编码方法来分步编码。JPEG编码对图像进行有损压缩,压缩比可以调整,压缩比越大,图像文件越小,图像质量越差;反之,压缩比越小,图像文件越大,图像质量越好。

1

内蒙古科技大学毕业设计说明书(毕业论文)

1.3 数字图像编码的概念

图像编码也称图像压缩,在满足一定图像质量要求的前提下,通过数学运算将原来较大图像文件变为较小图像文件的数字处理技术。

图像数据解压缩也就是图像解码,是把原来压缩的图像数据还原成原始数据或者与原始数据相接近的数据的技术。

图像可以按其内容的运动状态分为静止图像和活动图像,静止图像编码是视频编码的基础。静止图像编码包括JPEG和JPEG2000。JPEG(Joint Photographic Experts Group)是一个由ISO和IEC两个组织机构联合组成的一个专家组,负责制定静态的数字图像数据压缩编码标准,这个专家组开发的算法称为JPEG算法,并且成为国际上通用的标准,因此又称为JPEG标准。JPEG是一个适用范围很广的静态图像数据压缩标准,既可用于灰度图像又可用于彩色图像。

图像编码的必要性:图像信息量大;图像传输率要求高。

图像编码的可能性:一方面是图像信号中存在大量冗余度可供压缩,并且这种冗余度在解码后还可无失真恢复;另一方面还可以利用人的视觉特性,在不被主观视觉觉察的容限内,通过减少表示信号的精度,以一定的客观失真度换取数据的压缩。图像的冗余度存在于结构和统计两方面。图像信号结构上的冗余度表现为很强的空间(帧内的)和时间(帧间的)的相关性;信号统计上的冗余度来源于被编码信号概率密度分布的不均匀。图像数据冗余包括::统计冗余,信息熵冗余,结构冗余,知识冗余,视觉冗余。

对数字化后的信源信号通过一种有效的信号编码方式对数据进行编码压缩称为信源编码;一般在信源编码后需要在编码后的码流中有目的的按一定规则加入差错校验码,进行误码防护,称为信道编码。信源编码减少自然存在的冗余度,以更有效的方式表示信号;信道编码是加入人工控制的冗余度以获得更好的抗误码性能。

2

内蒙古科技大学毕业设计说明书(毕业论文)

第二章BMP图像文件格式

要利用计算机对数字化图像进行处理,首先要对图像的文件格式要有清楚的认识,自然界的图像是以模拟信号的形式存在,在用计算机进行处理以前,首先要数字化,比如摄像头(CCD)摄取的信号在送往计算机处理前,一般情况下要经过数模转换,这个任务常常由图像采集卡完成,它的输出一般为裸图的形式;如果用户想要生成目标图像文件,必须根据文件的格式做相应的处理。下面对BMP图像文件进行简单介绍。

2.1 BMP图像格式简介

BMP(Bitmap-File)图像文件是Windows采用的图像文件格式,在Windows环境下运行的所有图像处理软件都支持BMP图像文件格式。Windows系统内部各图像绘制操作都是以BMP为基础的。Windows3.0以前的BMP图像文件格式与显示设备有关,因此把这种BMP图像文件格式称为设备相关位图DDB(device-dependent bitmap)文件格式。Windows 3.0以后的BMP图像文件与显示设备无关,因此把这种BMP图像文件格式称为设备无关位图DIB(device-independent bitmap)格式,目的是为了让Windows能够在任何类型的显示设备上显示所存储的图像。BMP位图文件默认的文件扩展名是BMP或者bmp(有时它也会以.DIB或.RLE作扩展名)。

2.2 BMP文件结构

BMP文件由文件头、位图信息头、颜色信息和图像数据四部分组成。文件头主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息;位图信息头包含图像的尺寸信息、图像用几个比特数值来表示一个像素、图像是否压缩、图像所用的颜色数等信息。颜色信息包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板,但如果图像为真彩色,既图像的每个像素用24个比特来表示,文件中就没有这一块信息,也就不需要操作调色板。文件中的数据块表示图像的相应的像素值,需要注意的是:图像的像素值在文件中的存放顺序为从左到右,从下到上,也就是说,在BMP文件中首先存放的是图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右边的的顺序存储的;另外一个需要关注的细节是:文件存储图像的每一行像素值时,如果存储该行像素值所占的字节数为4的倍数,则正常存储,否则,

3

内蒙古科技大学毕业设计说明书(毕业论文)

需要在后端补0,凑足4的倍数。

2.3 BMP图像的基本操作

在实现数字图像处理的过程中,主要是通过对图像中的每一个像素点运用各种图像处理算法来达到预期的效果,所以进行图像处理的第一步,也是最关心的问题,是如何得到图像中每一个像素点的亮度值;为了观察和验证处理的图像效果,另一个需要解决的问题是如何将处理前后的图像正确的显示出来。程序中对BMP图像的基本操作有:

(1).对图像文件的格式选择;

(2).操作调色板;

(3).图像数据的读取、存储和显示等。

随着科技的发展,图像处理技术已经渗透到人类生活的各个领域并得到越来越多的应用。通过操作某种格式的文件,可以获取正确显示图像所需的调色板信息,图像的尺寸信息,图像中各个像素点的亮度信息等等,有了这些数据,开发人员就可以对图像施加各种处理算法,进行相应的处理。如果特殊情况下需要处理其它某种格式的图像,如GIF、JPEG等格式的图像文件,可以首先将该格式转换为BMP格式,然后再进行相应的处理。

4

内蒙古科技大学毕业设计说明书(毕业论文)

第三章GIF文件格式

GIF的全称是Graphics Interchange Format,译做图形交换格式。GIF是一种公用的图像文件格式标准,但它归CompuServe公司版权所有。这种图像格式主要是为了通过网络传输图像而设计的。GIF文件不支持24位真彩色图像,最多只能存储256色的图像或灰度图像;GIF格式文件也无法存储CMY和HIS模型的图像数据。

3.1 GIF文件格式简介

CompuServe的GIF (图像交换格式) 以两种方式来压缩图像文件:首先,它使用一种叫做Lempel-Ziv 的编码方式,将同一个行列间颜色相近的像素当成是一个单位。其次,它限制文件本身的索引色(indexed color)。也就是说一个GIF文件必须不得超过256 色,所以必须减少图像所使用的颜色后方能使用。这也就是为什么GIF格式不适合用于相片或高彩度图像的原因。

GIF有很多的特色。一个GIF文件可以同时含有多张的图像,并且分配给每一张图像一段时间来制作成动画。它还具备透明的功能:只要指定色盘中的某色为透明色即可。这是一个:“非..则...”的绝对逻辑;若有像素的颜色很接近指定的颜色时,它将仍然会保留原本的颜色,并且不会变成半透明或部分透明的状态。

GIF文件的数据,是一种基于LZW算法的连续色调的无损压缩格式。其压缩率一般在50%左右,它不属于任何应用程序。目前几乎所有相关软件都支持它,公共领域有大量的软件在使用GIF图像文件。

GIF解码较快,因为采用隔行存放的GIF图像,在边解码边显示的时候可分成四遍扫描。第一遍扫描虽然只显示了整个图像的八分之一,第二遍的扫描后也只显示了1/4,但这已经把整幅图像的概貌显示出来了。在显示GIF图像时,隔行存放的图像会给人感觉到它的显示速度似乎要比其他图像快一些,这是隔行存放的优点。

GIF 文件格式图像的特点:

(1)GIF文件采用了LZW无损压缩算法来保存图像。

(2)GIF文件允许设置背景的透明属性。

(3)GIF文件格式可在一个文件中存放多幅彩色图像并且制作出幻灯片或者动画效

5

内蒙古科技大学毕业设计说明书(毕业论文)

果。

(4)GIF文件支持图像数据的交叉存储方式,一个大图像可以逐步显示,让用户看到一个图像概貌,然后清晰显示。

(5)GIF文件定义的图像可以加入文本。

3.2GIF文件结构介绍

GIF是一种公用的图像文件格式标准,它的文件结构由以下四大部分组成:

(1).文件头描述块(Header):文件头描述块(Header)由GIF标记域(Signature)和版本号(Version)域组成,是一个由6个固定字节组成的数据块,它们用来说明使用的文件格式是GIF格式及当前所用的版本号。GIF标记域(Signature)存放的是“GIF”,版本号域存放的是“87a”(1987年5月发布的)或者“89a”(1989年7月发布的)或者更加新的版本号。

(2).GIF数据流部分:

a:逻辑屏幕描述块(Logical Screen Descriptor):逻辑屏幕描述块包含定义图像显示区域的参数,包括背景颜色信息;

b:全局彩色表(Global Color Table) :全局彩色表可用于图像本身没有带彩色表的所有图像和无格式文本扩展块(Plain Text Extension);

c:图像标志符:每幅图像必须要落在逻辑屏幕描述块(Logical Screen Descriptor)中定义的逻辑屏(Logical Screen)尺寸范围里;

d:局部彩色表:局部彩色表用于紧跟在它后面的图像,彩色表是否存在取决于图像描述块(Image Descriptor)中局部彩色表标志位(Local Color Table Flag)的设置;彩色表的结构和大小与全局彩色表(Global Color Table)完全相同;

e:图像数据(Table Based Image Data):图像数据由LZW最小代码长度(LZW Minimum Code Size)和图像数据(Image Data)组成;

f:图形控制扩展块(Graphic Control Extension):图形控制扩展块包含处理图形描绘块时要使用的参数;

g:注释扩展块:注释扩展块用来说明图形、作者或者其他任何非图形数据和控制信息的文本信息;

h:图形文本扩展块(Plain Text Extension):图形文本扩展块包含文本数据和描绘文本所须的参数, 文本数据用7位的ASCII字符编码并以图形形式显示;

6

内蒙古科技大学毕业设计说明书(毕业论文)

(3).应用程度扩展块(Application Extension):应用程度扩展块包含制作该图像文件的应用程序的相关信息;

(4).GIF文件结尾部分:用于表明GIF文件结束。

在GIF图像的编解码中用到了LZW压缩算法,把这些字符流转换成另一种形式的代码流,解码过程则是把这种代码流还原成原来的字符流。

7

内蒙古科技大学毕业设计说明书(毕业论文)

第四章JPEG文件格式

静态图像数据压缩标准JPEG(Joint Photographic Experts Group),直译为联合摄影术专家组,其中联合是指几个国际组织的联合。它是从1986年正式开始制订的。当时由两个国际组织联合支持;其一,是国际标准组织ISO;其二,是国际电报电话咨询委员会CCITT。到 1987年l1月,国际电工委员会IEC也参加合作,因此说 JPEG是三个国际组织合作的成果。虽然从1986开始,经过许多次国际会议讨论和修改后,于1992年7月2日表决通过标准的第一部分,并对有关测试标准草案(即标准的第二部分)作进一步修改。JPEG是ISO的标准,同时也CCITT的推荐标准。

4.1 JPEG标准简介

JPEG是是最常用的图像文件格式,也是目前网络上最流行的图像格式,因为JPEG 格式的文件尺寸较小,网络下载速度快,JPEG格式压缩的主要是高频信息,对色彩的信息保留较好,是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失。但是JPEG压缩技术十分先进,在获得极高的压缩率的同时能展现十分丰富生动的图像,支持多种压缩级别,压缩比率通常在10:1到40:1之间,压缩比越大,品质就越低;相反地,压缩比越小,品质就越好。

4.1.1JPEG图像的简单说明

JPEG是数字图像压缩的国际标准。它用于连续变化的静止图像,这里包括灰度等级和颜色两方面的连续变化。JPEG包含两种基本压缩方法,各有不同的操作模式。第一种是有损压缩,它是以DCT(Discrete Cosine Transform)为基础的压缩方法。第二种为无损压缩,又称预测压缩方法。但最常使用的是第一种, 即DCT压缩方法,也称为基线顺序编解码(Baseline Sequential Codec)方法,因为这种方法的优点是先进、有效、简单、易于交流,因此应用广泛,是以DCT为基础的最基本、最重要的方法。

JPEG (静态图像压缩标准) 图像格式可支持 24-bit 全彩。它精确地纪录每一个像素的亮度,用取出平衡色调的方式来压缩图像,使人们的肉眼并无法明显的分辨出来。

8

内蒙古科技大学毕业设计说明书(毕业论文)

事实上,它是在纪录一张图像的描述说明,而不是如其表面的对图像进行压缩。浏览者所使用的网络浏览器或图像编辑软件将解译它所纪录的描述说明成为一张点阵图像,让它看起来可以很类似其原始的影像。

JPEG标准是对静态图像制订的,但也可用于对连续运动图像进行压缩,在因特网上只允许用两种图像格式,JPEG和GIF。

4.1.2JPEG压缩简介

JPEG专家组开发了两种基本的压缩算法:

(1)采用以DCT为基础的有损压缩算法;

(2)采用以预测技术为基础的无损压缩算法。

在JPEG标准中定义了四种编码模式:

(1)无损模式:基于DPCM;

(2)基准模式:基于DCT,一遍扫描;

(3)递进模式:基于DCT,从粗到细多遍扫描;

(4)层次模式:含多种分辨率的图(2n倍)。

本设计基于DCT有损压缩算法的基准(baseline)模式中的顺序(sequential)处理所对应的算法和格式,其熵编码只使用Huffman编码。JPEG在使用DCT进行有损压缩时,压缩比可调整。在压缩10到30图像效果仍然不错,因此得到了广泛的应用。

4.1.3JPEG颜色模型

JPEG 的图片使用的是 YCrCb颜色模型, Y代表亮度,Cr代表了光源中的红色分量,Cb代表了光源中的蓝色分量,而不是计算机上最常用的RGB。关于色彩模型,YCrCb 模型更适合图像压缩。因为人眼对图片上的亮度Y的变化远比色度C的变化敏感;完全可以每个点保存一个8bit的亮度值,每2×2个点保存一个 CrCb值,而图像在肉眼中的感觉不会起太大的变化,所以,原来用 RGB 模型,4个点需要 4×3=12字节。而现在仅需要4+2=6字节,平均每个点占12bit。当然JPEG 格式里允许每个点的C值都记录下来。

按公式4-1、4-2、4-3实现从[Y Cb Cr] 到[R G B]的转换:

R = Y + 1.402 *(Cr-128) (公式4-1)

9

内蒙古科技大学毕业设计说明书(毕业论文)

10 G = Y - 0.34414*(Cb-128) - 0.71414*(Cr-128) (公式4-2)

B = Y + 1.772 *(Cb-128) (公式4-3)

一般,C 值(包括Cb 、Cr)应该是一个有符号的数字,但这里被处理过了,方法是加上

了128。JPEG 里的数据都是无符号8bit 的。

4.2 JPEG 编码步骤

(1)图像数据读入并按照8×8大小分块

对每个单独的彩色图像分量,把整个分量图像分成若干8×8的图像块,并作为两维

离散余弦变换的输入。通过DCT 变换,把能量集中在少数几个系数上 。

(2) 正向离散余弦变换(FDCT)

变换DCT 使用公式4-4、4-5、4-6计算:

(公式4-4) (公式4-5) f(i,j) = v(i,j) – 128 (公式4-6)

其中称 为直流系数DC ,其他F (u ,v )为交流系数AC 。逆变换IDCT 使用式4-7计算:

(公式4-7)

在计算两维的DCT 变换时,可使用下面的计算式4-8、4-9把两维的DCT 变换变成两

次一维的DCT 变换 :

(公式4-8) (公式4-9)

(3) 量化(quantization)

量化指对经过FDCT 变换后的频率系数进行量化。

量化的目的是减小非“0”系数的幅度以及增加“0”值系数的数目。

量化是图像质量下降的最主要原因。

对于有损压缩算法,JPEG 算法使用如下图所示的线性(均匀)量化器进行量化。

量化步距是按照系数所在的位置和每种颜色分量的色调值来确定。

77001(21)(21)(,)()()(,)cos cos

1616i j i u j v F u v u C v f i j ππ==??++????∑∑10()1, 0w C w w ==>?77

001(0,0)(,)88i j F f i j f ====∑∑77001(21)(21)(,)()()(,)cos cos 41616u v i u j v f i j C u C v F u v ππ==++??=????∑∑701(21)(,)()(,)cos 216j j v G i v C v f i j π=??+=????∑701(21)(,)()(,)cos 216i i u F u v C u G i v π=+??=????∑

内蒙古科技大学毕业设计说明书(毕业论文)

11 可以用式4-10计算量化值:

(公式4-10)

其中,Sq(u,v)为量化后的结果、F(u,v)为DCT 系数、Q(u,v)为量化表中的数值。 因为人眼对亮度信号比对色差信号更敏感,因此使用了两种量化表:亮度量化表和色差量化表此外,由于人眼对低频分量的图像比对高频分量的图像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小。

(4) Z 字形编码(zigzag scan)

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

(5) 使用差分脉冲编码DPCM 对直流系数DC(direct current)进行编码

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

Delta = DC(0,0)k - DC(0,0)k-1 (公式4-11)

(6) 使用行程长度编码RLE 对交流系数AC(alternating current)进行编码

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

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

(7) 熵编码(Huffman/算术)

把图像数据编码后得到的AC 系数、DC 系数、色度信息和亮度信息分各用一个哈夫曼表存储。JPEG 编码的最后一个步骤是把各种标记代码和编码后的图像数据组成一帧一帧的数据,这样做的目的是为了便于传输、存储和译码器进行译码。这样的组织的数据通常称为JPEG 位数据流(JPEG bitstream)。

4.3 JPEG 文件格式内容

JPEG 文件格式内容包括:图像开始标记、应用0标记段、应用n 标记段、量化表定义段、帧参数段、Huffman 表定义段、扫描参数段、图像压缩数据、图像结束标记。 (,)(,)(,)F u v Sq u v round Q u v ??= ???

内蒙古科技大学毕业设计说明书(毕业论文)

12 第五章 数字图像编码简介

在多媒体系统中,图像信息占用相当大的存储空间,这对于计算机的存储、访问、处理以及在通信线路上的传输都带来巨大的负担。图像信息存在着大量的冗余,在多媒体技术中,图像压缩非常重要。图像压缩方法也可以分成两种类型:有损压缩和无损压缩。

无损压缩利用数据的统计特性来进行数据压缩,典型的编码有Huffman 编码、行程编码、算术编码和Lempe1-Zev 编码。无损压缩的压缩率一般为2:l ~5:1。

有损压缩不能完全恢复原始数据,而是利用人的视觉特性使解压缩后的图像看起来与原始图像一样。主要方法有预测编码、变换编码、模型编码、基于重要性的编码以及混合编码方法等。压缩比随着编码方法的不同差别较大。

5.1 编码的原则和步骤

图像压缩编码的基本原则:

(1).编码重复压缩;

(2).像素间重复压缩;

(3).视觉重复压缩。

图像编码的三个步骤:

(1).对表示信号的形式进行某种映射,即变换描写信号的方式;

(2).满足对图像质量一定要求的前提下,减少表示信号的精度;

(3).利用统计编码消除最终被编码的符号所含的冗余度。

5.2 主要的编码方法

主要的编码有:

(1).预测编码——利用信号在局部空间和时间范围内的相关性,以已经传出的紧邻像素值作为参考,预测当前像素值,然后量化,编码,预测误差。例如:DPCM (差分脉冲编码调制);

(2).变换编码——将一组像素值经过某种形式的正交变换成一组变换系数,然后根据人的主观视觉特性对各变换系数进行不同精度的量化后编码的技术;

(3)信息熵编码——以信息熵原理为基础,把数据出现概率大的码元用小的码元长度编码表示,而数据出现概率小的用大的码元长度编码表示。例如:哈夫曼编码,字符串

内蒙古科技大学毕业设计说明书(毕业论文)

编码(LZW),游程编码(RLC),算术编码(AC)。

此外编码算法还有:子带编码,基于模型的编码,分组编码中的矢量量化编码,神经网络编码,轮廓编码等。

5.3 设计中所用到编码简介

本设计中JPEG图像用到了哈夫曼编码,GIF图像用到了LZW编码。下面对设计中用到的主要几种编码做简单介绍。

5.3.1哈夫曼编码算法

Huffman编码就是一种无损压缩法,是1952年Huffman提出的对统计独立信源能达到最小平均码长的编码方法,它的理论依据是:在变长字码中,对于出现概率大的信息符号编以短字长的码,对于出现概率小的信息符号编以长字长的码,Huffman树的构造方法如下:

(1).对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空;

(2).在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和;

(3).从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中;

(4).重复二和三两步,直到集合F中只有一棵二叉树为止;

构造好哈夫曼树后,就可根据哈夫曼树进行编码。

Huffman编码的过程如下:

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

(2).把两个最小的概率加起来,作为新符号的概率;

(3).重复步骤1、2,直到概率和达到1为止;

(4). 在每次合并消息时,将被合并的消息赋以1和0或0和1;

(5).寻找从每一信源符号到概率为1处的路径,记录下的1和0;

(6). 对每一符号写出“1”、“0”序列(从码树的右边到左边)。

Huffman编码具有以下特点:

(1).Huffman编码不是唯一的;

(2).Huffman编码对不同信源的编码效率是不同的;

13

内蒙古科技大学毕业设计说明书(毕业论文)

(3).Huffman编码结果不等长,硬件实现困难,另外误码传播严重;

5.3.2LZW编码算法

LZW编码又称为字串表编码,是一种无损编码,属于第二类字典编码中的词典编码。它的基本思想是:在编码过程中,将遇到的字符串建立一个字符串表,表中的每个字符串都对应建立一个索引,编码时用该字符串在字符串中的索引来代替原始的数据串。

设S1,S2为存放字符串的两个临时变量,LZW_CLEAR和LZW_EOI分别为字符串表初始化标志和结束标志。编码步骤如下:

(1).根据图像中使用的颜色初始化一个字串表,字串表中的每一个颜色对应一个索引。在初始字串表的末尾再添加两个符号(LZW_CLEAR和LZW_EOI)的索引。设置字符串变量LZW_CLEAR和LZW_EOI,并初始化为空;

(2).接着输出LZW_CLEAR在字符串中的索引;

(3).从图像数据流第一个字符(假设数据以字符串表示)开始,每次读一个字符,将其赋给字符串变量S2;

(4).判断“S1+S2”是否已经存在于字符串表中。如果字串表中存在“S1+S2”,则S1=S1+S2;否则,输出S1在字符串表中的索引,并在字串表末尾“S1+S2”添加索引,同时,S1=S2;

(5).重复第3步和第4步,直到读完所以的字符为止;

(6).输出S1中的字符串在字串表中的索引,然后输出结束标志LZW_EOI的索引,编码完毕。

LZW解码过程与编码过程相反,即将编码后的码字转换成对应字符串,重新生成字串表,然后依次输出对应的字符串即可。

5.3.3RLE及其他编码

BMP图像数据的位图阵列数据的存储格式有压缩和非压缩两种格式:

(1).非压缩格式:位图中的每一个点的象素值对应与位图阵列的若干位,而位图阵列的若干位由图像的高度、宽度及图像的颜色数决定;

(2).压缩格式:在bmp格式文件中,Windows支持BI-RLE8和BI-RLE4两种压缩类。

在GIF图像文件编码和JPEG图像文件编码中用的其他编码方法如差分脉冲编码、行程长度编码和熵编码等在此不做介绍。

14

内蒙古科技大学毕业设计说明书(毕业论文)

第六章设计程序简介

所用的设计工具是VC++6.0。当前运用得较为广泛的C++有Microsoft公司的Visual C++(简称V C++)和Borland公司的Borland C++ (简称BC++)。本设计程序是在Microsoft Visual C++ 6.0集成环境下完成的。

6.1C++语言简介

C++语言建立在C语言的基础之上。向C语言中加入了面向对象程序设计需要的新的关键字和语法。研制(开发)C++的一个重要目标是使C++首先是一个更好的C,所以C++根除了C中存在的许多问题。C++的另一个重要目标就是面向对象的程序设计语言,因此在C++中引入了类的机制。最初的C++被称为“带类的C”,1983年正式命名为C++(C Plus Plus)。以后经过不断完善,形成了目前的C++。

6.1.1C++语言特点

C++语言的主要特点表现在两个方面,一是全面兼容C语言,二是支持面向对象程序设计方法。

(1).C++是一个更好的C,它保持了C语言的优点,大多数的C程序代码略作修改或不作修改就可在C++的集成环境下调试和运行。这对于继承和开发当前已在广泛使用的软件是非常重要的,可以节省大量的人力和物力。

(2).C++是一种面向对象的程序设计语言。它使得程序的各个模块的独立性更强,程序的可读性和可移植性更强,程序代码的结构更加合理,程序的扩充性更强。这对于设计、编制和调试一些大型的软件尤为重要。

VC++应用程序的开发主要有两种模式,一种是WIN API方式,另一种则是MFC方式,传统的WIN API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN API开发更具备效率优势。

6.1.2C++集成环境下MFC编程

MFC(Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让编程人员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。

C++中的类是指一组有相同属性和服务的一组对象的集合。构成MFC框架的是MFC

15

本文来源:https://www.bwwdw.com/article/iqee.html

Top