用vc++实现图像的离散余弦变换毕业设计(论文)

上传人:ra****d 文档编号:209889607 上传时间:2023-05-15 格式:DOC 页数:39 大小:786KB
收藏 版权申诉 举报 下载
用vc++实现图像的离散余弦变换毕业设计(论文)_第1页
第1页 / 共39页
用vc++实现图像的离散余弦变换毕业设计(论文)_第2页
第2页 / 共39页
用vc++实现图像的离散余弦变换毕业设计(论文)_第3页
第3页 / 共39页
资源描述:

《用vc++实现图像的离散余弦变换毕业设计(论文)》由会员分享,可在线阅读,更多相关《用vc++实现图像的离散余弦变换毕业设计(论文)(39页珍藏版)》请在装配图网上搜索。

1、毕业设计(论文)题 目用VC+实现图像的离散余弦变换 目录目录I摘要IIIABSTRACTIV文献综述V前言VI1 引言1背景1意义1现状与开展22 系统总体设计4系统的开发环境4系统开发的内容5系统需要实现的功能6GDI与GDI+根本介绍6系统总流程图83 正交变换知识概述9图像处理中的正交变换9傅立叶变换的根本概念9离散余弦变换根本概念134 图像文件格式16图像的根本类型16位图的格式18位图数据的读取与显示195 图像离散余弦变换实现22AAN方法介绍22实现步骤23结果分析236 图像离散余弦逆变换实现25正变换的相关参数存储25根据图像数据逆变换257 系统测试及效果27翻开图片测

2、试27分块DCT变换测试27逆变换测试28系统性能分析288 全文总结29致谢30参考文献31摘要本文研究图像的正交变换之一离散余弦变换,使用VC+编码具体实现了AAN快速算法,大大提高了处理速度。本系统还实现了图像文件的读、写及显示,先将正变换后的位图图像信息存储在文件中,然后从文件中读取位图数据,把这些数据经过离散余弦逆变换,最后再将变换后的数据以位图显示出来。本文重点介绍了离散余弦变换的原理及其实现的方法。本文对离散余弦变换的根本原理、数学依据及程序的实现过程做了细致的研究,并对DCT的变换图像和反变换的复原图像进行了测试。关键词: 图像正交变换,离散余弦变换(DCT),AAN快速算法A

3、bstractThis article works on discrete cosine transformation which 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.

4、 Firstly, we save the positive transforming information of image 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 ac

5、hieve it.This article carefully researches on fundamental principle、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 spee

6、d method文献综述图像格式、图像正交变换相关文献概述图像是现代信息社会中最根本的信息。数字图像处理的研究对象是图像处理技术,这是计算机技术的重要分支和开展方向。文献1、H.263和H.26L等,同时给出了其中主要算法的Visual C+源程序。文献2对傅立叶变换的特性进行了分析,包括产生背景、数学理论、算法,并对傅立叶变换和快速傅立叶变换作了比拟。文献3那么介绍了图像变换在信息隐藏中的应用。文献4介绍了离散余弦变换编码的现状与开展趋势。文献67主要介绍数字图像处理的理论与方法,介绍了各种数字图像处理的算法及编程实现技术。主要内容包括:位图根底、图像的显示、图像的几何变换、图像灰度变换、图

7、像的平滑处理、图像锐化处理及边缘检测等。在图像的变换域处理及应用中,对本文研究的图像正交变换做了详细的说明。文献8-9是有关离散余弦变换的编程的相关计算机实现。很有帮助。文献10-13对图像格式、图像读取显示的原理,算法给出了细致的说明。MFC相关文献介绍文献5围绕面向对象思想及其在Visual C+语言中的应用而展开,着重介绍Visual C+的语言根底,力求使读者在学习Visual C+的过程中逐步掌握面向对象的思想和方法。文献14从剖析实例入手,详细介绍了使用Visual C+进行可视化Windows应用程序开发所需的根本原理和概念,并设计了丰富的范例和实验。前言本文提取出了用Visua

8、l C+实现图像离散余弦正交变换的实现过程,并结合有关根本概念对正交变换的特征进行了分析和研究,有助于图像变换、信息隐藏等方向的工作者对图像的研究。本文主要分为八章。第一章主要介绍了进行图像正交变换分析和研究的背景、意义及开展前景方向。第二章对整个正交变换系统做了简要介绍。第三章给出了正交变换数学原理公式及其分析方法。第四章介绍了图像的根本格式、读取方法,并对图像格式之一BMP做了详细的说明。第五章给出了图像离散余弦变换的算法分析、程序实现方法及结果分析。第六章特别对离散余弦变换的逆过程做了研究。第七章对系统的结果做了测试。第八章全文所使用的方法、结果以及目的和意义做了全面的总结,是全文的概括

