毕业设计(论文)-BMP图像处理软件的设计和实现.doc_第1页
毕业设计(论文)-BMP图像处理软件的设计和实现.doc_第2页
毕业设计(论文)-BMP图像处理软件的设计和实现.doc_第3页
毕业设计(论文)-BMP图像处理软件的设计和实现.doc_第4页
毕业设计(论文)-BMP图像处理软件的设计和实现.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

题目: BMP图像处理软件的设计和实现BMP图像处理软件的设计与实现摘 要随着时代的发展,科技的进步,一些简单的图片已经不能满足人们的需求。图像运用的扩大与对图像本身的精益求精,使人们越来越依赖于各种图像处理软件。各种图像处理软件也越来越完善,普及程度不断的提高。本文用Visual C+作为开发工具,设计了一个BMP图像处理软件。该图像处理软件能够实现对BMP图像的基本操作,如图像的打开,关闭,保存;图像的基本处理,如图像放大、缩小、旋转、转置、二值化处理、中值滤波、边缘检测、直方图以及马赛克效果等等。论文首先分析了国内外图像处理软件的现状,以及发展趋势,之后详细地分析了本软件的功能,完成了系统的总体设计和功能规划,进而对每个模块完成了详细设计和实现,最后完成了测试工作。结果表明,本系统能够完成要求的所有功能,软件具有友好的用户界面和良好的健壮性,具有一定的应用价值。关键词:Visual C+6.0;BMP;图像处理;数字图像处理;图像处理软件IIDesign and Implementation of BMP Image Processing SystemAbstractWith the development of science, the simple pictures couldnt meet peoples demand. The magnification of pictures usage and the ever delicated image of picture itself, has made people more and more rely on several of picture-processing software. And the popularization of these softwares is going higher and higher, with the progress made by themselves.I use Visual C+ development to build software which is used to deal with BMP images. This software can carry out some base operations of BMP images, such as open, close and save; some base processes of BMP images, such as magnify, shrink, rotate, binary process, mid-value filter, edge-detect, cauterization of pictures and the mosaic effect. This paper at first analyzed status of picture-processing software both of domestic an foreign, and the developing trend,After analysis the function of this software in detail and completed the overall design of the system and function.And completed the detailed design and implementation of each module, finally completed the testing work.The results show that the system can complete all the requirements of the function,the software has a friendly user interface and good robustness, and has certain application value.KEY WORDS:Visual C+6.0;BMP;picture-processing;Digital Image Processing; Image Processing SoftwareII主要符号表 列矩阵 横矩阵 G,f 矩阵 w 宽 h 高 卷积算子 梯度幅值 拉氏算子 拉普拉斯算子 III目录摘要IAbstractII主要符号表III1 绪论11.1本课题设计的背景11.2本课题设计的目的和意义21.3本课题国内外研究状况21.4本课题研究的主要内容31.5现有图像处理软件42 开发环境及主要技术介绍52.1 面向对象编程52.2 Visual C+ 6.062.2.1 Visual C+ 6.0概述62.2.2 Visual C+ 6.0主要部分62.3 MFC72.4设备上下文DC82.5数字图像处理基础92.5.1数字图像概述92.5.2图像处理概述102.5.3图像的基本概念112.5.4 BMP位图123 系统总体设计133.1系统总体框架设计133.1.1系统的总体框架设计如下133.1.2系统流程图如下133.1.3系统的模块设计144 系统详细设计与实现174.1BMP文件结构174.1.1BMP文件组成174.1.2BMP文件头174.1.3BMP信息头174.1.4BMP颜色表184.1.5BMP图形数据184.2 CDib类的设计194.3 文件操作214.3.1打开图片214.3.2保存图片214.4几何变化214.4.1镜像214.4.2缩放224.4.3图像转置224.4.4图像旋转224.5特效显示224.5.1马赛克特效234.5.2扩散效果234.5.3平滑效果234.6灰度变化234.6.1反色变化234.6.2黑白变化244.6.3灰度变化244.7分析变化254.7.1边缘检测254.7.2锐化处理254.7.3霓虹处理264.7.4滤波处理264.7.5曝光效果274.7.6浮雕效果274.7.7柔化效果275 系统测试285.1测试目的285.2测试效果285.2.1文件操作295.2.2几何变化305.2.3特效显示335.2.4灰度变化355.2.5分析变化365.3 测试结论406 结论41参考文献42致 谢43毕业设计(论文)知识产权声明44毕业设计(论文)独创性声明45附 录461 绪论1 绪论1.1本课题设计的背景从80年代中期以来,超大规模集成电路的发展,为图形学的飞速发展奠定了物质基础。计算机的运算能力的提高,图形处理速度的加快,使得图形学的各个研究方向得到充分发展,图形学已广泛应用于各个领域,代表性的应用有:计算机辅助绘图及设计、事务管理中的交汇式绘图、科学计算可视化、过程控制、计算机动画及广告、计算机艺术、地形地貌和自然资源的图形显示、办公自动化及电子出版系统。把原始图像与计算机结合起来,从而创作出许多更加完美的图像,满足了人们的需求。计算机图像处理,是指利用计算机对图像进行一系列加工,以便获得人们所需要的效果。图像是人类获取和交换信息的主要来源,人类感知外界信息,80%以上是通过视觉得到的。因此,图像处理的应用领域必然涉及到人类生活和工作的方方面。随着时代的进步,各种图像处理软件也越来越完善,人们对图像的应用和要求也越来越精益,为了给观看者更深刻的印象,关于图片处理的软件业收到了大家的欢迎和喜爱,所以图像处理软件能够更好的满足人们对图像的需求,其中可以对图片进行90度的改变和锐化处理。图像是人类获取信息、表达信息和传递信息的重要手段,图像处理应用广泛,图像处理软件MATLAB虽然能够对数字图像进行方便的处理,并且其制作的界面也比较友好,但是由于其过于庞大,移植性和速度方面也很难与VC+相比。另外,由于商业化的VC+图像处理软件价格比较昂贵,而且不便于二次开发,本课题利用VC+集成开发环境开发一套简单的图像处理软件系统。图像处理技术起源比较早,但真正发展是在八十年代后,随着计算机技术的高速发展而迅猛发展起来。图像处理或图像分析方法的应用越来越广泛,其主要理论基础是形态数学,立体学,集合论等。图像处理或图像分析方法的应用越来越广泛,其主要理论基础是形态数学,立体学,集合论等。图像处理的应用领域很广,大致可以分为六大领域以及十余个子领域:1材料科学:光学材料、金属材料、晶体材料、陶瓷建筑材料2地学:岩矿结构、岩体裂隙特征、土体颗粒3生命科学:生物、植物、医学、基因4地理学:经济地理、土地资源、地貌、气像学5机器人:包括电路设计、识别等6鉴定:指纹鉴定、财务印章管理、防伪鉴定等常见的图像处理有图像数字化、图像编码、图像增强、图像复原、图像分割44与图像分析等。经过处理后的图像,一定能够更好的被用于工业或者个人目的。为此开发这个数字图像处理软件,能够处理一些图像,并对图像处理技术此方面进行深入的研究。1.2本课题设计的目的和意义 目的:本次毕业设计是要完成一个BMP图像处理软件,其中包括对文件的读取保存和修改(图像的反转和锐化)。读取文件中的图片可以对文件中的图片进行读取,在修改后也可以保存修改后的文件,对图片进行处理主要是运用指针和模板等对图像可以进行翻转和锐化。BMP图像处理软件是对BMP图像的基本操作,比如图像的打开、关闭、保存,主要是通过对图像中的每一个像素点运用各种图像处理算法来达到预期的效果;BMP图像的基本处理,图像的基本处理,如图像放大、缩小、旋转、转置、二值化处理等等。意义:图像对于人眼来说是模糊的甚至是不可见的,通过图象增强技术,可以使模糊甚至不可见的图像变得清晰明亮,通过图像处理中的技术,可以将人眼无法识别的图像进行分类处理,该技术已经广泛深入地应用于国计民生休戚相关的各个领域,更加满足人们对于图像的需求。1.3本课题国内外研究状况 麻省理工学院(MIT)旋风I号(Whirlwind I)计算机的附件诞生了。该显示器用一个类似于示波器的阴极射线管(CRT)来显示一些简单的图形。1958年美国Calcomp公司由联机的数字记录仪发展成滚筒式绘图仪,GerBer公司把数控机床发展成为平板式绘图仪。在整个50年代,只有电子管计算机,用机器语言编程,主要应用于科学计算,为这些计算机配置的图形设备仅具有输出功能。计算机图形学处于准备和酝酿时期,并称之为:“被动式”图形学。从1962年,林肯实验室的Sutherland发表一篇题为“一个人机交互通信的图形系统”的博士论文,他在论文中首次使用计算机图形学“Computer Graphics”这个术语,证明交互计算机图形学是一个可行的、有用的研究领域,从而确定计算机图形学作为一个崭新的科学分支的独立地位屹立于计算机领域。此后,国内外都很重视图形学的发展以及研究,各种各样的图像处理软件显现出来,比如PhotoShop和Picasa。 70年代是计算机图形学发展过程中一个重要的历史时期。由于光栅显示器的产生,在60年代就已萌芽的光栅图形学算法,迅速发展起来,区域填充、裁剪、消隐等基本图形概念、及其相应算法纷纷诞生,图形学进入第一个兴盛的时期,并开始出现实用的CAD图形系统。又因为通用、与设备无关的图形软件的发展,图形软件功能的标准化问题被提出来。1974年,美国国家标准化局(ANSI)在ACM SIGGRAPH的一个与“与机器无关的图形技术”的工作会议上,提出制定有关标准的基本规则。此后ACM专门成立一个图形标准化委员会,开始制定有关标准。该委员会于1977、1979年先后制定和修改 “核心图形系统”(Core Graphics System)。ISO随后又发布了计算机图形接口CGI(Computer Graphics Interface)、计算机图形元文件标准CGM(Computer Graphics Metafile)、计算机图形核心系统GKS(Graphics Kernel system)、面向程序员的层次交互图形标准 PHIGS(Programmers Hierarchical Interactive Graphics Standard)等。这些标准的制定,为计算机图形学的推广、应用、资源信息共享,起到重要作用。国内在此领域的研究中最具有代表性的是梦幻科技推出的彩影图形处理和相片制作软件,彩影拥有非常智能、傻瓜而功能强大的图像处理、修复和合成功能。解决了国内外图像处理软件过于复杂、不易操作的问题,让所有用户不需要专业的图像美工技能即可轻松点击并制作出绚丽多彩的图像特效图。 新一代在线图像编辑软件OPCOL是国内领先的在线图像处理系统,它采用最新Flash技术开发,不用下载任何插件,只需flash10的支持即可实现在线图片编辑,可无缝嵌入主流浏览器, 具有文件体积小速度快,兼容各种浏览器等特点;适于各种自动在线图片编辑的场合使用,是未来网站的一个新功能和亮点,满足您的创新需求,解决网站在线图片编辑难题。美国MathWorks公司出品的MATLAB软件,功能十分强大,它主要应用于工程计算、信号处理与通讯、图像处理等领域。MATLAB之所以称为世界流行的科学计算与数学应用软件,是因为它有着强大的矩阵运算和处理功能,具体表现在强大的数值计算功能、数据分析和科学计算可视化功能、强大的符号计算功能、强大的非线性动态系统建模和仿真功能、灵活的程序接口功能等方面。而数字图像处理与矩阵运算具有密切的联系,并且MATLAB 图像处理工具箱提供了丰富的图像处理函数,熟练使用这些函数可以完成几乎所有的图像处理工作。应用MATLAB进行数字图像处理可以节省大量编写低层算法源代码的时间,避免程序设计中的重复劳动,达到事半功倍的效果。另外,新版本的MATLAB在图形用户界面(GUI)的制作上作了很大的改善。MATLAB的不足之处是运行程序时需要安装有MATLAB系统,可移植性能差,应用不方便,执行速度慢。 Photoshop是Adobe公司开发的世界上最优秀的平面图像处理软件之一,集图像扫描、编辑 修改、图像制作、广告创意,图像输入与输出与一体,在图像处理及平面设计领域里,Photoshop一直都以界面美观,操作方便,在图像处理和电脑绘图软件领域里独占鳌头。Photoshop的功能非常强大,它支持多种图像格式和颜色模式,能同时进行多色层处理。其绘画功能和选取功能能使图像编辑变得十分方便,图像变形功能可用来制作特殊的视觉效果。1.4本课题研究的主要内容本课题主要研究如何利用Visual C+ 集成开发环境开发一个图像处理软件。在熟悉图像处理相关技术,熟悉图像处理各种算法之后,在Windows操作系统下,利用C+语言在Visual C+ 6.0开发环境下,设计和实现一个图像处理软件。本图像处理软件实现对BMP图像的基本操作,主要有五部分:图像的文件操作、图像的几何变换、图像的特效显示、图像的灰度变化、图像的分析变化,用各种图像处理软件的算法实现其各个模块的功能。1.5现有图像处理软件随着对图像处理需求的扩大,现有的图像处理软件多种多样,数不胜数。本文简单介绍两个比较有代表性的图像处理软件:Photoshop和Picasa。Photoshop简介:Photoshop是平面图像处理业界霸主Adobe公司推出的跨越PC和MAC两界首屈一指的大型图像处理软件。它功能强大,操作界面友好,得到广大第三方开发厂家的支持,从而也赢得众多的用户的青睐。Photoshop是目前公认的最好的通用平面美术设计软件,它的功能完善,性能稳定,使用方便,所以在几乎所有的广告、出版、软件公司,Photoshop都是首选的平面工具。它是专门用来进行图像处理的软件。通过它可以对图像修饰、对图形进行编辑,以及对图像的色彩处理,另外,还有绘图和输出功能等。在实际生活和工作中,可以将数码照相机拍摄下来的照片进行编辑和修饰,也可以将现有的图形和照片,用扫描仪扫入计算机进行加工处理,还可以把摄像机摄入的内容转移到计算机上,然后用它实现对影像的润色。Picasa简介:Google Picasa原为独立收费的图片处理软件,其界面美观华丽,功能实用丰富。被Google收购后,已改为完全免费软件。只需拥有Picasa,你就可以随心所欲地体验你的歌谱图片和数码相。Google照片处理软件尤其适合于初级数码照片爱好者使用,Picasa可以通过简单的单次点击式修正来进行高级修改处理,只需动动指尖来处理相片即可获得震撼效果。它是一个可在计算机上查看、整理、修改和共享图片的软件,它会让所有这些工作变得简单而有趣。Picasa 不会未经您的允许就删除图片或将图片放到网络上。它自动将你的相片从你的数码相机传输到你的电脑上 ,管理图片并让你能在几秒中内查找到所需的图片,让你轻松地编辑, 打印以及共享相片 ,创建幻灯片,定购打印以及其它更多。Picasa会自动根据照片拍摄的时间,目录,机型来判断,自动建立像簿,查找方便,还有timeline功能。2 开发环境及主要技术介绍2 开发环境及主要技术介绍2.1 面向对象编程面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。1.对象(Object) :可以对其做事情的一些东西。一个对象有状态、行为和标识三种属性。2.类(class) :一个共享相同结构和行为的对象的集合。3.封装(encapsulation): 第一层意思:将数据和操作捆绑在一起,创造出一个新的类型的过程。第二层意思:将接口与实现分离的过程。4.继承:类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的结构和行为。继承描述了类之间的“是一种”关系。子类可以对基类的行为进行扩展、覆盖、重定义。5.组合:既是类之间的关系也是对象之间的关系。在这种关系中一个对象或者类包含了其他的对象和类。组合描述了“有”关系。6.多态:类型理论中的一个概念,一个名称可以表示很多不同类的对象,这些类和一个共同超类有关。因此,这个名称表示的任何对象可以以不同的方式响应一些共同的操作集合。7.动态绑定:也称动态类型,指的是一个对象或者表达式的类型直到运行时才确定。通常由编译器插入特殊代码来实现。与之对立的是静态类型。8.静态绑定:也称静态类型,指的是一个对象或者表达式的类型在编译时确定。9.消息传递:指的是一个对象调用了另一个对象的方法(或者称为成员函数)。10.方法:也称为成员函数,是指对象上的操作,作为类声明的一部分来定义。方法定义了可以对一个对象执行那些操作。面向对象主要特征:封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。2.2 Visual C+ 6.02.2.1 Visual C+ 6.0概述Visual C+ 6.0,简称VC或VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“低级语言”的程序。它不仅是一个C+编译器,而且是一个基 于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导App Wizard、类向导Class Wizard等开发工具。这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。 Visual C+ 6.0以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。2.2.2 Visual C+ 6.0主要部分a. Developer Studio 这是一个集成开发环境,我们日常工作的99%都是在它上面完成的,再加上它的标题赫然写着“Microsoft Visual C+”,所以很多人理所当然的认为,那就是Visual C+了。其实不然,虽然Developer Studio提供了一个很好的编辑器和很多Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。我们也知道,Developer Studio并不是专门用于VC的,它也同样用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio当成Visual C+,它充其量只是Visual C+的一个壳子而已。b. MFC 从理论上来讲,MFC也不是专用于Visual C+,Borland C+,C+Builder和Symantec C+同样可以处理MFC。同时,用Visual C+编写代码也并不意味着一定要用MFC,只要愿意,用Visual C+来编写SDK程序,或者使用STL,ATL,一样没有限制。不过,Visual C+本来就是为MFC打造的,Visual C+中的许多特征和语言扩展也是为MFC而设计的,所以用Visual C+而不用MFC就等于抛弃了Visual C+中很大的一部分功能。但是,Visual C+也不等于MFC。c. Platform SDK 这才是Visual C+和整个Visual Studio的精华和灵魂,虽然我们很少能直接接触到它。大致说来,Platform SDK是以Microsoft C/C+编译器为核心(不是Visual C+,看清楚了),配合MASM,辅以其他一些工具和文档资料。上面说到Developer Studio没有编译程序的功能,这项工作是由是CL来完成的,是NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成Visual Studio的基石。2.3 MFC MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C+类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 MFC的关键技术: 1. MFC程序的初始化过程 建立一个MFC窗口很容易,只用两步:一是从CWinApp派生一个应用程序类,然后建立应用程序对象(theApp),就可以产生一个自己需要的窗口。 2.运行时类型识别(RTTI) 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属于某个类,平时用C+编程接触的RTTI一般是编译器的RTTI,即是在新版本的VC+编译器里面选用“使能RTTI”,然后载入typeinfo.h文件,就可以使用一个叫typeid()的运算子,它的地位与在C+编程中的sizeof()运算子类似的地方(包含一个头文件,然后就有一个熟悉好用的函数)。typeid()关键的地方是可以接受两个类型的参数:一个是类名称,一个是对象指针。 3.动态创建 动态创建就是运行时创建指定类的对象,在MFC中大量使用。如框架窗口对象、视对象,还有文档对象都需要由文档模板类对象来动态的创建。 4.永久保存 MFC的连续存储(serialize)机制俗称串行化。这里的永久保存是站在Application Framework的角度来说的。即保存一些数据,框架通过读这些数据能够自动把原本的对象重构出来。这里也是通过两类宏实现的。这两类宏分别是在类中增加operator友元函数(把数据串行化到文件中)的声明和定义。 5.消息映射 消息映射与命令传递体现了MFC与SDK的不同。在SDK编程中,没有消息映射的概念,它有明确的回调函数中,通过一个switch语句去判断收到了何种消息,然后对这个消息进行处理。所以,在SDK编程中,会发送消息和在回调函数中处理消息就差不多可以写SDK程序了。 在MFC中,看上去发送消息和处理消息比SDK更简单、直接,但可惜不直观。举个简单的例子,如果想自定义一个消息,SDK是非常简单直观的,用一条语句:SendMessage(hwnd,message/*一个大于或等于WM_USER的数字*/,wparam,lparam),之后就可以在回调函数中处理了。但MFC就不同了,因为你通常不直接去改写窗口的回调函数,所以只能亦步亦趋对照原来的MFC代码,把消息放到恰当的地方。 6.消息传递 在MFC的消息不仅仅是在派生类和基类之间流动,还可以在同一层次之间流动。对于WM_COMMAND来说,消息处理的顺序可以整理为:Frame窗口先接受到消息,依次判断View、Frame窗口本身、CWinApp的DefWndProc是否处理,如果View要处理消息他也会依次判断View本身处理还是Document处理,如果是Document处理他也会依次判断Document本事处理还是Document Template处理。 因为上面类的层次关系。对于消息的传递只能通过静态、全局函数、虚函数来完成。2.4设备上下文DC设备上下文DC(Device Context又称设备环境,也称设备描述表)是一个Windows数据结构,它包含了某个设备的绘制属性。是一个关于如何绘制图形的方法的集合,它可以绘制各种图形,确定在应用窗口中绘制图形的方式,即确定绘图模式和映射模式。在绘图之前,必须获取绘图窗口区域的一个设备环境DC。接着进行GDI函数的调用,执行适合于设备环境DC的命令。获取DC时,Windows初始化了一套完整的属性和对象集合,可以使用它们渲染显示。为了创建自己应用程序的特定显示,可以更改这些属性和对象。Windows的设备环境是GDI的关键元素,它代表了不同的物理设备。分为4种类型,包括显示器型,打印机型,内存型和信息型。2.5数字图像处理基础2.5.1数字图像概述人眼能识别的自然景象或图像原也是一种模拟信号,为了使计算机能够记录和处理图像、图形,必须首先使其数字化。数字化后的图像、图形称为数字图像、数字图形,一般也简称为图像、图形。数字图像可以看成一个矩阵,或一个二维数组,这是在计算机上表示的方式。一幅MN个像素的数字图像,其像素灰度值可以用M行、N列的矩阵G表示: (2.1)在存储数字图像时,一幅M行、N列的数字图像(MN个像素),可以用一个MN的二维数组T表示。图像的各个像素灰度值可按一定顺序存放在数组T中。在计算机中,按照颜色和灰度的多少可以将图像分为二值图像、灰度图像、索引图像和真彩色RGB图像四种基本类型。大多数图像处理软件都支持这四种类型的图像。a. 二值图像一幅二值图像的二维矩阵仅由0、1两个值构成,“0”代表黑色,“1”代白色。由于每一像素(矩阵中每一元素)取值仅有0、1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值图像通常用于文字、线条图的扫描识别(OCR)和掩膜图像的存储。b. 灰度图像灰度图像矩阵元素的取值范围通常为0,255。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。“0”表示纯黑色,“255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。在某些软件中,灰度图像也可以用双精度数据类型(double)表示,像素的值域为0,1,0代表黑色,1代表白色,0到1之间的小数表示不同的灰度等级。二值图像可以看成是灰度图像的一个特例。c. 索引图像索引图像的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵MAP的二维数组。MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域为0,255,则MAP矩阵的大小为2563,用MAP=RGB表示。MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值,如某一像素的灰度值为64,则该像素就与MAP中的第64行建立了映射关系,该像素在屏幕上的实际颜色由第64行的RGB组合决定。也就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为索引通过检索颜色索引矩阵MAP得到。索引图像的数据类型一般为8位无符号整形(int8),相应索引矩阵MAP的大小为2563,因此一般索引图像只能同时显示256种颜色,但通过改变索引矩阵,颜色的类型可以调整。索引图像的数据类型也可采用双精度浮点型(double)。索引图像一般用于存放色彩要求比较简单的图像,如Windows中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用到RGB真彩色图像。d. RGB彩色图像RGB图像与索引图像一样都可以用来表示彩色图像。与索引图像一样,它分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。但与索引图像不同的是,RGB图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由R、G、B三个分量来表示,M、N分别表示图像的行列数,三个MN的二维矩阵分别表示各个像素的R、G、B三个颜色分量。RGB图像的数据类型一般为8位无符号整形,通常用于表示和存放真彩色图像,当然也可以存放灰度图像。2.5.2图像处理概述所谓数字图像处理(Digital Image Processing),就是指用数字计算机及其他相关的数字技术,对数字图像施加某种或某些运算和处理,从而达到某种预期的处理目的。数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。数字图像处理就是利用计算机对图像信息进行加工以满足人的视觉心理或者应用需求的行为。实质上是一段能够被计算机还原显示和输出为一幅图像的数字码。21世纪是一个充满信息的时代,图像作为人类感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。数字图像处理,即用计算机对图像进行处理,其发展历史并不长。数字图像处理技术源于20世纪20年代,当时通过海底电缆从英国伦敦到美国纽约传输了一幅照片,采用了数字压缩技术。首先数字图像处理技术可以帮助人们更客观、准确地认识世界,人的视觉系统可以帮助人类从外界获取3/4以上的信息,而图像、图形又是所有视觉信息的载体,尽管人眼的鉴别力很高,可以识别上千种颜色,但很多情况下,图像对于人眼来说是模糊的甚至是不可见的,通过图象增强技术,可以使模糊甚至不可见的图像变得清晰明亮。另一方面,通过数字图像处理中的模式识别技术,可以将人眼无法识别的图像进行分类处理。通过计算机模式识别技术可以快速准确的检索、匹配和识别出各种东西。2.5.3图像的基本概念a. 像素 显示器的屏幕是由许多点构成的,这些点称为像素。因而,像素其实指的就是点。 b. 调色板 现实世界的颜色种类是无限的,但计算机显示系统所能表示的颜色数量是有限的。为了使计算机能最逼真的重现世界,就必须采用一定的技术来管理和取舍颜色,为了完成这一任务,调色板做出了不可磨灭的贡献。受计算机显示系统显示功能的限制,当今的显示器一般只支持16色、256色和真色彩(16777216色)。如果一幅图像的每一个像素都用其R、G、B(Red、Green、Blue)分量值来表示,那么,所有的图像文件都将变得非常庞大。例如,一幅200200的16色图像共40000个像素。如果每个像素都用 R、G、B这三个分量值来表示(每个分量占1B(Bate),则每个像素需要3B,保存整个图像共需要2002003B,即120000B。但如果采用一个颜色表,表中每一行纪录一种颜色的R、G、B值,这样,当表示一个像素的颜色时,只需指出该颜色在颜色表中的索引即可。通过索引表来表示颜色,则16色只需4位,即lB可以表示两个像素。保存整个图像只用2002000.5B,即20000B,再加上颜色表占用的316=48B,也不过20048B。可见,使用颜色表的16色图像的存储量只有未用颜色表的16色图像的1/6,大大节约了图像的存储空间。这样的颜色表就是调色板。调色板(Palette)也可以叫颜色查找表,是指在16色或256色显示系统中由图像中出现最频繁的16种或256种颜色所组成的颜色表。对这些颜色按4位(16色)或8位(256色),即O15或0255进行编号(索引号)代表R、G、B,3个分量24位颜色值。使用调色板的图像叫做调色板图像。对调色板图像而言,它们的像素值不是颜色值,而是颜色在调色板查找表中的索引号。 虽然采用调色板技术可以大大节省存储图像的空间,但它不是万能的,因为任何一 门技术的应用都有它的先决条件。对于256色的系统,一般都是采用调色板技术。而对于24位真色彩系统,一般不采用调色板,直接使用R、G、B值表示像素值,即用3B 来表示一个真色彩像素的颜色值,R、G、B的值分别用lB来表示。否则的话,非但不能减少图像的存储空间,反而会额外增加一个调色板的存储空间。同时,天才的Windows 操作系统开发者为了保证Windows基本显示界面的一致性而保留了一个有20种颜色的内部系统调色板,用来绘制窗口的图标、边界和按钮等,以免Windows操作界面被使用者搞得乱七八糟。这个系统调色板在所有的显示设置中都保持不变。因此,在16色的显示系统中,一般也不操作调色板,而是直接使用系统调色板。 2.5.4 BMP位图BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。BMP是使用像素阵列来表示的图像,每个像素的色彩信息由RGB组合或者灰度值表示。根据颜色信息所需的数据位分为1、4、8、16、24及32位等,位数越高颜色越丰富,相应的数据量越大。其中使用1位表示一个像素颜色的位图因为一个数据位只能表示两种颜色,所以又称为二值位图。通常使用24位RGB组合数据位表示的的位图称为真彩色位图。位图一共有两种类型,即:设备相关位图(DDB)和设备无关位图(DIB)。本系统用的是设备无关位图DIB。BMP文件结构:位图文件由4个部分组成:位图文件头(bitmap-file header)、位图信息头(bitmap-information header)、颜色表(color table)和定义位图的字节(位图数据,即图像数据,Data Bits或Data Body)阵列。图2.1为位图结构图。位图文件头位图信息头颜色表图像数据图2.1位图文件结构图3 系统总体设计3 系统总体设计3.1系统总体框架设计图像处理的内容十分丰富,应用领域也十分广范。本系统主要是通过Visual C+开发环境搭建一个图像处理的平台,设计了一个BMP图像处理软件。整个系统根据需求及各个算法之间的关系,由如下5个模块及其子模块构成,主要有五部分:图像的文件操作、图像的几何变换、图像的特效显示、图像的灰度变化、图像的分析变化。3.1.1系统的总体框架设计如下图3.1系统总体框架图3.1.2系统流程图如下图3.2系统流程图3.1.3系统的模块设计系统采用模块化设计,根据图像处理的内容将整个系统划分为5个模块,每个模块下又有各自的子模块。具体模块设计如下:a.文件操作模块将指定位图文件的数据读入到相应的数据结构中,以便进一步处理,再将处理后的数据以位图的格式加以保存。该模块主要是对BMP图像进行打开、保存操作。其功能模块图如图3.3所示: 图3.3文件操作模块功能结构图b.几何变换模块图像的几何变换又成为空间变换,即图像中点与点之间的空间映射关系。对BMP图像进行镜像、缩放、转置。旋转操作。其功能模块图如图3.4所示:图3.4几何变换模块功能结构图c.特效显示模块 图像的特效显示就是利用人眼的视觉特性通过对图像分块然后以不同的次序显示出来。实现图像的特效显示的基本思路是将图像分割成不同的小块按一定的方向或次序、分阶段地显示或擦除图像块。该模块主要是对BMP图像进行图像渐显、水平栅条、马赛克特效、百叶窗特效显示操作。其功能模块图如图3.5所示:图3.5特效显示模块功能结构图d.灰度变换模块 图像的灰度变换是基于点操作的增强方法,它将每一个像素的灰度值按照一定的数学变换公式转换为一个新的灰度值。它是图像增强的重要手段,可使图像动态范围加大,图像对比度增强,图像清晰,特征明显。该模块主要是对BMP图像进行图像反色变换、亮度调整、对比度调整、窗口灰度变换、直方图均衡化操作。其功能模块图如图3.6所示:图3.6灰度变化模块功能结构图f.分析变化模块 对BMP图像进行边缘检测、轮廓提取操作。其功能模块图如图3.7所示:图3.7分析变化模块功能结构图4 系统详细设计与实现4 系统详细设计与实现4.1BMP文件结构4.1.1BMP文件组成BMP文件由文件头、位图信息头、颜色信息和图形数据四部分组成。文件头主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息。位图信息头包含图像的尺寸信息、图像用几个比特数值来表示一个像素、图像是否压缩、图像所用的颜色数等信息。颜色信息包含图像所用到的颜色表,显示图像时需用到这个颜色表来生成调色板。文件中的数据块表示图像的相应的像素值,图像的像素值在文件中的存放顺序为从左到右,从下到上,在BMP文件中首先存放的是图像的最后一行像素,最后才存储图像的第一行像素,但对与同一行的像素,则是按照先左边后右边的的顺序存储的。4.1.2BMP文件头BMP文件头数据结构含有BMP文件的类型、文件大小和位图起始位置等信息。其结构定义如下:typedef struct tagBITMAPFILEHEADER WORD bfType; / 位图文件的类型,必须为BMP DWORD bfSize; / 位图文件的大小,以字节为单位 WORD bfReserved1; / 位图文件保留字,必须为0 WORD bfReserved2; / 位图文件保留字,必须为0 DWORD bfOffBits; / 位图数据的起始位置,以相对于位图文件头的偏移量表示,以字节为单位 BITMAPFILEHEADER;该结构占据14个字节。4.1.3BMP信息头BMP位图信息头数据用于说明位图的尺寸等信息。其结构如下:typedef struct tagBITMAPINFOHEA

温馨提示

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

评论

0/150

提交评论