用VC实现图像的离散余弦变换毕业设计_第1页
用VC实现图像的离散余弦变换毕业设计_第2页
用VC实现图像的离散余弦变换毕业设计_第3页
用VC实现图像的离散余弦变换毕业设计_第4页
用VC实现图像的离散余弦变换毕业设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计(论文) 题题 目目用用 VC+VC+实现图像的离散余弦变换实现图像的离散余弦变换 目录 目录.I 摘要 .III ABSTRACT.IV 文献综述 .V 前言 .VI 1 引言 .1 1.1背景 .1 1.2意义 .1 1.3现状与发展 .2 2 系统总体设计 .4 2.1系统的开发环境 .4 2.2系统开发的内容 .5 2.3系统需要实现的功能 .6 2.4GDI 与 GDI+基本介绍 .6 2.5系统总流程图 .8 3 正交变换知识概述 .9 3.1图像处理中的正交变换 .9 3.2傅立叶变换的基本概念 .9 3.3离散余弦变换基本概念 .13 4 图像文件格式 .16 4.1图

2、像的基本类型 .16 4.2位图的格式 .18 4.3位图数据的读取与显示 .19 5 图像离散余弦变换实现 .22 5.1AAN 方法介绍 .22 5.2实现步骤 .23 5.3结果分析 .23 6 图像离散余弦 逆变换实现 .25 6.1正变换的相关参数存储 .25 6.2根据图像数据逆变换 .25 7 系统测试及效果 .27 7.1打开图片测试 .27 7.2分块 DCT 变换测试 .27 7.3逆变换测试 .28 7.4系统性能分析 .28 8 全文总结 .29 致谢 .30 参考文献 .31 摘要 本文研究图像的 正交变换之一离散余弦变换, 使用 VC+编码具体实现 了 AAN 快速

3、算法,大 大提高了处理速度 。 本系统还实现了图 像文件的读、写及显示,先将 正变换后的 位图图像 信息 存储在文件中,然后从文件中读取位图数据,把这些数据经过离散余弦逆变换 , 最后再将变换后的数据以位图显示出来 。本文重点介绍了 离散余弦变换的原理 及其实现的方法 。 本文对离散余弦变换的基本原理、数学依据及程序的实现过程做了细致的研 究,并对 DCT 的变换图像和反变换的还原图像进行了测试。 关关键键词词: 图像正交变换,离散余弦变换 (DCT),AAN快速算法 Abstract This article works on discrete cosine transformation w

4、hich is one of orthogonal transformation of image. AAN algorithm of DCT programmed in Visual C+ platform, experimental results show that it is effection. This system also fulfill the reading、writing and displaying operations of bitmap file. Firstly, we save the positive transforming information of i

5、mage file as text file. Then, we read the image data from text file to do DCT. At last, we display the transformed data in a way of bitmap format. This article emphasizes on the theory of discrete cosine transformation and the way how to achieve it. This article carefully researches on fundamental p

6、rinciple、mathematic basis and the arithmetic of discrete cosine transformation. Besides, we test the images of positive and negative transformation. Key words: orthogonal transformation of image, discrete cosine transformation (DCT), AAN speed method 文献综述 图图像像格格式式、图图像像正正交交变变换换相相关关文文献献概概述述 图像是现代信息社会中

7、最基本的信息。数字图像处理的研究对象是图像处理 技术,这是计算机技术的重要分支和发展方向。 文献 Error! Reference source not found.介绍了 Visual C+的开发环境及静 止、视频图像压缩编码中用道的主要编码算法,如:傅立叶变换、离散余弦变换、 小波变换、熵编码、运动估计等,并对多个国际标准进行了深入的研究和分析, 如 JPEG、JPEG2000、H.261 、H.263 和 H.26L 等,同时给出了其中主要算法的Visual C+源程序。 文献 Error! Reference source not found.对傅立叶变换的特性进行了分析, 包括产生背

8、景、数学理论、算法,并对傅立叶变换和快速傅立叶变换作了比较。 文献 Error! Reference source not found.则介绍了图像变换在信息隐藏中的 应用。 文献 Error! Reference source not found.介绍了离散余弦变换编码的现状与 发展趋势。 文献 Error! Reference source not found.Error! Reference source not found.主要介绍数字图像处理的理论与方法, 介绍了各种数字图像处理的算法 及编程实现技术。主要内容包括:位图基础、图像的显示、图像的几何变换、图 像灰度变换、图像的平滑处理

9、、图像锐化处理及边缘检测等。在图像的变换域 处理及应用中,对本文研究的图像正交变换做了详细的说明。 文献 Error! Reference source not found.-Error! Reference source not found.是有关离散余弦变换的编程的相关计算机实现。很有帮助。 文献 Error! Reference source not found.-Error! Reference source not found.对图像格式、图像读取显示的原理,算法给出了细致的说明。 MFC 相相关关文文献献介介绍绍 文献 Error! Reference source not fou