9、。本文的完成得到了戴祖旭博士的帮助和指导,在此向他表示衷心的感谢。王艾树2021-06-09于武汉工程大学理学院1 引言1.1 背景1974年由Ahmed和Rao提出的离散余弦变换,至今已有30年历史。此间,DCT编码已开展成为JPEG , MPEG , H.26x等图像/视频编码标准中的核心。离散余弦变换DCT for Discrete Cosine Transform1是与傅立叶变换2相关的一种变换,它类似于离散傅立叶变换DFT for Discrete Fourier Transform,但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅立叶变换,这个离散傅立叶变换是对一个实

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

11、研究工作的数学根底。用VC+开发图像的离散余弦正交变换程序,可以为进一步的信息隐藏3研究工作提供一个实验平台,为进一步开发信息隐藏工具软件提供必要的组件。1.2 意义此外,图像的正交变换被广泛地运用于图像特征提取、图像增强、图像复原、图像压缩和图像识别等领域。正交变换是信号分析学科中的一个重要局部,它是计算机图像处理的前续课程。多年来,变换理论在图像处理 频域法处理中起着关键作用。本文将介绍对图像使用正交变换的离散余弦变换的过程。 正交变换是数字图像信息处理中的重要技术。目前,人们应用在图像信息隐藏、图像置乱中的技术主要基于时域(空间域),即根据图像像素点的坐标和颜色值的变化,到达隐藏或置乱的

12、目的。这样的结果将使人们得到一幅杂乱无章的图像,使得破译者很容易发现这是经过加密的图像而去破译它。这使得正交变换尤为重要。图像变换在数字图像处理与分析中起着很重要的作用,是一种常用的、有效有分析手段。图像变换的目的在于:使图像处理问题简化;有利于图像特征提取;有助于从概念上加强对图像信息的理解。离散余弦变换,经常被信号处理和图像处理使用,用于对信号和图像包括静止图像和运动图像进行有损数据压缩。这是由于离散余弦变换具有很强的“能量集中“特性:大多数的自然信号包括声音和图像的能量都集中在离散余弦变换后的低频局部,而且当信号具有接近马尔科夫过程Markov processes的统计特性时,离散余弦变

13、换的去相关性接近于K-L变换Karhunen-Love 变换-它具有最优的去相关性)的性能。傅立叶变换是数字图像处理技术的根底,其通过在时空域和频率域来回切换图像,对图像的信息特征进行分析和提取,简化了计算工作量,被喻为描述图像信息的第二种语言,广泛应用于图像变换,图像编码与压缩,图像分割,图像重建中,因此,深入研究和掌握傅立叶变换及其扩展形式的特性,是很有价值的。而从傅立叶变换的性质可知,当一函数为偶函数时,其傅立叶变换的虚部为零,因而不需计算,只计算余弦项变换,这就是余弦变换。因此余弦变换是傅立叶变换的特例,余弦变换是简化傅立叶变换的重要主法。近年来,余弦变换在压缩编码中得到广泛的应用。1

14、.3 现状与开展在文献4中,离散余弦变换(DCT)用于图像编码是1974年由Ahmed和Rao提出的。对于离散余弦变换,尽管Shapiro的EZW以及Said等人的SPIHT小波编码的成功应用,对传统的DCT编码提出了挑战,但Xiong等人利川嵌入式DCT块变换之间的直流相关性,以及对DCT后的系数进行策略性重组或层式DCT同样具有小波多分辨率图像的分解特性。此外,基于层次嵌入式DCT、形状自适应DCT,截短DCT,感兴趣Ix:域支撑DCT以及形态DCT等改良形式的编码,都是将基于DCT变换编码推向更高层次。就DCT改良的变换,以及DCT系数的应用,如利用DCT系数实现信息隐藏等,也使得基于常

15、规的DCT变换编码有了更广阔的应)用与开展空间,是未来的开展方向。它的应用也挺广范的,例如,在静止图像编码标准JPEG中,在运动图像编码标准MJPEG和MPEG的各个标准中都使用了离散余弦变换。在这些标准制中都使用了二维的第二种类型离散余弦变换,并将结果进行量化之后进行熵编码。这时对应第二种类型离散余弦变换中的n通常是8,并用该公式对每个8x8块的每行进行变换,然后每列进行变换。得到的是一个8x8的变换系数矩阵。其中(0,0)位置的元素就是直流分量,矩阵中的其他元素根据其位置表示不同频率的交流分类。离散余弦变换也经常被用来使用谱方法来接偏微分方程,这时候离散余弦变换的不同的变量对应着数组两端不

