欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

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

    • 资源ID:3931059       资源大小:786.50KB        全文页数:39页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    毕业设计(论文)题 目用VC+实现图像的离散余弦变换 目录目录I摘要IIIABSTRACTIV文献综述V前言VI1 引言11.1背景11.2意义11.3现状与发展22 系统总体设计42.1系统的开发环境42.2系统开发的内容52.3系统需要实现的功能62.4GDI与GDI+基本介绍62.5系统总流程图83 正交变换知识概述93.1图像处理中的正交变换93.2傅立叶变换的基本概念93.3离散余弦变换基本概念134 图像文件格式164.1图像的基本类型164.2位图的格式184.3位图数据的读取与显示195 图像离散余弦变换实现225.1AAN方法介绍225.2实现步骤235.3结果分析236 图像离散余弦逆变换实现256.1正变换的相关参数存储256.2根据图像数据逆变换257 系统测试及效果277.1打开图片测试277.2分块DCT变换测试277.3逆变换测试287.4系统性能分析288 全文总结29致谢30参考文献31摘要本文研究图像的正交变换之一离散余弦变换,使用VC+编码具体实现了AAN快速算法,大大提高了处理速度。本系统还实现了图像文件的读、写及显示,先将正变换后的位图图像信息存储在文件中,然后从文件中读取位图数据,把这些数据经过离散余弦逆变换,最后再将变换后的数据以位图显示出来。本文重点介绍了离散余弦变换的原理及其实现的方法。本文对离散余弦变换的基本原理、数学依据及程序的实现过程做了细致的研究,并对DCT的变换图像和反变换的还原图像进行了测试。关键词: 图像正交变换,离散余弦变换(DCT),AAN快速算法AbstractThis 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. 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 achieve 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 speed method文献综述图像格式、图像正交变换相关文献概述图像是现代信息社会中最基本的信息。数字图像处理的研究对象是图像处理技术,这是计算机技术的重要分支和发展方向。文献1介绍了Visual C+的开发环境及静止、视频图像压缩编码中用道的主要编码算法,如:傅立叶变换、离散余弦变换、小波变换、熵编码、运动估计等,并对多个国际标准进行了深入的研究和分析,如JPEG、JPEG2000、H.261、H.263和H.26L等,同时给出了其中主要算法的Visual C+源程序。文献2对傅立叶变换的特性进行了分析,包括产生背景、数学理论、算法,并对傅立叶变换和快速傅立叶变换作了比较。文献3则介绍了图像变换在信息隐藏中的应用。文献4介绍了离散余弦变换编码的现状与发展趋势。文献67主要介绍数字图像处理的理论与方法,介绍了各种数字图像处理的算法及编程实现技术。主要内容包括:位图基础、图像的显示、图像的几何变换、图像灰度变换、图像的平滑处理、图像锐化处理及边缘检测等。在图像的变换域处理及应用中,对本文研究的图像正交变换做了详细的说明。文献8-9是有关离散余弦变换的编程的相关计算机实现。很有帮助。文献10-13对图像格式、图像读取显示的原理,算法给出了细致的说明。MFC相关文献介绍文献5围绕面向对象思想及其在Visual C+语言中的应用而展开,着重介绍Visual C+的语言基础,力求使读者在学习Visual C+的过程中逐步掌握面向对象的思想和方法。文献14从剖析实例入手,详细介绍了使用Visual C+进行可视化Windows应用程序开发所需的基本原理和概念,并设计了丰富的范例和实验。前言本文提取出了用Visual C+实现图像离散余弦正交变换的实现过程,并结合有关基本概念对正交变换的特征进行了分析和研究,有助于图像变换、信息隐藏等方向的工作者对图像的研究。本文主要分为八章。第一章主要介绍了进行图像正交变换分析和研究的背景、意义及发展前景方向。第二章对整个正交变换系统做了简要介绍。第三章给出了正交变换数学原理公式及其分析方法。第四章介绍了图像的基本格式、读取方法,并对图像格式之一BMP做了详细的说明。第五章给出了图像离散余弦变换的算法分析、程序实现方法及结果分析。第六章特别对离散余弦变换的逆过程做了研究。第七章对系统的结果做了测试。第八章全文所使用的方法、结果以及目的和意义做了全面的总结,是全文的概括。本文的完成得到了戴祖旭博士的帮助和指导,在此向他表示衷心的感谢。王艾树2008-06-09于武汉工程大学理学院1 引言1.1 背景1974年由Ahmed和Rao提出的离散余弦变换,至今已有30年历史。此间,DCT编码已发展成为JPEG , MPEG , H.26x等图像/视频编码标准中的核心。离散余弦变换(DCT for Discrete Cosine Transform)1是与傅立叶变换2相关的一种变换,它类似于离散傅立叶变换(DFT for Discrete Fourier Transform),但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅立叶变换,这个离散傅立叶变换是对一个实偶函数进行的(因为一个实偶函数的傅立叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位(DCT有8种标准类型,其中4种是常见的)。离散余弦变换(DCT)已经成为数字信号处理和图像处理的一种重要手段,但是其直接算法的计算量太大,速度太慢。在1988年,Y.Arai , T.Agui, and M.Nakajima提出的一种快速算法AAN算法后,极大地提高了离散余弦变换的速度。正是AAN算法的出现,才使离散余弦变换得以广泛应用。离散余弦变换是数字图像处理研究中的常用变换,它将图像数据由时域变换为频率域,然后再进行处理,在许多情况下能提高图像处理的速度。这是信息隐藏与数字水印研究工作的数学基础。用VC+开发图像的离散余弦正交变换程序,可以为进一步的信息隐藏3研究工作提供一个实验平台,为进一步开发信息隐藏工具软件提供必要的组件。1.2 意义此外,图像的正交变换被广泛地运用于图像特征提取、图像增强、图像复原、图像压缩和图像识别等领域。正交变换是信号分析学科中的一个重要部分,它是计算机图像处理的前续课程。多年来,变换理论在图像处理 (频域法处理)中起着关键作用。本文将介绍对图像使用正交变换的离散余弦变换的过程。 正交变换是数字图像信息处理中的重要技术。目前,人们应用在图像信息隐藏、图像置乱中的技术主要基于时域(空间域),即根据图像像素点的坐标和颜色值的变化,达到隐藏或置乱的目的。这样的结果将使人们得到一幅杂乱无章的图像,使得破译者很容易发现这是经过加密的图像而去破译它。这使得正交变换尤为重要。图像变换在数字图像处理与分析中起着很重要的作用,是一种常用的、有效有分析手段。图像变换的目的在于:使图像处理问题简化;有利于图像特征提取;有助于从概念上加强对图像信息的理解。离散余弦变换,经常被信号处理和图像处理使用,用于对信号和图像(包括静止图像和运动图像)进行有损数据压缩。这是由于离散余弦变换具有很强的“能量集中“特性:大多数的自然信号(包括声音和图像)的能量都集中在离散余弦变换后的低频部分,而且当信号具有接近马尔科夫过程(Markov processes)的统计特性时,离散余弦变换的去相关性接近于K-L变换Karhunen-Loève 变换-它具有最优的去相关性)的性能。傅立叶变换是数字图像处理技术的基础,其通过在时空域和频率域来回切换图像,对图像的信息特征进行分析和提取,简化了计算工作量,被喻为描述图像信息的第二种语言,广泛应用于图像变换,图像编码与压缩,图像分割,图像重建中,因此,深入研究和掌握傅立叶变换及其扩展形式的特性,是很有价值的。而从傅立叶变换的性质可知,当一函数为偶函数时,其傅立叶变换的虚部为零,因而不需计算,只计算余弦项变换,这就是余弦变换。因此余弦变换是傅立叶变换的特例,余弦变换是简化傅立叶变换的重要主法。近年来,余弦变换在压缩编码中得到广泛的应用。1.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系数实现信息隐藏等,也使得基于常规的DCT变换编码有了更广阔的应)用与发展空间,是未来的发展方向。它的应用也挺广范的,例如,在静止图像编码标准JPEG中,在运动图像编码标准MJPEG和MPEG的各个标准中都使用了离散余弦变换。在这些标准制中都使用了二维的第二种类型离散余弦变换,并将结果进行量化之后进行熵编码。这时对应第二种类型离散余弦变换中的n通常是8,并用该公式对每个8x8块的每行进行变换,然后每列进行变换。得到的是一个8x8的变换系数矩阵。其中(0,0)位置的元素就是直流分量,矩阵中的其他元素根据其位置表示不同频率的交流分类。离散余弦变换也经常被用来使用谱方法来接偏微分方程,这时候离散余弦变换的不同的变量对应着数组两端不同的奇/偶边界条件。离散余弦变换也经常被用来使用谱方法来接偏微分方程,这时候离散余弦变换的不同的变量对应着数组两端不同的奇/偶边界条件。2 系统总体设计对图像的正交变换的研究是一个具有很大意义的研究课题,它在许多方面都有重要的应用。本文研究的离散余弦正交变换是其中的一个子部分,它们是最基本最重要的。本章对正交变换的介绍,不仅会让读者了解到图像变换的基础知识,还会让读者明白研究图像变换的实际意义。2.1 系统的开发环境面向对象程序设计(ObjectOriented Programming,OOP)5方法已出现近30年,在20世纪90年代已经成为程序设计的主流方向。面向对象程序设计语言是现代程序开发的工具,任何一个优秀的应用程序开发人员都必须至少熟悉一种面向对象的编程语言。采用C+来进行图象编程的主要原因是,与Java和C#等现代编程语言相比,C+在程序运行的效率、内存使用的可控性和编程的灵活性上具有优势。Visual C+6.0为用户提供了一套良好的可视化开发环境,主要包括文本编辑器、资源编辑器、工程创造工具和Debugger调试器等。用户可以在集成环境中创建工程、打开工程,建立、打开和编辑文件,编译、链结、运行和调试应用程序。程序包含两类基本元素,即数据和操作数据的指令集(称为代码)。传统的程序设计语言以设计代码为核心,程序设计实际上是指定程序指令的先后顺序,数据表示必须适应代码的设计。模块化程序设计方法将完成某一功能的指令集组成一个相对独立的程序模块(即函数或过程),使得程序的结构清晰,便于有效的维护,对程序设计技术有很大的促进,随着程序规模的增大,各模块之间的相互影响导致一些难于测试,难以定位发现问题,增加程序开发和维护的困难。面向对象程序设计方法就是在这种背景下出现和发展起来的。面向对象程序设计方法主要以数据为中心,代码是围绕着需要处理的数据而设计的。面向对象程序设计语言具有如下的特征:1.对象的类描述面向对象程序设计语言将程序描述的事情看成一个整体,称为对象,对象是包含数据和代码的完全独立的实体。同一类对象具有相同的性质和方法,每一个具体的对象都是类的一个实体,创建对象就是把类实例化。2.封装性封装性是OOP的核心技术,是面向对象程序语言将数据和处理数据的方法组合在类中,并具有模块化和信息隐藏的特征。类是一个独立的模块,类的内部状态描述数据对程序的其他部分是不可见的,类只向外界公布其具有public属性的数据和代码,并构成类和外界的接口。外界不能直接对类进行修改,而只能通过这个接口把信息传给类,并由类定义对内部数据进行修改,外界不能决定这种修改的结果,只能得到类进行操作所得出的反应。封装性能防止类与外界的非法交互和访问,避免外界对对象内部状态的错误修改,确保类这一模块的真正的独立性,以保证程序的安全运行。3.多态性不同的类或对象对外界传入的相同信息能够根据自身的性质作出不同的反应,这就是多态性。不同的类或对象可以通过设计自己专有的处理外界传入信息的方法来实现多态性。4.继承性继承性是指一个类可以派生出的新的类。新类可以继承原类的定义的性质和方法,还能在原类定义的性质和方法之外加入自身定义的性质和方法。通过继承性,能形成类之间的层次结构。2.2 系统开发的内容关于用VC+方法,实现图像的正交变换,包括离散余弦正交变换及其逆变换。由于采用了GDIPLUS方法对图像进行读取,所以图像格式可为jpg,bmp, gif,彩色和灰度图像均可,但是图像经读取之后,其数据全部转换成RGB色,灰度图像的R,G和B数据相同。通过本程序可以进行图像的正逆变换,变换矩阵的大小可选择,但均为2的N次方阶,在正变换同时保存图像频率域,及逆变换时所需的信息。逆变换也可以单独完成,即通过读文件得到相关参数,便可以直接进行图像逆变换,得到逆变换后的图像。得到的图像也可以和原来图像进行比较。2.3 系统需要实现的功能本文所介绍的图像正交变换实现以下过程(图像格式为jpg,bmp, gif):a) 图像文件读写操作实现;b) 图像文件的显示实现; c) 离散余弦变换正逆变换;d) 保存正变换过程得到频率域参数(写入文本文件);e) 读文件,逆变换(读取文本文件)。2.4 GDI与GDI+基本介绍GDI在Windows中定义为Graphics Device Interface,即图形设备接口,是Windows API(Application Programming Interface)的一个重要组成部分。它是Windows图形显示程序与实际物理设备之间的桥梁,GDI使得用户无需关心具体设备的细节,而只需在一个虚拟的环境(即逻辑设备)中进行操作。它的桥梁作用体现在:(1)用户通过调用GDI函数将逻辑空间的操作转化为具体针对设备驱动程序的调用。为实现图形设备无关性,Windows 的绘图操作在一个设备描述表上进行。用户拥有自己的“逻辑坐标”系统,它独立于实际的物理设备,与“设备坐标”相对应。开发Windows应用程序时,程序员关心的是逻辑坐标,我们在逻辑坐标系上绘图,利用GDI将逻辑窗口映射到物理设备上。 (2)GDI能检测具体设备的能力,并依据具体的设备以最优方式驱动这些设备,完成真实的显示。GDI函数大致可分类为:设备上下文函数(如GetDC、CreateDC、DeleteDC)、 画线函数(如LineTo、Polyline、Arc)、填充画图函数(如Ellipse、FillRect、Pie)、画图属性函数(如SetBkColor、SetBkMode、SetTextColor)、文本、字体函数(如TextOut、GetFontData)、位图函数(如SetPixel、BitBlt、StretchBlt)、坐标函数(如DPtoLP、LPtoDP、ScreenToClient、ClientToScreen)、映射函数(如SetMapMode、SetWindowExtEx、SetViewportExtEx)、元文件函数(如PlayMetaFile、SetWinMetaFileBits)、区域函数(如FillRgn、FrameRgn、InvertRgn)、路径函数(如BeginPath、EndPath、StrokeAndFillPath)、裁剪函数(如SelectClipRgn、SelectClipPath)等。GDI虽然使程序员得到了一定程度的解脱,但是其编程方式仍很麻烦。譬如,显示一张位图,程序员需要进行“装入位图读取位图文件头信息启用设备场景调色板变换”等一连串操作。而有了GDI+,这些问题便迎刃而解了。顾名思义,GDI+是GDI的增强版。它是微软在Windows 2000以后操作系统中提供的新接口,其通过一套部署为托管代码的类来展现,这套类被称为GDI+的“托管类接口”。GDI+主要提供了以下三类服务:(1)二维矢量图形:GDI+提供了存储图形基元自身信息的类(或结构体)、存储图形基元绘制方式信息的类以及实际进行绘制的类。(2)图像处理:大多数图片都难以划定为直线和曲线的集合,无法使用二维矢量图形方式进行处理。因此,GDI+为我们提供了Bitmap、Image等类,它们可用于显示、操作和保存BMP、JPG、GIF等图像格式。(3)文字显示:GDI+支持使用各种字体、字号和样式来显示文本。GDI接口是基于函数的,而GDI+是基于C+类的对象化的应用程序编程接口,因此使用起来比GDI要方便。 在本论文的程序中,是在GDI+平台上进行程序的编写。2.5 系统总流程图图像文件读取正变换图像显示频域信息保存原始图像显示DCT变换从文本读取信息IDCT变换逆变换图像显示图2-1 系统总流程图3 正交变换知识概述3.1 图像处理中的正交变换数字图象处理6的方法主要分为两大类:一类是空域的处理方法(或称空域法)。把图象变换到频道域可以从另外一个角度来分析图象的特性,其基本线性运算式是严格可逆的,并且每一个变换都存在自己的正交函数集,满足一定的正交条件,因此,也可以将其称作酉变换。正如表示空间的一个矢量可以用不同的坐标系一样,变换的途径虽然不同,但是它们都是空域图象的变换域表示式。目前,在图象处理技术中,正交变换正被广泛的运用于图象的特征提取、图象增强、图象复原、图象识别以及图象的变换编码等领域中,下面将简要介绍傅立叶变换和离散余弦变换。3.2 傅立叶变换的基本概念傅立叶变换7是一种常见的正交变换,在数字图像处理中应用离散傅立叶变换的概念。它的数学定义如下:如果为一个M*N的数字图像,则其傅立叶变换为: (3-1) (3-2)其中: 当图像为方阵时,即M=N,则二维离散傅立叶变换公式为: (3-3) (3-4)为降低傅立叶变换的计算量,节省运算时间,在1965年,Cooley和Tukey提出了一种快速傅立叶变换(FFT)算法。FFT算法采用蝶形运算方法,可以大大提高算法效率。例如,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) 尺度变换特性如果函数的傅立叶变换为,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)其中为函数的傅立叶变换,的傅立叶变换为。3.2.2 快速傅立叶变换现在,离散傅立叶变换已成为数字信号处理的重要工具,但是它的计算量较大,运算时间长,在某种程度上限制了它的使用。为了解决这一矛盾,引用了快速傅立叶变换8的思想。快速傅立叶变换并不是一种新的变换方式,它是离散傅立叶变换的一种算法,这种方法是建立在分析离散傅立叶变换中的多余运算的基础上,进而消除这些重复工作的思想指导下得到的,从而在运算中节省了大量的计算时间,达到快速运算的目的。快速傅立叶变换具有很高的计算效率也具有很强的适用性,这使得快速傅立叶变换在数字图象处理中具有更为广泛的应用。快速傅立叶变换的实现步骤为:(1) 开辟存储空间用以保存加权系数及中间变量;(2) 采用频率分解法进行蝶形运算;(3) 重新排列序列顺序;(4) 释放存储空间。3.3 离散余弦变换基本概念图象处理中常用的正交变换除了傅立叶变换以外,还有其他一些有用的正交变换,离散余弦就是其中的一种。离散余弦变换表示为DCT。3.3.1 离散余弦变换的定义一维序列离散余弦变换的定义7可以由下式表示: (3-19) (3-20)其中:是第个余弦变换系数,是广义频率变量,;是时域N点序列,。一维离散余弦反变换由下式表示: (3-21)把上述的一维DCT推广到二维离散变换,表达式如下: (3-22)逆变换可以表示为: (3-23)其中:空域和变换域元素矩阵维数为N;是像素空间的坐标,;是DCT空间的坐标,;是二维空间域的元素;为经过二维离散余弦变换后的变换域元素;式中系数为3.3.2 离散余弦变换的计算与傅立叶变换一样,离散余弦变换自然可以从定义出发进行计算。但是在实际中为了减少计算量,使得计算更加方便,需要寻找一种快速算法9。 以一维离散余弦变换为例,对快速算法进行推导。对于,可以写成以下的形式: (3-24)其中代表取实部。对于时域数据进行如下的延拓: (3-25)则的离散余弦变换可以写成: (3-26)由式3-26可得是点的离散傅立叶变换。所以在做离散余弦变换的时候,可以把序列的长度延长为,然后做离散傅立叶变换,产生的结果取实部就可以得到结果。同理,在做反变换时,首先在变换空间把做如下的延拓: (3-27)这样,反变换可以表示 : (3-28)由式3-28可知,离散余弦反变换快速算法可以由的点反傅立叶变换快速算法实现。4 图像文件格式4.1 图像的基本类型除了语音之外,图像是人类获取信息的另外一个重要来源,大约70%的信息是通过人眼获得的图像信息。图像信号是指将图像作为一种二维信号,采用数字信号处理的方法来对图像进行描述。今后为了表示方便,图像信号就称为图像。在近代科学研究、军事技术、工农业生产、气象、医学等领域中,人们越来越多地利用图像来认识和判断事物,解决实际问题。例如:人们利用人造卫星所拍摄的地面照片,来分析获取地球资源、全球气象和污染情况,利用“和平号”宇宙飞船所拍摄的月球表面照片,分析月球的形成。在医学上,通过CT断层扫描,医生可以观察和诊断人体内部是否有病变组织。在公安侦破中,采用指纹提取并处理进行破案。在军事上,目标的自动识别和自动跟踪都需要进行图像处理10。下面的介绍本文用到的图像的基本类别:(1)索引图象索引图像包括一个数据矩阵 X 和一个色图矩阵 MAP。其中,X 可以是无符号 8 位整型、无符号 16 位整型或者双精浮点型数据;MAP 是一个包含三列、若干行的数据阵列,其每一个元素的值均为0,1之间的双精度浮点型数据。MAP 矩阵的每一行分别表示红色、绿色和蓝色的颜色值。索引图象是从像素值按照一定的规律到颜色映射值的一种图象。(2)灰度图象灰度图(Graysacle)是指只含亮度信息,不含色彩信息的图像。因此,要表示灰度图,就要把亮度值进行量化,通常是划分成0一255共256个级别,0表示最暗,255表示最亮。在BMP格式的图像中,可以使用256级的调色板来表示灰度图。这个调色板的每一项的RGB值都是相同的,也就是说从(0, 0, 0),(1, 1, 1)一直到(255,255, 255)。在图像中实际存储的是调色板索引值,也就是该像素值在调色板中位于第几行。一幅灰度图像是一个数据矩阵I,而矩I中的数据均代表了在一定范围内的颜色灰度值。计算机一般把灰度图像存储为单一的数据矩阵,数据矩阵中的每个元素分别代表了图像中的像素。矩阵中的元素可以是双精度的浮点类型、8 位或 16 位无符号的整数类型。(3)RGB图RGB 图像,即真彩图像,在计算机中存储为数据矩阵。数组中的元素定义了图像中每一个像素的红、绿、蓝颜色值。它的每一个像素都要用3个字节分别表示RGB值。需要指出的是,RGB 图像不使用 Windows 色图。像素的颜色由保存在像素位置上的红、绿、蓝的灰度值的组合来确定。图形文件格式 RGB图像存储为 24 位的图像,红、绿、蓝分别占 8 位,这样可以有 1000 多万种颜色(即224=16 777 213)。 计算机中的 RGB 数组可以是双精度的浮点类型、8 位或 16 位无符号的整数类型。在 RGB 的双精度型数组中,每一种颜色用在 0 和 1 之间的数值表示。由于位真彩色图像所需的存储空间很大,处理速度较慢,当需要存储空间不大,并且要求实时快速处理图像时,一般都要利用相应的位位图对其进行近似处理,因此位位图是图像技术中涉及范围比较广泛的一种图像表示方法。图形图象处理10是计算机领域中的一个重要课题,在人们的日常生活中应用也非常的广泛。而图像格式则是图像处理技术中的基础部分。只有深入了解了图像格式,才能实现各种格式的转换,进行图像的变换处理等。目前流行的图像格式种类繁多,如 BMP、TIFF,PNG,GIF,JPEG,SWF,SVG等,此外还有一些非主流的图像格式如DXF ,WMF,LIC,TGA等,这些图像格式都有其各自的优缺点,适用于不同的场合。本文分析了两种具有代表性的图像文件格式并给出了VC+的读取显示实现方法。图像文件一般由文件头和图像点阵数据两部分构成,文件头中一般包含文件标志,图像尺寸,颜色数等信息,这些信息由图像提供者定义;图像点阵数据包含该图像的每一点的颜色信息。对于各种不同的图象文件格式,其文件头所包含的信息不尽相同,其中重要的是含有该文件所存储的图像信息的存储格式说明,对于图像处理程序来说,首先就是读取要处理的图象文件文件头信息,获得所有必需的信息,再据此读取图象点阵数据进行相应处理并正确显示。4.2 位图的格式BMP11是 Microsoft Windows 操作系统所支持的主要图象文件格式之一,其格式简单,适应性强,但这种文件格式是非压缩的,故此文件所占的磁盘空间较大。在 MFC 中也对 BMP 文件格式提供了很好的支持。BMP位图文件的结构如下图所示,包括位图文件头结构BITMAPFILEHEADER、位图信息头结构BITMAPINFOHEADER、位图颜色表RGBQUAD和位图象素数据四个部分。位图文件头结构BITMAPFILEHEADER位图信息头结构BITMAPINFOHEADER位图颜色表格RGBQUAD(调色板 PALETTE)位图像素数据图4-1 BMP位图文件的结构附:真彩色图不需要调色板。再此列出与宽度相关的部分,这些与宽度相关的成员变量在位图信息头结构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-RLE4WORD biSizeImage; 说明位图的大小,以字节为单位,如果位图为BI-RGB格式,那么该成员置为0才有效LONG biXPelsPerMeter;说明位图的目标设备的水平分辨率LONG biYPelsPerMeter; 说明位图的目标设备的垂直分辨率DWORD biClrUsed; 说明实际使用的颜色表中的颜色变址数DWORD biClrImportant; 重要颜色的索引数4.3 位图数据的读取与显示在文献12中的相关术语:在图像处理中,可能会经常遇到一些专业词汇。为了方便交流,先来了解一下术语。1.像素:数字化图像是对物理图像进行采样,把物理图像划分为若干个采样方格,这些小的采样方格就是像素。我们通常所说的屏幕分辨率为,也就是说屏幕上每行有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个数。那么,如果每一个像素都要用RGB分量来表示,则每一个像素需要3个字节。这将会使图像文件变得非常大。由于RGB分量可以表示1600万种颜色,而实际中的图像并非都用到这么多的颜色,比如二值图像、16色图像和256色图像等。这时,可以使用一种叫做颜色表的方法来达到压缩数据量的目的。以一幅大小为256 x 256的256色图像为例。如果按照RGB分量各用一个字节的方式来存储,那么该图像需要占据256 x 256 x 3个字节的空1J。但是该图像只有256色,我们可以建立一张RG尽的颜色表,表中的每一行对应图像中的一种颜色,如图4-1所示。图1调色板示意图本文使用 BMP 格式的位图图像文件作为输入图像数据,主要用到三个函数 OnFileOpen、OpenBMP、OnDraw。程序的第一部分,首先通过 VC+ MFC 向导建立一个单文档的工程。向文档类中添加成员函数和成员变量。定义编写成员函数 (BMP文件打开函数OpenBMP),使用的是 CFile 类的 CFile()函数。重新定义文件下拉菜单中的打开项,使它与 BMP 文件打开函数对应上。再次修改 OnDraw 函数,实现打开后的 BMP 图像文件的显示功能,在这里通过 SetPixel 函数把读到内存中的图像数据显示在屏幕上,由于 BMP图像数据是从下向上排列的,所以显示要从最低行开始的。I. 图像的读取13在位图的处理中,需要读取位图的长度、宽度及象素的信息。在Visual C+6.0的所有类库中没有对这种位图的读取函数。本文针对该问题设计了读取位图的函数OpenBMP(),该函数可根据读者的需要加入任何类中。在类的头文件中,需要声明在整个类中用到的变量及数组。BITMAP * pBmp;/存放BMP像素信息的动态数组unsigned char * m_pImageData /显示B

    注意事项

    本文(864234443用VC++实现图像的离散余弦变换毕业设计(论文).doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开