10、nd.围绕面向对象思想及其在 Visual C+语言中的应用而展开,着重介绍Visual C+的语言基础,力求使读者在学 习 Visual C+的过程中逐步掌握面向对象的思想和方法。 文献 Error! Reference source not found.从剖析实例入手,详细介绍了使用 Visual C+进行可视化 Windows 应用程序开发所需的基本原理和概念,并设计 了丰富的范例和实验。 前言 本文提取出了用 Visual C+实现图像离散余弦正交变换的实现过程,并结 合有关基本概念对正交变换的特征进行了分析和研究,有助于图像变换、信息隐 藏等方向的工作者对图像的研究。本文主要分为八章

11、。 第一章主要介绍了进行图像正交变换分析和研究的背景、意义及发展前景方 向。 第二章对整个正交变换系统做了简要介绍。 第三章给出了正交变换数学原理公式及其分析方法。 第四章介绍了图像的基本格式、读取方法,并对图像格式之一BMP 做了 详细的说明。 第五章给出了图像离散余弦变换的算法分析、程序实现方法及结果分析。 第六章特别对离散余弦变换的逆过程做了研究。 第七章对系统的结果做了测试。 第八章全文所使用的方法、结果以及目的和意义做了全面的总结,是全文的 概括。 本文的完成得到了戴祖旭博士的帮助和指导,在此向他表示衷心的感谢。 王艾树 2008-06-09 于武汉工程大学理学院 1 引言 1.1

12、背景 1974 年由 Ahmed 和 Rao 提出的离散余弦变换,至今已有30 年历史。此间, DCT 编码已发展成为 JPEG , MPEG , H.26x 等图像/视频编码标准中的核心。 离散余弦变换( DCT for Discrete Cosine Transform)Error! Reference source not found.是与傅立叶变换Error! Reference source not found.相关的一种变换,它类似于离散 傅立叶变换( DFT for Discrete Fourier Transform),但是只使用实数。离散余弦 变换相当于一个长度大概是它两倍的

13、离散傅立叶变换,这个离散傅立叶变换是对 一个实偶函数进行的(因为一个实偶函数的傅立叶变换仍然是一个实偶函数), 在有些变形里面需要将输入或者输出的位置移动半个单位(DCT 有 8 种标准类 型,其中 4 种是常见的 )。 离散余弦变换 (DCT)已经成为数字信号处理和图像处理的一种重要手段,但 是其直接算法的计算量太大,速度太慢。在1988 年,Y.Arai , T.Agui, and M.Nakajima 提出的一种快速算法 AAN 算法后,极大地提高了离散余弦变换的 速度。正是 AAN 算法的出现,才使离散余弦变换得以广泛应用。 离散余弦变换是数字图像处理研究中的常用变换,它将图像数据由时

14、域变换 为频率域, 然后再进行处理,在许多情况下能提高图像处理的速度。这是信息 隐藏与数字水印研究工作的数学基础。用VC+开发图像的离散余弦正交变换 程序,可以为进一步的信息隐藏 Error! Reference source not found.研究工作提供一个实 验平台,为进一步开发信息隐藏工具软件提供必要的组件。 1.2 意义 此外,图像的正交变换被广泛地运用于图像特征提取、图像增强、图像复原、 图像压缩和图像识别等领域。正交变换是信号分析学科中的一个重要部分,它是 计算机图像处理的前续课程。多年来,变换理论在图像处理 (频域法处理) 中起着关键作用。本文将介绍对图像使用正交变换的离散余

15、弦变换的过程。 正交变换是数字图像信息处理中的重要技术。目前,人们应用在图像信息隐藏、 图像置乱中的技术主要基于时域(空间域),即根据图像像素点的坐标和颜色值的变 化,达到隐藏或置乱的目的。这样的结果将使人们得到一幅杂乱无章的图像,使得 破译者很容易发现这是经过加密的图像而去破译它。这使得正交变换尤为重要。 图像变换在数字图像处理与分析中起着很重要的作用,是一种常用的、有效 有分析手段。图像变换的目的在于:使图像处理问题简化;有利于图像特征提取; 有助于从概念上加强对图像信息的理解。 离散余弦变换,经常被信号处理和图像处理使用,用于对信号和图像(包括 静止图像和运动图像)进行有损数据压缩。这是

16、由于离散余弦变换具有很强的 “能量集中 “特性:大多数的自然信号(包括声音和图像)的能量都集中在离散 余弦变换后的低频部分,而且当信号具有接近马尔科夫过程(Markov processes)的统计特性时,离散余弦变换的去相关性接近于K-L 变换 Karhunen-Love 变换-它具有最优的去相关性 )的性能。 傅立叶变换是数字图 像处理技术的基础,其通过在时空域和频率域来回切换图像,对图像的信息特征 进行分析和提取,简化了计算工作量,被喻为描述图像信息的第二种语言,广泛 应用于图像变换,图像编码与压缩,图像分割,图像重建中 ,因此,深入研究 和掌握傅立叶变换及其扩展形式的特性 ,是很有价值的