16、同的奇/偶边界条件。离散余弦变换也经常被用来使用谱方法来接偏微分方程,这时候离散余弦变换的不同的变量对应着数组两端不同的奇/偶边界条件。2 系统总体设计对图像的正交变换的研究是一个具有很大意义的研究课题,它在许多方面都有重要的应用。本文研究的离散余弦正交变换是其中的一个子局部,它们是最根本最重要的。本章对正交变换的介绍,不仅会让读者了解到图像变换的根底知识,还会让读者明白研究图像变换的实际意义。2.1 系统的开发环境面向对象程序设计ObjectOriented Programming,OOP5方法已出现近30年,在20世纪90年代已经成为程序设计的主流方向。面向对象程序设计语言是现代程序开发的

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

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

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

20、同的类或对象可以通过设计自己专有的处理外界传入信息的方法来实现多态性。继承性是指一个类可以派生出的新的类。新类可以继承原类的定义的性质和方法,还能在原类定义的性质和方法之外参加自身定义的性质和方法。通过继承性,能形成类之间的层次结构。2.2 系统开发的内容关于用VC+方法,实现图像的正交变换,包括离散余弦正交变换及其逆变换。由于采用了GDIPLUS方法对图像进行读取,所以图像格式可为jpg,bmp, gif,彩色和灰度图像均可,但是图像经读取之后,其数据全部转换成RGB色,灰度图像的R,G和B数据相同。通过本程序可以进行图像的正逆变换,变换矩阵的大小可选择,但均为2的N次方阶,在正变换同时保存

21、图像频率域,及逆变换时所需的信息。逆变换也可以单独完成,即通过读文件得到相关参数,便可以直接进行图像逆变换,得到逆变换后的图像。得到的图像也可以和原来图像进行比拟。2.3 系统需要实现的功能本文所介绍的图像正交变换实现以下过程(图像格式为jpg,bmp, gif):a) 图像文件读写操作实现;b) 图像文件的显示实现; c) 离散余弦变换正逆变换;d) 保存正变换过程得到频率域参数(写入文本文件);e) 读文件,逆变换(读取文本文件)。2.4 GDI与GDI+根本介绍GDI在Windows中定义为Graphics Device Interface,即图形设备接口,是Windows APIApp

22、lication Programming Interface的一个重要组成局部。它是Windows图形显示程序与实际物理设备之间的桥梁,GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境即逻辑设备中进行操作。它的桥梁作用表达在:1用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。为实现图形设备无关性,Windows 的绘图操作在一个设备描述表上进行。用户拥有自己的“逻辑坐标系统,它独立于实际的物理设备,与“设备坐标相对应。开发Windows应用程序时,程序员关心的是逻辑坐标,我们在逻辑坐标系上绘图,利用GDI将逻辑窗口映射到物理设备上。 2GDI能检测具体设备的

23、能力,并依据具体的设备以最优方式驱动这些设备,完成真实的显示。GDI函数大致可分类为:设备上下文函数如GetDC、CreateDC、DeleteDC、 画线函数如LineTo、Polyline、Arc、填充画图函数如Ellipse、FillRect、Pie、画图属性函数如SetBkColor、SetBkMode、SetTextColor、文本、字体函数如TextOut、GetFontData、位图函数如SetPixel、BitBlt、StretchBlt、坐标函数如DPtoLP、LPtoDP、ScreenToClient、ClientToScreen、映射函数如SetMapMode、SetWi

24、ndowExtEx、SetViewportExtEx、元文件函数如PlayMetaFile、SetWinMetaFileBits、区域函数如FillRgn、FrameRgn、InvertRgn、路径函数如BeginPath、EndPath、StrokeAndFillPath、裁剪函数如SelectClipRgn、SelectClipPath等。GDI虽然使程序员得到了一定程度的解脱,但是其编程方式仍很麻烦。譬如,显示一张位图,程序员需要进行“装入位图读取位图文件头信息启用设备场景调色板变换等一连串操作。而有了GDI+,这些问题便迎刃而解了。顾名思义,GDI+是GDI的增强版。它是微软在Wind

25、ows 2000以后操作系统中提供的新接口,其通过一套部署为托管代码的类来展现,这套类被称为GDI+的“托管类接口。GDI+主要提供了以下三类效劳:1二维矢量图形:GDI+提供了存储图形基元自身信息的类或结构体、存储图形基元绘制方式信息的类以及实际进行绘制的类。2图像处理:大多数图片都难以划定为直线和曲线的集合,无法使用二维矢量图形方式进行处理。因此,GDI+为我们提供了Bitmap、Image等类,它们可用于显示、操作和保存BMP、JPG、GIF等图像格式。3文字显示:GDI+支持使用各种字体、字号和样式来显示文本。GDI接口是基于函数的,而GDI+是基于C+类的对象化的应用程序编程接口,因

26、此使用起来比GDI要方便。 在本论文的程序中,是在GDI+平台上进行程序的编写。2.5 系统总流程图图像文件读取正变换图像显示频域信息保存原始图像显示DCT变换从文本读取信息IDCT变换逆变换图像显示图2-1 系统总流程图3 正交变换知识概述3.1 图像处理中的正交变换数字图象处理6的方法主要分为两大类:一类是空域的处理方法或称空域法。把图象变换到频道域可以从另外一个角度来分析图象的特性,其根本线性运算式是严格可逆的,并且每一个变换都存在自己的正交函数集,满足一定的正交条件,因此,也可以将其称作酉变换。正如表示空间的一个矢量可以用不同的坐标系一样,变换的途径虽然不同,但是它们都是空域图象的变换

27、域表示式。目前,在图象处理技术中,正交变换正被广泛的运用于图象的特征提取、图象增强、图象复原、图象识别以及图象的变换编码等领域中,下面将简要介绍傅立叶变换和离散余弦变换。3.2 傅立叶变换的根本概念傅立叶变换7是一种常见的正交变换,在数字图像处理中应用离散傅立叶变换的概念。它的数学定义如下:如果为一个M*N的数字图像,那么其傅立叶变换为: (3-1) (3-2)其中: 当图像为方阵时,即M=N,那么二维离散傅立叶变换公式为: (3-3) (3-4)为降低傅立叶变换的计算量,节省运算时间,在1965年,Cooley和Tukey提出了一种快速傅立叶变换FFT算法。FFT算法采用蝶形运算方法,可以大

28、大提高算法效率。例如,8点FFT算法一共需要12次复数乘法运算和24次复数加法运算,而8点DFT的直接定义计算方法一共需要64次复数乘法运算和56次复数加法运算。3.2.1 傅立叶变换的性质傅立叶变换具有很多方便运算处理的性质。下面列出二维傅立叶变换的一些重要性质。(1) 线性傅立叶变换是一个线性变换 (3-5)(2) 可别离性一个二维傅立叶变换可以用二次一维傅立叶变换来实现。推导如下: (3-6)(3) 平移性傅立叶变换具有平移的特性,推导如下: (3-7) (3-8)(4) 共轭性如果函数的傅立叶变换为,的傅立叶变换的共轭函数为:,那么: (3-9)(5) 尺度变换特性如果函数的傅立叶变换

29、为,a,b是两个标量,那么: (3-10) (3-11)(6) 旋转不变性如果空间域函数旋转角度为,那么在变换域中该函数的傅立叶变换函数也将旋转相同的角度。表达式如下: (3-12)该式是在极坐标下的傅立叶变换表达式。(7) 对称性函数的傅立叶变换具有对称性,相应的表达式为: (3-13)(8) 相关定理如果和为两个二维时域函数,那么可以定义相关运算o如下:那么: (3-14) (3-15)其中为函数的傅立叶变换,为函数的傅立叶变换为的共轭,为的共轭。(9) 卷积定理如果和为两个二维时域函数,那么可以定义卷积运算如下: (3-16)那么: (3-17) (3-18)其中为函数的傅立叶变换,的傅

30、立叶变换为。3.2.2 快速傅立叶变换现在,离散傅立叶变换已成为数字信号处理的重要工具,但是它的计算量较大,运算时间长,在某种程度上限制了它的使用。为了解决这一矛盾,引用了快速傅立叶变换8的思想。快速傅立叶变换并不是一种新的变换方式,它是离散傅立叶变换的一种算法,这种方法是建立在分析离散傅立叶变换中的多余运算的根底上,进而消除这些重复工作的思想指导下得到的,从而在运算中节省了大量的计算时间,到达快速运算的目的。快速傅立叶变换具有很高的计算效率也具有很强的适用性,这使得快速傅立叶变换在数字图象处理中具有更为广泛的应用。快速傅立叶变换的实现步骤为:(1) 开辟存储空间用以保存加权系数及中间变量;(

31、2) 采用频率分解法进行蝶形运算;(3) 重新排列序列顺序;(4) 释放存储空间。3.3 离散余弦变换根本概念图象处理中常用的正交变换除了傅立叶变换以外,还有其他一些有用的正交变换,离散余弦就是其中的一种。离散余弦变换表示为DCT。3.3.1 离散余弦变换的定义一维序列离散余弦变换的定义7可以由下式表示: (3-19) (3-20)其中:是第个余弦变换系数,是广义频率变量,;是时域N点序列,。一维离散余弦反变换由下式表示: (3-21)把上述的一维DCT推广到二维离散变换,表达式如下: (3-22)逆变换可以表示为: (3-23)其中:空域和变换域元素矩阵维数为N;是像素空间的坐标,;是DCT