17、 。 而从傅立叶变换的性质可知,当一函数为偶函数时,其傅立叶变换的虚部为 零,因而不需计算,只计算余弦项变换,这就是余弦变换。因此余弦变换是傅立 叶变换的特例,余弦变换是简化傅立叶变换的重要主法。近年来,余弦变换在压 缩编码中得到广泛的应用。 1.3 现状与发展 在文献 Error! Reference source not found.中,离散余弦变换 (DCT)用于图 像编码是 1974 年由 Ahmed 和 Rao 提出的。对于离散余弦变换,尽管Shapiro 的 EZW 以及 Said 等人的 SPIHT 小波编码的成功应用,对传统的DCT 编码提 出了挑战,但 Xiong 等人利川嵌

18、入式 DCT 块变换之间的直流相关性,以及对 DCT 后的系数进行策略性重组或层式DCT 同样具有小波多分辨率图像的分解 特性。此外,基于层次嵌入式DCT、形状自适应 DCT,截短 DCT,感兴趣 Ix:域 支撑 DCT 以及形态 DCT 等改进形式的编码,都是将基于DCT 变换编码推向 更高层次。就 DCT 改进的变换,以及 DCT 系数的应用,如利用 DCT 系数实 现信息隐藏等,也使得基于常规的DCT 变换编码有了更广阔的应 )用与发展空 间,是未来的发展方向。 它的应用也挺广范的,例如,在静止图像编码标准JPEG 中,在运动图像 编码标准 MJPEG 和 MPEG 的各个标准中都使用了

19、离散余弦变换。在这些标准制 中都使用了二维的第二种类型离散余弦变换,并将结果进行量化之后进行熵编码。 这时对应第二种类型离散余弦变换中的n 通常是 8,并用该公式对每个 8x8 块 的每行进行变换,然后每列进行变换。得到的是一个8x8 的变换系数矩阵。其 中(0,0)位置的元素就是直流分量,矩阵中的其他元素根据其位置表示不同频率的 交流分类。 离散余弦变换也经常被用来使用谱方法来接偏微分方程,这时候离散余弦变 换的不同的变量对应着数组两端不同的奇 /偶边界条件。 离散余弦变换也经常被用来使用谱方法来接偏微分方程,这时候离散余弦变 换的不同的变量对应着数组两端不同的奇 /偶边界条件。 2 系统总

20、体设计 对图像的正交变换的研究是一个具有很大意义的研究课题,它在许多方面都 有重要的应用。本文研究的离散余弦正交变换是其中的一个子部分,它们是最基 本最重要的。本章对正交变换的介绍,不仅会让读者了解到图像变换的基础知识, 还会让读者明白研究图像变换的实际意义。 2.1 系统的开发环境 面向对象程序设计( ObjectOriented Programming,OOP)Error! Reference source not found.方法已出现近 30 年,在 20 世纪 90 年代已经成为程序设计的主流 方向。面向对象程序设计语言是现代程序开发的工具,任何一个优秀的应用程序 开发人员都必须至少

21、熟悉一种面向对象的编程语言。 采用 C+来进行图象编程的主要原因是,与Java 和 C#等现代编程语言相 比,C+在程序运行的效率、内存使用的可控性和编程的灵活性上具有优势。 Visual C+6.0 为用户提供了一套良好的可视化开发环境,主要包括文本编 辑器、资源编辑器、工程创造工具和Debugger 调试器等。用户可以在集成环境 中创建工程、打开工程,建立、打开和编辑文件,编译、链结、运行和调试应用 程序。 程序包含两类基本元素,即数据和操作数据的指令集(称为代码)。传统的 程序设计语言以设计代码为核心,程序设计实际上是指定程序指令的先后顺序, 数据表示必须适应代码的设计。模块化程序设计方

22、法将完成某一功能的指令集组 成一个相对独立的程序模块(即函数或过程),使得程序的结构清晰,便于有效 的维护,对程序设计技术有很大的促进,随着程序规模的增大,各模块之间的相 互影响导致一些难于测试,难以定位发现问题,增加程序开发和维护的困难。面 向对象程序设计方法就是在这种背景下出现和发展起来的。 面向对象程序设计方法主要以数据为中心,代码是围绕着需要处理的数据而 设计的。面向对象程序设计语言具有如下的特征: 1.对象的类描述 面向对象程序设计语言将程序描述的事情看成一个整体,称为对象,对象是 包含数据和代码的完全独立的实体。同一类对象具有相同的性质和方法,每一个 具体的对象都是类的一个实体,创

23、建对象就是把类实例化。 2.封装性 封装性是 OOP 的核心技术,是面向对象程序语言将数据和处理数据的方法 组合在类中,并具有模块化和信息隐藏的特征。类是一个独立的模块,类的内部 状态描述数据对程序的其他部分是不可见的,类只向外界公布其具有public 属性的数据和代码,并构成类和外界的接口。外界不能直接对类进行修改,而只 能通过这个接口把信息传给类,并由类定义对内部数据进行修改,外界不能决定 这种修改的结果,只能得到类进行操作所得出的反应。封装性能防止类与外界的 非法交互和访问,避免外界对对象内部状态的错误修改,确保类这一模块的真正 的独立性,以保证程序的安全运行。 3.多态性 不同的类或对