32、空间的坐标,;是二维空间域的元素;为经过二维离散余弦变换后的变换域元素;式中系数为3.3.2 离散余弦变换的计算与傅立叶变换一样,离散余弦变换自然可以从定义出发进行计算。但是在实际中为了减少计算量,使得计算更加方便,需要寻找一种快速算法9。 以一维离散余弦变换为例,对快速算法进行推导。对于,可以写成以下的形式: (3-24)其中代表取实部。对于时域数据进行如下的延拓: (3-25)那么的离散余弦变换可以写成: (3-26)由式3-26可得是点的离散傅立叶变换。所以在做离散余弦变换的时候,可以把序列的长度延长为,然后做离散傅立叶变换,产生的结果取实部就可以得到结果。同理,在做反变换时,首先在变换

33、空间把做如下的延拓: (3-27)这样,反变换可以表示 : (3-28)由式3-28可知,离散余弦反变换快速算法可以由的点反傅立叶变换快速算法实现。4 图像文件格式4.1 图像的根本类型除了语音之外,图像是人类获取信息的另外一个重要来源,大约70%的信息是通过人眼获得的图像信息。图像信号是指将图像作为一种二维信号,采用数字信号处理的方法来对图像进行描述。今后为了表示方便,图像信号就称为图像。在近代科学研究、军事技术、工农业生产、气象、医学等领域中,人们越来越多地利用图像来认识和判断事物,解决实际问题。例如:人们利用人造卫星所拍摄的地面照片,来分析获取地球资源、全球气象和污染情况,利用“和平号宇

34、宙飞船所拍摄的月球外表照片,分析月球的形成。在医学上,通过CT断层扫描,医生可以观察和诊断人体内部是否有病变组织。在公安侦破中,采用指纹提取并处理进行破案。在军事上,目标的自动识别和自动跟踪都需要进行图像处理10。下面的介绍本文用到的图像的根本类别:(1)索引图象索引图像包括一个数据矩阵 X 和一个色图矩阵 MAP。其中,X 可以是无符号 8 位整型、无符号 16 位整型或者双精浮点型数据;MAP 是一个包含三列、假设干行的数据阵列,其每一个元素的值均为0,1之间的双精度浮点型数据。MAP 矩阵的每一行分别表示红色、绿色和蓝色的颜色值。索引图象是从像素值按照一定的规律到颜色映射值的一种图象。(

35、2)灰度图象灰度图(Graysacle)是指只含亮度信息,不含色彩信息的图像。因此,要表示灰度图,就要把亮度值进行量化,通常是划分成0一255共256个级别,0表示最暗,255表示最亮。在BMP格式的图像中,可以使用256级的调色板来表示灰度图。这个调色板的每一项的RGB值都是相同的,也就是说从(0, 0, 0),(1, 1, 1)一直到(255,255, 255)。在图像中实际存储的是调色板索引值,也就是该像素值在调色板中位于第几行。一幅灰度图像是一个数据矩阵I,而矩I中的数据均代表了在一定范围内的颜色灰度值。计算机一般把灰度图像存储为单一的数据矩阵,数据矩阵中的每个元素分别代表了图像中的像

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

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

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

39、s 操作系统所支持的主要图象文件格式之一,其格式简单,适应性强,但这种文件格式是非压缩的,故此文件所占的磁盘空间较大。在 MFC 中也对 BMP 文件格式提供了很好的支持。BMP位图文件的结构如下列图所示,包括位图文件头结构BITMAPFILEHEADER、位图信息头结构BITMAPINFOHEADER、位图颜色表RGBQUAD和位图象素数据四个局部。位图文件头结构BITMAPFILEHEADER位图信息头结构BITMAPINFOHEADER位图颜色表格RGBQUAD(调色板 PALETTE)位图像素数据图4-1 BMP位图文件的结构附:真彩色图不需要调色板。再此列出与宽度相关的局部,这些与宽

40、度相关的成员变量在位图信息头结构BITMAPINFOHEADER中,其原型为:typedef struct tagBITMAPINFOHEADER DWORD biSize; 说明BITMAPINFOHEADER结构所需的字节数LONG biWidth; 说明位图的宽度,以像素为单位LONG biHight; 说明位图的高度,以像素为单位WORD biplanes; 说明目标设备的位平面数,必须为1WORD biBitcount; 说明每一个像素的位数,必须为1,4,8,24WORD biCompression; 说明一个压缩位图的压缩类型,有以下几种类型:BI-RGB,BI-RLE8,BI-