24、象对外界传入的相同信息能够根据自身的性质作出不同的反应, 这就是多态性。不同的类或对象可以通过设计自己专有的处理外界传入信息的方 法来实现多态性。 4.继承性 继承性是指一个类可以派生出的新的类。新类可以继承原类的定义的性质和 方法,还能在原类定义的性质和方法之外加入自身定义的性质和方法。通过继承 性,能形成类之间的层次结构。 2.2 系统开发的内容 关于用 VC+方法,实现图像的正交变换,包括离散余弦正交变换及其逆变 换。由于采用了 GDIPLUS 方法对图像进行读取 ,所以图像格式可为 jpg,bmp, gif,彩色和灰度图像均可 ,但是图像经读取之后,其数据全部转换成RGB 色, 灰度图

25、像的 R,G 和 B 数据相同。通过本程序可以进行图像的正逆变换,变换 矩阵的大小可选择,但均为2 的 N 次方阶,在正变换同时保存图像频率域 ,及 逆变换时所需的信息。 逆变换也可以单独完成,即通过读文件得到相关参数,便可以直接进行图像 逆变换,得到逆变换后的图像。得到的图像也可以和原来图像进行比较。 2.3 系统需要实现的功能 本文所介绍的图像正交变换实现以下过程 (图像格式为 jpg,bmp, gif): a)图像文件读写操作实现 ; b)图像文件的显示实现 ; c)离散余弦变换 正逆变换; d)保存正变换过程得到频率域参数 (写入文本文件 ); e)读文件,逆变换 (读取文本文件 )。

26、 2.4 GDI 与 GDI+基本介绍 GDI 在 Windows 中定义为 Graphics Device Interface,即图形设备接口,是 Windows API(Application Programming Interface)的一个重要组成部分。它是 Windows 图形显示程序与实际物理设备之间的桥梁,GDI 使得用户无需关心具 体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。它的桥梁 作用体现在: (1)用户通过调用 GDI 函数将逻辑空间的操作转化为具体针对设备驱动程 序的调用。 为实现图形设备无关性, Windows 的绘图操作在一个设备描述表 上进行。用

27、户拥有自己的 “逻辑坐标 ”系统,它独立于实际的物理设备,与 “设备坐标 ”相对应。开发 Windows 应用程序时,程序员关心的是逻辑坐标, 我们在逻辑坐标系上绘图,利用GDI 将逻辑窗口映射到物理设备上。 (2)GDI 能检测具体设备的能力,并依据具体的设备以最优方式驱动这些设 备,完成真实的显示。 GDI 函数大致可分类为:设备上下文函数(如 GetDC、CreateDC、DeleteDC)、 画线函数(如 LineTo、Polyline、Arc)、 填充画图函数(如 Ellipse、FillRect、Pie)、画图属性函数(如 SetBkColor、SetBkMode、SetTextC

28、olor)、文本、字体函数(如 TextOut、GetFontData)、位图函数(如 SetPixel、BitBlt、StretchBlt)、坐标 函数(如 DPtoLP、LPtoDP、ScreenToClient、ClientToScreen)、映射函数 (如 SetMapMode、SetWindowExtEx、SetViewportExtEx)、元文件函数(如 PlayMetaFile、SetWinMetaFileBits)、区域函数(如 FillRgn、FrameRgn、InvertRgn)、路径函数(如 BeginPath、EndPath、StrokeAndFillPath)、裁剪函

29、数(如 SelectClipRgn、SelectClipPath)等。 GDI 虽然使程序员得到了一定程度的解脱,但是其编程方式仍很麻烦。譬如, 显示一张位图,程序员需要进行 “装入位图 读取位图文件头信息 启用设备 场景调色板变换 ”等一连串操作。而有了 GDI+,这些问题便迎刃而解了。 顾名思义, GDI+是 GDI 的增强版。它是微软在 Windows 2000 以后操作系 统中提供的新接口,其通过一套部署为托管代码的类来展现,这套类被称为 GDI+的“托管类接口 ”。GDI+主要提供了以下三类服务: (1)二维矢量图形: GDI+提供了存储图形基元自身信息的类(或结构体)、 存储图形基

30、元绘制方式信息的类以及实际进行绘制的类。 (2)图像处理:大多数图片都难以划定为直线和曲线的集合,无法使用二维 矢量图形方式进行处理。因此, GDI+为我们提供了 Bitmap、Image 等类,它 们可用于显示、操作和保存BMP、JPG、GIF 等图像格式。 (3)文字显示: GDI+支持使用各种字体、字号和样式来显示文本。GDI 接口是基于函数的,而 GDI+是基于 C+类的对象化的应用程序编程接口,因此 使用起来比 GDI 要方便。 在本论文的程序中,是在 GDI+平台上进行程序的编写。 2.5 系统总流程图 图像文件读取 正变换图像显示频域信息保存 原始图像显示 DCT 变换 从文本读

31、取信息 IDCT 变换 逆变换图像显示 图 2-1 系统总流程图 3 正交变换知识概述 3.1 图像处理中的正交变换 数字图象处理 Error! Reference source not found.的方法主要分为两大类:一类是空 域的处理方法(或称空域法)。把图象变换到频道域可以从另外一个角度来分析 图象的特性,其基本线性运算式是严格可逆的,并且每一个变换都存在自己的正 交函数集,满足一定的正交条件,因此,也可以将其称作酉变换。正如表示空间 的一个矢量可以用不同的坐标系一样,变换的途径虽然不同,但是它们都是空域 图象的变换域表示式。 目前,在图象处理技术中,正交变换正被广泛的运用于图象的特征