41、RLE4WORD biSizeImage; 说明位图的大小,以字节为单位,如果位图为BI-RGB格式,那么该成员置为0才有效LONG biXPelsPerMeter;说明位图的目标设备的水平分辨率LONG biYPelsPerMeter; 说明位图的目标设备的垂直分辨率DWORD biClrUsed; 说明实际使用的颜色表中的颜色变址数DWORD biClrImportant; 重要颜色的索引数4.3 位图数据的读取与显示在文献12中的相关术语:在图像处理中,可能会经常遇到一些专业词汇。为了方便交流,先来了解一下术语。1.像素:数字化图像是对物理图像进行采样,把物理图像划分为假设干个采样方格,

42、这些小的采样方格就是像素。我们通常所说的屏幕分辨率为,也就是说屏幕上每行有1024个像素,共有768行。2. RGB色彩系统: 自然界中的所有颜色都可以由红绿蓝 (Red, Green, Blue) 3原色组成。以R分量为例,可以人为地把它分成0到255共256个等级。其中,0表示不含有红色分量,而255表示含有100%的红色分量。对于G分量和B分量,可以按照同样的方式进行划分。这样,根据R, G, B分量不同的组合,就可以表示出256 x 256 x 256(约1600万)种颜色。3.调色板:一个字节(Byte)有8位(bit ),可以表示2的8次方共256个数。那么,如果每一个像素都要用R

43、GB分量来表示,那么每一个像素需要3个字节。这将会使图像文件变得非常大。由于RGB分量可以表示1600万种颜色,而实际中的图像并非都用到这么多的颜色,比方二值图像、16色图像和256色图像等。这时,可以使用一种叫做颜色表的方法来到达压缩数据量的目的。以一幅大小为256 x 256的256色图像为例。如果按照RGB分量各用一个字节的方式来存储,那么该图像需要占据256 x 256 x 3个字节的空1J。但是该图像只有256色,我们可以建立一张RG尽的颜色表,表中的每一行对应图像中的一种颜色,如图4-1所示。图1调色板示意图本文使用 BMP 格式的位图图像文件作为输入图像数据,主要用到三个函数 O

44、nFileOpen、OpenBMP、OnDraw。程序的第一局部,首先通过 VC+ MFC 向导建立一个单文档的工程。向文档类中添加成员函数和成员变量。定义编写成员函数 (BMP文件翻开函数OpenBMP),使用的是 CFile 类的 CFile()函数。重新定义文件下拉菜单中的翻开项,使它与 BMP 文件翻开函数对应上。再次修改 OnDraw 函数,实现翻开后的 BMP 图像文件的显示功能,在这里通过 SetPixel 函数把读到内存中的图像数据显示在屏幕上,由于 BMP图像数据是从下向上排列的,所以显示要从最低行开始的。I. 图像的读取13在位图的处理中,需要读取位图的长度、宽度及象素的信

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

46、Draw函数是负责显示的,一般的绘图过程都放在OnDraw函数中,工程创立时会自动生成该函数。要修改视图类的OnDraw函数来显示图像,来实现图像的显示。5 图像离散余弦变换实现问题的提出:Fourier变换的一个最大的问题是:它的参数都是复数,在数据的描述上相当于实数的两倍。为此,我们希望有一种能够到达相同功能但数据量又不大的变换。在此期望下,产生了DCT变换。5.1 AAN方法介绍AAN7算法是Y.Arai , T.Agui, and M.Nakajima 于1988年提出的一种快速算法,它也是将二维DCT分解成行列的一维变换,一维N点的DCT变换通过2N点离散傅立叶变换DFT来实现,而2

47、N点DFT又可以通过快速傅立叶变换FFT实现。一维8点的算法流程图见图3-3所示。图6-1 一维8点AAN算法流程图从一维AAN变换的算法流程图可以看出,其一维8点变换只需11次乘法和29次加法,如果将最后的尺度变换采用此法要16*5=80次乘法和16*29=464次加法。5.2 实现步骤实现步骤(1)计算离散余弦变换点数;(2)对时域空间进行延拓;(3)将时域点写入已开辟存储空间;(4)调用一维快速傅立叶变换;(5)调整系数;(6)转换变换结果,将变换结果转存回时域存储区。2. 二维离散余弦变换实现步骤(1)获取变换图像指针,并在GDIPLUS平台下将其数据转换为RGB进行存储;(2)选择进

48、行离散余弦变换的宽度和高度,这两个值必须是2的整数次方;计算变换时所用的迭代次数,包括水平方向的和垂直方向;(3)依行列顺序依次读取数据区的值,存储到开辟的复数存储区;(4)调用一维离散余弦变换函数进行垂直方向的变换;(5)调用一维离散余弦变换函数进行水平方向的变换;(6)将计算结果转换成可显示图像;(7)将RGB频谱和图像高度,宽度和变换矩阵大小存入文本文件。由于本文采用的是分块思想,涉及到对图像的分块过程。本程序可进行DCT变换的矩阵维数不能超过图像高和宽的最小值,即可选择矩阵大小。5.3 结果分析本实验可进行2*2,4*4,8*8等分块的离散余弦变换,能分别进行变换,且保存各频谱在不同文

49、件中。根据的图像离散余弦变换特性可知每一块图像变换后为除左上角的一个亮点外,其余较模糊。AAN方法的提出大大的提高了运算的效率。通过对每一块图像进行快速FFT变换的调用,来实现了快速的算法。6 图像离散余弦逆变换实现6.1 正变换的相关参数存储本系统的特点是实现了先将正变换后的图像和频谱信息存储在文件中,然后从文件中读取信息,把这些数据经过IDCT变换,然后再将变换后的数据以图像显示出来。这就要求对图像正交变换FFT和DCT变换后的图像数据进行存储。由于变换矩阵的维数可选,所以为复原图像需对其进行保存,还需要存储相关参数u、v,如图7-1所示:图7-1图像正交变换需要说明的是:由于在GDIPL

50、US平台下开发,所以不管是8位的灰度或者是24位的真彩图,都会以R,G和B三种颜色进行存储,只是对于8位的灰度图像,其R,G和B均一样。在复原图像时,根据其R、G、B值分别进行正变换,然后分别存储其参数R(u,v)、G(u,v)、B(u,v)。6.2 根据图像数据逆变换从文件中读取位图数据,调用图像逆变换程序,恢复图像。具体如下:由于离散余弦变换(discrete cosine transform)8不同于傅立叶变换,它是以实数为对象的余弦函数,而傅立叶计算的对象是复数;虽然此类变换没有傅立叶变换的功能强大,离散余弦变换的计算速度要比对象为复数的离散傅立叶变换快得多。在参数存储时离散余弦变换更

51、加方便。从文件xxx_8_redfre.txt,xxx_8_grefre.txt,xxx_8_blufre.txt和xxx_8_RGBlea.txt中依次得到F(u,v)的R(u,v)、G(u,v)、B(u,v)和未进行变换的图像数据。从文件名即可知,xxx为图像名称,8是变换矩阵的维数,redfre,grefre和blufre分别为红,绿和篮的频谱信息。RGBlea存储的为图像高度,宽度,变换矩阵大小和未进行变换的图像数据。这样设计是方便文件的读取。 7 系统测试及效果7.1 翻开图片测试灰度图片 彩色图片 (a)高度宽度为2n的灰度图bmp,256*256 (b) 高度宽度不为2n的真彩图

52、jpg,283*212图8-1原始图片7.2 分块DCT变换测试图8-2是256*256的LENA图像的分块8*8的离散余弦变换效果。 (a)高度宽度为2n的原图bmp,256*256(b)二维离散余弦变换效果图图8-2 二维离散余弦变换效果图图8-3是283*212的真彩(样品)图像的分块8*8的离散余弦变换效果。 (a) 高度宽度不为2n的真彩图jpg,283*212 (b)二维离散余弦变换效果图图8-3 二维离散余弦变换效果图7.3 逆变换测试读文件中图像文件数据逆变换,显示图片同上。可以通过修改位图数据来观察检验,修改后,原图变化,可知逆过程的数据来自文本文件。7.4 系统性能分析本系

53、统能够很好的实现图像的离散余弦正,逆变换。正逆变换都可以很好的进行,而且可以直接进行逆变换。本系统可以进行以下工作:(1) 显示bmp,jpg格式的图片;(2) 保存图片为bmp,jpg格式;(3) 离散余弦正,逆变换;(4) 正变换参数及数据的存储;(5) 从文件读取位图数据,逆变换。8 全文总结技术的创新是无止境的,本论文研究的图像正交变换的实现过程,仅仅是图像变换底层小小一角,但即使这小小的一局部对于深入研究和掌握图像领域的知识是很有价值的。本文通过对图像进行离散余弦变换的VC+编程,对图像的变换有了较为客观的理解。(1) 当前的各种图像格式进行分类和总结,包括:位图格式bmp、压缩格式