32、提取、图 象增强、图象复原、图象识别以及图象的变换编码等领域中,下面将简要介绍 傅立叶变换和离散余弦变换。 3.2 傅立叶变换的基本概念 傅立叶变换 Error! Reference source not found.是一种常见的正交变换,在数字图像 处理中应用离散傅立叶变换的概念。它的数学定义如下:如果),(yxf为一个 M*N 的数字图像,则其傅立叶变换为: 1 0 1 0 )(2 ),(),( M x N y N yv M x j eyxfF (3-1) 1 0 1 0 )(2 ),( 1 ),( MN v N yv M x j evuF MN yxf (3-2) 其中:1, 2 , 1

33、 , 0;1, 2 , 1 , 0NyMx 当图像为方阵时,即 M=N,则二维离散傅立叶变换公式为: 1 0 1 0 )(2 ),(),( N x N y N yx j eyxfF (3-3) 1 0 1 0 )(2 2 ),( 1 ),( NN v N yx j evuF N yxf (3-4) 为降低傅立叶变换的计算量,节省运算时间,在1965 年,Cooley 和 Tukey 提出了一种快速傅立叶变换( FFT)算法。 FFT 算法采用蝶形运算方法, 可以大大提高算法效率。例如, 8 点 FFT 算法一共需要 12 次复数乘法运算和 24 次复数加法运算,而 8 点 DFT 的直接定义计

34、算方法一共需要64 次复数乘法 运算和 56 次复数加法运算。 3.2.1 傅立叶变换的性质 傅立叶变换具有很多方便运算处理的性质。下面列出二维傅立叶变换的一些 重要性质。 (1) 线性 傅立叶变换是一个线性变换 Fa f(x,y)bf(x,y)a Ff(x,y)b Ff(x,y) (3-5) (2) 可分离性 一个二维傅立叶变换可以用二次一维傅立叶变换来实现。推导如下: ( , )( , )exp2 ()F uf x yjuxy dxdy ( , )exp(2)exp(2)f x yjuxjy dxdy ( , )exp(2)exp(2)f x yjux dxjy dy ( , )exp(2

35、)F f x yjy dy ( , ) yx F Ff x y (3-6) (3) 平移性 傅立叶变换具有平移的特性,推导如下: )(2exp),(),( 0000 yuxjuFyyxxfF (3-7) ),()(2exp),( 0000 uuFyxujyxfF (3-8) (4) 共轭性 如果函数),(yxf的傅立叶变换为),(uF,),(yxf的傅立叶变换的共轭函 数为:),( * uF,那么: ),(Fv)(u, * vuF (3-9) (5) 尺度变换特性 如果函数),(yxf的傅立叶变换为),(vuF,a,b 是两个标量,那么: ),(),(vuaFyxafF (3-10) ),(

36、1 ),( b v a u F ab byaxfF (3-11) (6) 旋转不变性 如果空间域函数旋转角度为 0 ,则在变换域中该函数的傅立叶变换函数也 将旋转相同的角度。表达式如下: ),(),( 00 kFrfF (3-12) 该式是在极坐标下的傅立叶变换表达式。 (7) 对称性 函数的傅立叶变换具有对称性,相应的表达式为: ),(),(vufyxFF (3-13) (8) 相关定理 如果),(yxf和),(yxg为两个二维时域函数,则可以定义相关运算o 如下: dadbbyaxgbafyxogyxf),(),(),(),( 则: * ( , )( , )( , )( , )F f x

37、yg x yF u vG u v (3-14) ),(),(),(),( * vuoGvuFyxgyxfF (3-15) 其中),(vuF为),(yxf函数的傅立叶变换,),(vuG为函数),(yxg的傅立叶变 换),( * yxg为),(yxg的共轭,),( * vuG为),(vuG的共轭。 (9) 卷积定理 如果),(yxf和,g x y 为两个二维时域函数,那么可以定义卷积运算如下: dadbbyaxgbafyxgyxf),(),(),(*),( (3-16) 则: ),(),(),(*),(vuGvuFyxgyxfF (3-17) ),(*),(),(),(vuGvuFyxgyxfF

38、(3-18) 其中),(vuF为函数),(yxf的傅立叶变换,),(yxg的傅立叶变换为),(vuG。 3.2.2 快速傅立叶变换 现在,离散傅立叶变换已成为数字信号处理的重要工具,但是它的计算量较 大,运算时间长,在某种程度上限制了它的使用。为了解决这一矛盾,引用了快 速傅立叶变换 Error! Reference source not found.的思想。快速傅立叶变换并不是一种新 的变换方式,它是离散傅立叶变换的一种算法,这种方法是建立在分析离散傅立 叶变换中的多余运算的基础上,进而消除这些重复工作的思想指导下得到的,从 而在运算中节省了大量的计算时间,达到快速运算的目的。快速傅立叶变换

39、具有 很高的计算效率也具有很强的适用性,这使得快速傅立叶变换在数字图象处理中 具有更为广泛的应用。 快速傅立叶变换的实现步骤为: (1) 开辟存储空间用以保存加权系数 i W及中间变量; (2) 采用频率分解法进行蝶形运算; (3) 重新排列序列顺序; (4) 释放存储空间。 3.3 离散余弦变换基本概念 图象处理中常用的正交变换除了傅立叶变换以外,还有其他一些有用的正交 变换,离散余弦就是其中的一种。离散余弦变换表示为DCT。 3.3.1 离散余弦变换的定义 一维序列离散余弦变换的定义 7可以由下式表示: 1 1 0 0 N N x Ff x (3-19) 1 2 0 21 cos 2 N

40、N x xu F uf x N (3-20) 其中: F u 是第u个余弦变换系数, u是广义频率变量 , 1,2,.,1fN ; f x 是时域 N 点序列, 0,1,2,.,1xN 。 一维离散余弦反变换 IDCT 由下式表示: 1 12 1 21 0cos 2 N NN u xu f xFF u N (3-21) 把上述的一维 DCT 推广到二维离散变换,表达式如下: 11 00 2121 ,coscos 22 NN xy xuyv F u va u a vf x y NN (3-22) 逆变换可以表示为: 11 00 2121 ,coscos 22 NN uv xuyv f x ya

41、u a v F u v NN (3-23) 其中:空域和变换域元素矩阵维数为N; yx,是像素空间的坐标, ,0,1,2,.,1x yN ; vu,是 DCT 空间的坐标, 7 , 1 , 0,vu; ,f x y 是二维空间域的元素; ,F u v 为经过二维离散余弦变换后的变换域元素; 式中系数为 12 0,11aa xxN NN 3.3.2 离散余弦变换的计算 与傅立叶变换一样,离散余弦变换自然可以从定义出发进行计算。但是在实 际中为了减少计算量,使得计算更加方便,需要寻找一种快速算法 Error! Reference source not found.。 以一维离散余弦变换为例,对快速

42、算法进行推导。对于 F u ,可以写成 以下的形式: 1 0 (21) 1 2 0 (21) 1 2 0 212 cos 2 2 Re 2 Re N x xu N j N x xu N j N x xu F uf x NN f xe N f x e N (3-24) 其中Re代表取实部。对于时域数据进行如下的延拓: 0,1,2,.,1 0,1,.,21 e f xxN f xN NN (3-25) 则 e fx 的离散余弦变换可以写成: 21 0 21 0 (21) 21 2 0 2 21 22 0 1 0 2(21) cos 2 2 Re 2 Re N e x N e x xup N j N

43、 e x uxu N jj NN e x Ffx N xu F ufx NN fx e N efx e N (3-26) 由式 3-26 可得 2 21 2 0 xu N j N e x fx e 是2N点的离散傅立叶变换。所以在做离散余弦变 换的时候,可以把序列的长度延长为 2N,然后做离散傅立叶变换,产生的结果 取实部就可以得到结果。 同理,在做反变换时,首先在变换空间把 F u 做如下的延拓: 0,1,2,.,1 0,1,.,21 e F uuN F u uN NN (3-27) 这样,反变换可以表示 : 21 1 21 21 2 1 2 21 22 1 2 21 22 1 2 2112

44、 0cos 2 12 0Re 12 0Re 12 0Re 122 0Re N ee u xu N j N ee u xuu N jj NN ee u xuu N jj NN ee u u j N ee xu f xFF u NNN FF ue NN FF uee NN FF u ee NN FF u e NNN A AA A 2 21 2 0 xu N j N u e (3-28) 由式 3-28 可知,离散余弦反变换快速算法可以由 2 u j N e F u e A 的2N点反傅 立叶变换快速算法实现。 4 图像文件格式 4.1 图像的基本类型 除了语音之外,图像是人类获取信息的另外一个重要

45、来源,大约70%的信 息是通过人眼获得的图像信息。图像信号是指将图像作为一种二维信号,采用数 字信号处理的方法来对图像进行描述。今后为了表示方便,图像信号就称为图像。 在近代科学研究、军事技术、工农业生产、气象、医学等领域中,人们越来越多 地利用图像来认识和判断事物,解决实际问题。例如:人们利用人造卫星所拍摄 的地面照片,来分析获取地球资源、全球气象和污染情况,利用“和平号”宇宙 飞船所拍摄的月球表面照片,分析月球的形成。在医学上,通过CT 断层扫描, 医生可以观察和诊断人体内部是否有病变组织。在公安侦破中,采用指纹提取并 处理进行破案。在军事上,目标的自动识别和自动跟踪都需要进行图像处理 E

46、rror! Reference source not found.。 下面的介绍本文用到的图像的基本类别: (1)索引图象 索引图像包括一个数据矩阵 X 和一个色图矩阵 MAP。其中, X 可以是 无符号 8 位整型、无符号 16 位整型或者双精浮点型数据; MAP 是一个包 含三列、若干行的数据阵列,其每一个元素的值均为0,1之间的双精度浮点 型数据。 MAP 矩阵的每一行分别表示红色、绿色和蓝色的颜色值。索引图象是 从像素值按照一定的规律到颜色映射值的一种图象。 (2)灰度图象 灰度图(Graysacle)是指只含亮度信息,不含色彩信息的图像。因此,要表示 灰度图,就要把亮度值进行量化,通

47、常是划分成0 一 255 共 256 个级别, 0 表 示最暗, 255 表示最亮。在 BMP 格式的图像中,可以使用 256 级的调色板来 表示灰度图。这个调色板的每一项的RGB 值都是相同的,也就是说从 (0, 0, 0), (1, 1, 1)一直到(255,255, 255)。在图像中实际存储的是调色板索引值,也就是该 像素值在调色板中位于第几行。 一幅灰度图像是一个数据矩阵I,而矩 I 中的数据均代表了在一定范围内的 颜色灰度值。计算机一般把灰度图像存储为单一的数据矩阵,数据矩阵中的每个 元素分别代表了图像中的像素。矩阵中的元素可以是双精度的浮点类型、8 位或 16 位无符号的整数类型

48、。 (3)RGB 图 RGB 图像,即真彩图像,在计算机中存储为数据矩阵。数组中的元素定义 了图像中每一个像素的红、绿、蓝颜色值。它的每一个像素都要用3 个字节分 别表示 RGB 值。需要指出的是, RGB 图像不使用 Windows 色图。像素的颜 色由保存在像素位置上的红、绿、蓝的灰度值的组合来确定。图形文件格式 RGB 图像存储为 24 位的图像,红、绿、蓝分别占 8 位,这样可以有 1000 多万种颜色(即 224=16 777 213)。 计算机中的 RGB 数组可以是双精度的 浮点类型、 8 位或 16 位无符号的整数类型。在 RGB 的双精度型数组中,每 一种颜色用在 0 和 1

49、 之间的数值表示。由于位真彩色图像所需的存储空 间很大,处理速度较慢,当需要存储空间不大,并且要求实时快速处理图像时, 一般都要利用相应的位位图对其进行近似处理,因此位位图是图像技术中涉 及范围比较广泛的一种图像表示方法。 图形图象处理 Error! Reference source not found.是计算机领域中的一个重要课题, 在人们的日常生活中应用也非常的广泛。而图像格式则是图像处理技术中的基础 部分。只有深入了解了图像格式,才能实现各种格式的转换,进行图像的变换处 理等。目前流行的图像格式种类繁多,如 BMP、TIFF,PNG,GIF,JPEG,SWF,SVG 等,此外还有一些非主

50、流的图像格式如 DXF ,WMF,LIC,TGA 等,这些图像格式都有其各自的优缺点,适用于不同的场 合。本文分析了两种具有代表性的图像文件格式并给出了VC+的读取显示实 现方法。 图像文件一般由文件头和图像点阵数据两部分构成,文件头中一般包含文件 标志,图像尺寸,颜色数等信息,这些信息由图像提供者定义;图像点阵数据包 含该图像的每一点的颜色信息。 对于各种不同的图象文件格式,其文件头所包含的信息不尽相同,其中重要 的是含有该文件所存储的图像信息的存储格式说明,对于图像处理程序来说,首 先就是读取要处理的图象文件文件头信息,获得所有必需的信息,再据此读取图 象点阵数据进行相应处理并正确显示。

51、4.2 位图的格式 BMPError! Reference source not found.是 Microsoft Windows 操作系统所支持的主 要图象文件格式之一,其格式简单,适应性强,但这种文件格式是非压缩的,故 此文件所占的磁盘空间较大。在 MFC 中也对 BMP 文件格式提供了很好的支 持。 BMP 位图文件的结构如下图所示 ,包括位图文件头结构 BITMAPFILEHEADER、位图信息头结构 BITMAPINFOHEADER、位图颜色表 RGBQUAD 和位图象素数据四个部分。 位图文件头结构 BITMAPFILEHEADER 位图信息头结构 BITMAPINFOHEADE

52、R 位图颜色表格 RGBQUAD(调色板 PALETTE) 位图像素数据 图 4-1 BMP 位图文件的结构 附:真彩色图不需要调色板。 再此列出与宽度相关的部分,这些与宽度相关的成员变量在位图信息头结构 BITMAPINFOHEADER 中,其原型为: typedef struct tagBITMAPINFOHEADER DWORD biSize; 说明 BITMAPINFOHEADER 结构所需的字节数 LONG biWidth; 说明位图的宽度,以像素为单位 LONG biHight; 说明位图的高度,以像素为单位 WORD biplanes; 说明目标设备的位平面数,必须为1 WORD

53、 biBitcount; 说明每一个像素的位数,必须为1,4,8,24 WORD biCompression; 说明一个压缩位图的压缩类型,有以下几种类型: BI-RGB,BI-RLE8,BI-RLE4 WORD biSizeImage; 说明位图的大小,以字节为单位,如果位图为BI- RGB 格式,那么该成员置为 0 才有效 LONG biXPelsPerMeter;说明位图的目标设备的水平分辨率 LONG biYPelsPerMeter; 说明位图的目标设备的垂直分辨率 DWORD biClrUsed; 说明实际使用的颜色表中的颜色变址数 DWORD biClrImportant; 重要颜

54、色的索引数 4.3 位图数据的读取与显示 在文献 Error! Reference source not found.中的相关术语:在图像处理中, 可能会经常遇到一些专业词汇。为了方便交流,先来了解一下术语。 1.像素:数字化图像是对物理图像进行采样,把物理图像划分为若干个采样 方格,这些小的采样方格就是像素。我们通常所说的屏幕分辨率为,也就是说屏 幕上每行有 1024 个像素,共有 768 行。 2. RGB 色彩系统 : 自然界中的所有颜色都可以由红绿蓝 (Red, Green, Blue) 3 原色组成。以 R 分量为例,可以人为地把它分成0 到 255 共 256 个等级。其 中,0

55、表示不含有红色分量,而 255 表示含有 100%的红色分量。对于 G 分量 和 B 分量,可以按照同样的方式进行划分。这样,根据R, G, B 分量不同的组 合,就可以表示出 256 x 256 x 256(约 1600 万)种颜色。 3.调色板:一个字节 (Byte)有 8 位(bit ),可以表示 2 的 8 次方共 256 个数。 那么,如果每一个像素都要用RGB 分量来表示,则每一个像素需要3 个字节。 这将会使图像文件变得非常大。由于RGB 分量可以表示 1600 万种颜色,而实 际中的图像并非都用到这么多的颜色,比如二值图像、16 色图像和 256 色图 像等。这时,可以使用一种

56、叫做颜色表的方法来达到压缩数据量的目的。以一幅 大小为 256 x 256 的 256 色图像为例。如果按照 RGB 分量各用一个字节的方式 来存储,那么该图像需要占据256 x 256 x 3 个字节的空 1J。但是该图像只有 256 色,我们可以建立一张 RG 尽的颜色表,表中的每一行对应图像中的一种颜 色,如图 4-1 所示。 图 1 调色板示意图 本文使用 BMP 格式的位图图像文件作为输入图像数据,主要用到三个函 数 OnFileOpen、OpenBMP、OnDraw。 程序的第一部分,首先通过 VC+ MFC 向导建立一个单文档的工程。向 文档类中添加成员函数和成员变量。定义编写成

57、员函数 (BMP 文件打开函数 OpenBMP),使用的是 CFile 类的 CFile()函数。重新定义文件下拉菜单中的打 开项,使它与 BMP 文件打开函数对应上。再次修改 OnDraw 函数,实现打 开后的 BMP 图像文件的显示功能,在这里通过 SetPixel 函数把读到内存中 的图像数据显示在屏幕上,由于 BMP 图像数据是从下向上排列的,所以显示 要从最低行开始的。 I.I. 图像的读取图像的读取Error! Error! ReferenceReference sourcesource notnot found.found. 在位图的处理中,需要读取位图的长度、宽度及象素的信息。

58、在Visual C+6.0 的所有类库中没有对这种位图的读取函数。本文针对该问题设计了读取位图的函数 OpenBMP(),该函数可根据读者的需要加入任何类中。 在类的头文件中,需要声明在整个类中用到的变量及数组。 BITMAP * pBmp;/存放 BMP 像素信息的动态数组 unsigned char * m_pImageData /显示 BMP 的动态数组 long m_Width,m_Height /图象 BMP 的宽度、高度 II. 图图像像的的显显示示 Win32 SDK和MFC封装的函数还不能满足对于图像显示的需要。因此,需要 自己编写一些图像显示用到的函数,正所谓“自己动手,丰衣

59、足食 ”。 视图类的 OnDraw函数: OnDraw函数是负责显示的,一般的绘图过程都放在OnDraw函数中,工程创 建时会自动生成该函数。要修改视图类的 OnDraw函数来显示图像,来实现图像 的显示。 5 图像离散余弦变换 实现 问题的提出: Fourier 变换的一个最大的问题是:它的参数都是复数,在数据的描述上相当 于实数的两倍。 为此,我们希望有一种能够达到相同功能但数据量又不大的变换。在此期望 下,产生了 DCT 变换。 5.1 AAN 方法介绍 AANError! Reference source not found.算法是 Y.Arai , T.Agui, and M.Nak

60、ajima 于 1988 年提出的一种快速算法,它也是将二维DCT 分解成行列的一维变换,一 维 N 点的 DCT 变换通过 2N 点离散傅立叶变换( DFT)来实现,而 2N 点 DFT 又可以通过快速傅立叶变换( FFT)实现。一维 8 点的算法流程图见图 3- 3 所示。 s0 s4 s2 s6 s5 s1 s7 s3 a1 a2 a3 a4 a5 X0 X1 X2 X3 X4 X5 x6 x7 y0 y4 y2 y6 y5 y1 y7 y3 图 6-1 一维 8 点 AAN 算法流程图 从一维 AAN 变换的算法流程图可以看出,其一维8 点变换只需 11 次乘 法和 29 次加法,如果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论