54、的jpg、以及其它图像格式。此外总结还特别研究了运用的位图格式bmp文件读写、显示等。(2) 对图像正交变换的数学理论根底做了总结,并以此为根底来分析了离散余弦变换的算法。(3) 本文对图像进行分块离散余弦变换时,采用了AAN快速算法。同时也对变换效果进行了分析。(4) 别离了逆变换过程,通过从文件中读取位图数据,进行逆变换。(5) 本文对实现的图像正交变换进行了测试,翻开灰度、真彩、规那么和不规那么图像,分别对各种类型的位图进行变换,得出了正确的结果。本文所分析的关于图像正交变换,是数字图像处理技术的根底。通过在时空域和频率域来回切换图像,对图像的信息特征进行分析和提取,简化了计算工作量,被

55、喻为描述图像信息的第二种语言,广泛应用于图像变换,图像编码与压缩,图像分割,图像重建中。 因此,深入研究和掌握正交变换及其扩展形式的特性,是很有价值的。但本文进行研究也存在一个比拟重要的问题,就是处理时只能对位图进行变换。对压缩格式的图像还无能为力,这造成了一定的局限性。但作为一篇较严谨的研究论文,文中所提到的方法以及结论仍然有它实效的一面,相关工作者可以根据此文作出更为细致的图像方面的其他研究。致谢毕业论文完成之际,凝视着完成的论文,心中涌动着一种莫名的感受。经过四个月的磨练这篇论文终于修得正果,文止而学业终。在大学的学习生涯中,我学会了思考,付出了努力,我感慨万千。这将是我人生中一段值得回

56、忆的珍贵的时光。这不仅包含了我对大学学习所作工作的总结,也凝聚了所有指导、关心和帮助我的人的亲情和友情。四年的大学生活收获多少已经来不及计较,但是至少此论文的完成却培养了自己做事的耐心和毅力。虽然自己对此论文心血的投入是前所未有的,但它的完成却离不开很多给我帮助的人,至此我要对他们表示我由衷地感谢。首先,要特别感谢的是我的导师戴祖旭副教授。在此之前,我对VC编程的具体实例应用还不是很熟悉,对图像知识也了解甚少,所以在刚接到这个课题的时候,内心也是充满疑惑和不安的。在毕业设计过程中,戴老师渊博的学识,严谨的治学精神,诲人不倦的师者风范给我留下了极为深刻的印象。他的精心指导和热情关心以及他所营造的

57、民主的学术气氛使我受益良多。在这里我一定得表示我诚挚的谢意!通过学习和讨论,加宽了我的学识范围,解决了研究中遇到的难题,提高了研究方法。一个人取得的成功,离不开众人的帮助,感谢所有帮助、关心、支持我的人!感谢理学院领导以及老师给我们创造的良好的学习环境和诸多帮助!感谢父母,兄弟姐妹对我学业的支持!感谢寝室同学对我学习生活的诸多帮助!感谢吴宏波同学,对我MFC编程的帮助!感谢张远同学,正是和他不停的探讨才得以完成论文!感谢的人太多,只能说感谢所有给我关心、帮助和支持的人们!参考文献1 杨枝灵,王开.Visual C+数字图像获取处理及实践应用M.人民邮电出版社,2003.1:272-281.2

58、王文发, 刘彦保.傅立叶变换用于图像处理时的特性分析J. 延安大学学报(自然科学版),2006,9(3):22-24.3 M. M Amin, M. Salleh, S. Ibrahim, M.R.K atmin, and M.Z.I. Shamsuddin. Information Hiding using Steganography M. Faculty of Computer Science & Information Systems.4 鲁业频,李凤亭,陈兆龙等.离散余弦变换编码的现状与开展J.通信学报,2004,2:106-118.5 刘斌,王忠. 面向对象程序设计-VISUAL C

59、+M.北京:清华大学出版社,2002.6 .7 .8 狄速.VC图像处理之快速傅立叶变换J.电脑编程技巧与维护,2006.1:9-14.9 张宪超,李宁, 陈国良.离散余弦变换的改良的算术傅立叶变换算法J.电子学报,2000.9(9):88-90.10 田村秀行.计算机图像处理M.北京:科学出版社,2004.11 赵君.图像格式分析与图像显示实现J.计算机与数字工程,2004.5(32):1-4.12 狄速.VC图像处理之图像显示篇J.电脑编程技巧与维护,2005.10:12-16.13 罗瑜等.用VC_对BMP格式图像文件编程的技巧与实践J.电脑编程技巧与维护(图形图像处理),2001.4:81-82. 14 朱晴婷,黄海鹰,陈莲君.Visual C+程序设计根底与实例分析M. 北京:清华大学出版社,2004.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!