




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要本文对图形图像处理系统的发展现状和所采用的主要技术进行了详细分析,确定了相应的结构和主要功能,以及实际开发中所采取的技术。系统在Windows XP平台下实现,本课题是采用Visual C+作为编程工具,采用面向对象的程序设计技术实现一个图形绘制和图像处理的应用软件。主要工作分为三类,包括基本图形绘制与编辑、简单的图像处理、图像格式的转换。图形方面主要是设计图形基类,以及继承图形基类的具体图形类。通过对独立功能的封装,可以为今后需要的图形图像的应用奠定基础。系统的优点有:充分体现了面向对象的设计思想,充分运用了C+的特性,比如封装、多态、继承。程序结构清晰,可读性好,程序中做了充分的注释
2、。图形绘制部分避免了传统的switch case的繁琐结构。容易扩充和移植。最后,对系统进行测试表明,系统功能达到了预期的要求,界面友好,操作简便,运行也较稳定,是一个完成基本功能的图形图像系统。总体上,本文介绍了系统开发设计的全过程和设计过程中部分代码,也对系统测试的过程进行简单描述,同时对系统中采用的关键技术也作了一些必要的说明,对图像变换的基本原理,图像处理的基本原理和各种图像格式做了详细的阐述。关键词:图形;图像;多态;继承I / 58AbstractThis article has carried on the detailed analysis about graph image
3、processing system development and using of the key technology,identify the corresponding structure and central function, as well as the system adopts technology in the actual development. The system realizes under the Windows XP platform, the topic use Visual C+ as a programming tool, use object-ori
4、ented programming techniques to achieve a graphic and image processing software. Major work is divided into three categories, basic drawing and editing graphics, simple image processing, and image format conversion. The graph aspect is designs the graph base class , as well as inherits the graph bas
5、e classs specific graph class. Through independent functions encapsulation, for the futures needs of the graphic images lays the foundation. The system merit has: the object-oriented designs thought application of the c+ properties, for example encapsulation, polymorphism, and inheritance. Programs
6、structure is clear, good readability, codes has the full annotation in the program. The graph plans part has avoided complicated structure of the traditional switch case. Easy expansion and transplantation. Finally, systems testing shows, systems functions achieve the expected demand, friendly inter
7、face, and the operation is simple, also a much stable operation, it has basic functions of the graphic image system.As a whole, this paper describes the system design process and part of the process of designing code, also carries on the simple description to the system test process, meanwhile it ma
8、de some necessary explanations about key technology in the system, it made the detailed description to image transform of the basic principle, the image processing basic principle and various image formats.Keyword: graph; image; polymorphism; inheritance目 录摘 要IAbstractII第1章 引 言11.1 课题的研究目的和意义11.2 国内
9、外发展现状11.3 研究方法与手段21.3.1 运行环境21.3.2 开发环境2第2章 图形图像处理系统相关技术综述32.1 图形设计基础32.1.1 Visual C+技术概要32.1.2 图形设备接口GDI32.1.3 设备环境DC32.1.4 CDC类的派生类的功能及其之间的区别42.1.5 与绘图相关的GDI对象类52.1.6 坐标变换和映射模式62.2 图像设计基础72.2.1 数字图像的基本概念72.2.2 调色板82.2.3 调色板的概念9第3章 图形图像处理系统的总体设计103.1 需求分析103.2 图形图像处理系统目标设计103.3 图形图像处理系统功能描述103.4 界面
10、设计123.4.1 主界面设计123.4.2菜单设计143.4.3 工具栏设计143.4.4 属性框设计15第4章 图形图像处理系统图像部分设计164.1 与设备无关位图(DIB)164.1.1 DIB位图的结构164.1.2 定义DIB处理函数集184.1.3 CDib类的设计目标204.2 图像变换204.2.1 图像变换的理论基础204.2.2 旋转214.2.3 镜像224.3 图像处理的基本方法224.4 图像格式254.4.1 PCX格式255.4.2 GIF格式264.4.3 JPEG28第5章 图形图像处理系统图形部分设计295.1 图形类的设计295.1.1 图形系统的层次结
11、构295.1.3 类层次性的特点295.1.4 图形系统类层次的设计原则305.1.5 基类CEntity305.1.6 命令基类CCommand315.2 派生类设计325.2.1 派生类Cline325.2.2 派生类Cline的具体实现325.2.3 创建直线命令类CCreateLine335.3 位置类Position335.3.1 构造位置类的原因345.3.2 位置类Position的实现345.4 图元拾取355.4.1 直线的拾取365.4.2 矩形的拾取375.4.3 圆的拾取375.4.4 图元拾取的准确度和可靠性375.5 图元的编辑375.5.1 图元编辑函数385.5
12、.2 实现图元的交互编辑395.6 序列化和反序列化405.7系统测试41第6章 结论43参考文献44致 谢45第1章 引 言1.1 课题的研究目的和意义本课题的目的是采用Visual C+作为编程工具,实现基本图形元素如直线、圆、椭圆等的绘制,对图形元素的基本操作如填充、擦除等,也包括对常用图像格式的处理,如图像的显示、图像格式的转换等1。应该说,目前已有种类繁多的图形图像处理专用软件工具,如AutoCAD、和PhotoShop等,利用这些图形图像处理软件可以实现同样的功能。即便如此,研究这些图形图像处理技术仍具有一定使用价值。首先,利用一个设计良好的简单的小图形处理程序可以用于教学演示的目
13、的,展示基本的图形图像处理技术和面向对象技术在这一领域的应用效果。其次,在很多应用中需要提供自己的图形图像处理功能,例如,在一个正在连接网络的任务中可能就希望显示一幅示意性的动画,此时,不能依赖一个图形软件来实现。因此,通过对独立功能的封装,可以为今后需要的图形图像的应用奠定基础2。此外,借助Visual C+语言这种典型的面向对象编程环境,能够充分挖掘硬件的潜能,得到性能优良的程序代码。1.2 国内外发展现状图形与图像处理是计算机最早应用的领域之一,从简单的图形显示到复杂的图像分析、模式识别,使得图形与图像处理技术不断走向成熟,也涌现出了大量的软件。例如,ACDSee、PhotoShop、C
14、orelDraw等,这些软件提供了一般显示、特殊显示、特技处理等大量复杂的功能。图形处理技术得益于图形学的发展,而从目的上可以将图像处理技术分为两类,分别是图像识别技术和图像处理技术。针对图像处理技术,可以是旋转、亮度、对比度、饱和度、RGB调节、调节图像尺寸等属性方面的处理技术和添加文字、图像增强、弱化、水印、特效、镂空等处理方法。甚至为了达到更精微的处理效果,这些软件还使用了图层。随着网络和多媒体技术的发展和应用,体现在应用软件中的是一些更具有“现代感”的应用,例如,支持各种常用图形、RAW原始图片、Flash动画的快速浏览、编辑、保存、导入、导出,甚至还可以提供一些趣味涂鸦、字符素描之类
15、的应用,以体现人的个性3。事实上,应用软件中常常需要采用其中的某些技术来处理相关的问题。例如,一个支持简单形状辅助设计的软件并不需要支持特效方面的方法。在软件设计的支撑环境和技术上,C+是一个很好的选择,这主要是考虑到如下因素,主要包括代码效率高,处理底层问题能力强,支持面向对象的程序设计方法。利用C+技术可以实现对程序代码和数据的良好封装,使之能够具有良好的重用性。1.3 研究方法与手段1.3.1 运行环境运行环境主要介绍了硬件环境和软件环境。(1) 硬件环境 处理器:Inter Pentium 166 MX 或更高 内存:32MB或更高 硬盘空间:1GB或更高 显卡:SVGA显示适配器(2
16、) 软件环境操作系统:Window 98/ME/2000/XP1.3.2 开发环境开发环境主要介绍了本系统采用的操作系统、开发语言。(1) 操作系统:Windows XP(2) 开发语言:C+(3) 开发环境:Visual C+ 6.0第2章 图形图像处理系统相关技术综述2.1 图形设计基础2.1.1 Visual C+技术概要面向对象程序设计(Object-Oriented Programming,简称OOP)方法已出现近30年,在20世纪90年代己成为程序设计的主流方向。面向对象程序设计语言是现代程序开发的主要工具。程序包含两类基本的元素,即数据和操作数据的指令集(称为代码)。传统的程序设
17、计语言以设计代码为核心,程序设计实际上就是指定程序指令的先后次序,数据表示必须适应代码的设计。模块化程序设计方法将完成某一功能的指令集组成一个相对独立的程序模块(即函数或过程),使得程序的结构清晰,便于有效的维护,对程序设计技术有很大的促进。但由于结构化程序设计方法并不能保证各程序模块之间真正的相互独立,程序设计者在设计一个模块时很难完全排除其他模块的影响。随着程序规模的增大,各模块之间的相互影响导致一些难于测试,难以定位发现的错误,增加了程序开发和维护的困难。面向对象程序设计方法主要以数据为中心,代码是围绕着需要处理的数据而设计的4。2.1.2 图形设备接口GDI图形设备接口(GDI)是一个
18、抽象的接口。通过该接口可以实现对图形的颜色、线条的粗细等属性的控制。程序可以通过调用这些GDI函数和硬件打交道的,从而实现了设备无关性5。2.1.3 设备环境DC设备环境DC(Device Context又称设备上下文,也称设备描述表)是一个关于如何绘制图形的方法的集合,它可以绘制各种图形,确定在应用窗口中绘制图形的方式,即确定绘图模式和映射模式。在绘图之前,必须获取绘图窗口区域的一个设备环境DC。接着进行GDI函数的调用,执行适合于设备环境DC的命令。获取DC时,Windows初始化了一套完整的属性和对象集合,可以使用它们渲染显示。为了创建自己应用程序的特定显示,可以更改这些属性和对象。Wi
19、ndows的设备环境是GDI的关键元素,它代表了不同的物理设备5。分为4种类型,包括显示器型,打印机型,内存型和信息型。每种类型的设备环境都有各自的特定用途,详见表2-1。表2-1 设备环境的类型和用途设 备 环 境用 途显示器型打印机型内存型信息型支持视频显示器上的绘图操作支持打印机和绘图仪上的绘图操作支持位图上的绘图操作支持设备数据的访问2.1.4 CDC类的派生类的功能及其之间的区别CDC各派生类各有特点,并可以完成不同的功能,表2-2介绍了各派生类的主要功能。表2-2 CDC类的派生类简介派生类名称说 明CClientDC这是一个设备描述表,提供对窗口客户区域的图形访问。在窗口中画图时
20、可使用此类DC,但对WM_PAINT Windows消息除外。CMetaFileDC这个设备描述表代表Windows元文件,它包含一系列命令已重新产生图像。想要创建独立于设备的文件时可使用此类DC,用户可以回放这种文件来创建图像。续表2-2派生类名称说 明CPaintDC这是创建WM_PAINT Windows消息的设备描述表。应用程序可以使用此DC更新Windows显示,通常在MFC应用程序的OnPaint()函数中使用。CWindowDC可以提供在整个窗口(包括客户区和非客户区)中画图的设备描述表。(1) CWindowDC类与CPaintDC和CClientDC类的区别CWindowDC
21、类与CPanitDC类和CClientDC的区别的一个方面是:用CPaintDC类CClientDC类的对象绘制图形时,绘制区只能是客户区,而不能在非客户区,而CWindowDC可以在非客户区进行图形绘制。CWindowDC一般在框架窗口类中(CMainFrame)引用,在视图窗口中引用CWindowDC类时,由于视图类只能管理客户区,所以并不能在非客户区进行绘制。他们之间区别的另一个方面是:在CWindowDC绘图类下,坐标系是建立在整个屏幕上的,在像素坐标方式下,坐标原点在屏幕的左上角,而在CPaintDC和CClientDC绘图类下,坐标系是建立在客户区上的,在像素坐标方式下,坐标原点在
22、客户区的左上角6。(2) CPainDC类与CClientDC类的区别CPaintDC类与CClientDC类都是在窗口的客户区内绘制图形,但两者在绘制机制上有着本质的区别。CPaintDC类应用在OnPaint函数中,以响应Windows的WM_PAINT消息,而CClientDC应用在非响应消息WM_PAINT的情况下。CPaintDC类响应WM_PANINT消息,自动完成绘制,这对维护图形的完整性有着重要的作用。2.1.5 与绘图相关的GDI对象类本节主要介绍与绘制各种图形元素相关的GDI对象类。所谓基本绘图对象类主要包括CBitmap类、CBrush类、CFont类、CPen类、CRg
23、n类。它们都是CGdiObject类的派生类6。简要介绍如下。(1) CBitmap位图是一种位矩阵,每一个显示像素都对应于其中的一个或多个位。利用位图来表示图像,创建画刷。(2) CBrush画刷定义了一种位图形式的像素,利用它可对区域内部填充颜色。(3) CFont字体是一种具有某种风格和尺寸的所有字符的完整集合。 (4) CPen画笔是一种用来画线及绘制有形边框的工具,可以指定它的颜色及厚度,并且可以指定它画实线、点线或虚线。(5) CRgn区域是由多边形、椭圆或二者组合形成的一种范围,可以利用它来进行填充、裁剪。(6) CPalette调色板是一种颜色映射接口,允许应用程序在不干扰其他
24、应用程序的前提下,充分利用输出设备的颜色描绘能力。2.1.6 坐标变换和映射模式在本节讨论两种坐标系逻辑坐标系和设备坐标系及其相互之间的转换。坐标映射方式是指两种坐标系在相互转换时,逻辑单位和设备单位之间存在的某种比例关系。(1) 逻辑坐标和设备坐标的转换设备坐标是针对屏幕或其他显示设备而言的。其原点在屏幕的左上角。X轴正方向为向右,Y轴的正方向为向下。原点位于窗口的左上角点处。单位为像素。逻辑坐标则是在内存中虚拟的一个坐标系。其原点在屏幕的左上角。X轴的正方向为向右,Y轴的正方向为向上。其单位随着映射模式的不同而改变。(2) 窗口和视口窗口是虚拟存在的一个屏幕,在屏幕上看到的图形是视口。Wi
25、ndows在绘制图形时,并不是把图形直接绘制到屏幕上,而是绘制到特定的映射模式下的逻辑坐标系虚拟的窗口中,然后将这个图形映射到一个视图中,即视口中。而当前的设备(如屏幕,打印机)显示出来的就是该视图的一部分7。(3) 设置绘图模式绘图模式指定了画笔颜色和被填充物体内部颜色是如何与显示平面的颜色相混合的。绘图模式是描述两个变量的所有可能的布尔组合,指采用什么方式进行绘制工作,而采用的方式主要体现在像素颜色的设定。2.2 图像设计基础2.2.1 数字图像的基本概念人眼看到的任何自然界的图像都是连续的模拟图像,其形状和形态表现由图像各位置的颜色所决定。色度学理论认为,任何颜色都可由红(Red)、绿(
26、Green)、蓝(Blue)3种基本颜色按不同的比例混合得到。红、绿、蓝被称为三原色,简称RGB三原色。因此,自然界的图像可用基于位置坐标的三维函数来表示,即 f(x,y,z)=(fred(x,y,z),fgreen(x,y,z),fblue(x,y,z) (2-1)其中f表示空间坐标为(x,y,z)位置点的颜色,fred、fgreen、fblue分别表示该位置点的红、绿、蓝3种原色的颜色分量值。它们都是空间的连续函数,即连续空间的每点都由一个精确的值与之相对应。为了研究的方便,主要考虑平面图像。平面上每一点仅包括两个坐标值。因此,平面图像函数是连续的二维的数,即 f(x,y)=(fred(x
27、,y),fgreen(x,y),fblue(x,y) (2-2)图像可以分为黑白图像和彩色图像。所谓黑白图像,就是图像中每一点都不是彩色的,即每点的红、绿、蓝颜色分量值都相等,即 fred=fgreen=fblue (2-3)对于黑白图像,其f(x,y)表示(x,y)位置处的灰度值。由于计算机仅能处理离散的数据,所以如要用计算机来处理图像,连续的图像函数必须转化为离散的数据集,这一过程叫做图像采集7。图像采集由图像采集系统完成,如图2-1所示。图像采集系统包括3个基本单元,即成像系统、采样系统和量化器。成像系统f(x,y)g(x,y)量化器gs(x,y)ga(x,y)景物图像采样图像数字图像采
28、样系统图2-1 图像采集系统2.2.2 调色板现实世界的颜色种类是无限的,但计算机显示系统所能表现的颜色数量是有限的。因此,为了使计算机能最好地重现实际图景,就必须采用一定的技术来管理和取舍颜色。按表现能力的不同,现代计算机的显示系统可以分为以下3种。(1) VGA:能用640480的分辨率同时显示16种颜色。(2) SuperVGA:能用640480的分辨率同时显示256种颜色(3) 真彩色:能同时显示16777216种颜色。所谓真彩色(True Color),是指显示出来的图像的颜色与真实世界中的颜色非常自然逼真、人眼难以区分它们的差别。通常使用RGB表示法来表现真彩色图像,即用3字节(2
29、4位)来表示个真彩色像素的颜色值,红、绿、蓝三原色的浓度分别用一字节(8位)来表示。Windows采用该方法来表现颜色,其SDK提供一个名为RGB的宏来将不同的R、G、B颜色值转化为24位的颜色值,其原型如下所示。 COLORREF RGB(BYTE bRed, BYTE bGReen, BYTE bBlue) (2-7)COLORREF是表示颜色值的数据类型,是一个32位的无符号长整数;bRed、bGreen和bBlue分别表示红、绿、蓝三原色的浓度,它们的类型是BYTE,长度是8位。其十六进制数据表示形式如下所示。0x00bbggrr(2-8)字节rr、gg、bb比分别表示红、绿、蓝三原色
30、的浓度,最高位字节为0,用于保留与将来的系统兼容8。2.2.3 调色板的概念在真彩色系统中,每一个像素的值都用24位来表示。像素值与真彩色颜色值可以一一对应,所以像素值就是所表现的颜色位。但对于仅能同时显示16色或256色的系统,每一个像素仅能分别采用4位或8位来表示,像素值与真彩色颜色值不能一一对应,用像素值代表颜色值的方法将不能得到最佳的效果,而必须采用调色板技术。所谓调色板就是在16色或256色显示系统中,由图像中出现最频繁的16种或256种颜色所组成的颜色表。对这些颜色按4位或8位,即0至15或255进行编号,每一编号代表其中的一种颜色。这种颜色编号叫做颜色的索引号,4位或8位的索引号
31、与24位的颜色值的对应表叫做颜色查找表。使用调色板的图像叫做调色板图像。它们的像素值并不是颜色值,而是颜色在调色板查找表中的索引号9。为了保证Windows的基本显示界面的一致性,Windows保留了一个有20种颜色的内部系统调色板,用来绘制窗口的图标、边界和按钮等通用界面。该调色板在所有的显示设置中都保持不变。在16色的显示系统中,系统调色板通过16种颜色的抖动来产生其余4种颜色。在256色的显示系统中,Windows也保持该20种颜色的次序,其余的236种颜色由当前的调色板分配10。第3章 图形图像处理系统的总体设计3.1 需求分析市场上的图像处理软件大都功能强大,需要好一阵子适应,普通的
32、用户根本用不到那么多的功能。所以,可以开发一种简单小巧,可进行基本图像处理,图形绘制的软件非常必要。利用一个设计良好的简单的小图形图像处理程序可以用于教学演示的目的,展示基本的图形图像处理技术和面向对象技术在这一领域的应用效果。通过对独立功能的封装,可以为今后需要的图形图像的应用奠定基础。此外,借助Visual C+语言这种典型的面向对象编程环境,能够充分挖掘硬件的潜能,得到性能优良的程序代码。3.2 图形图像处理系统目标设计系统的设计目标是采用面向对象的程序设计技术实现一个图形绘制和图像处理的应用软件,满足普通用户对于图形图像应用程序的简单需求。主要工作分为三类,包括基本图形绘制与编辑、图像
33、格式识别与转换、简单的图像处理。3.3 图形图像处理系统功能描述系统的主要功能包括绘制各种简单图形、改变所绘图形的颜色、线条类型、打开和存储各种常见的图像文件、对图像进行简单的处理。(1) 图元绘制 直线图元,或者称为线段图元,允许用户使用鼠标选择直线顶点绘制。 圆图元,允许用户利用圆心和半径来进行绘制。 矩形图元。 圆角矩形图元。(2) 改变绘制条件在绘制图元时要能够改变绘制条件,主要包括如下内容。 改变线条颜色,使用户可以绘制出不同颜色的图元。 改变线条类型,使用户可以绘制出不同线型的图元。 改变填充方式,使用户可以选择不同的填充方式。(3) 图元修改包括如下操作。 删除图元。 平移图元。
34、 镜像图元。 旋转图元。(4) 图元属性修改 改变被选图元颜色。图像部分图形图像系统图形部分图3-1 图形图像处理系统功能描述图图元绘制设置属性图元修改修改属性图形部分图3-2 图形图像处理系统功能描述图图形部分图像部分格式转换图像变换图像处理镜像旋转平滑锐化图3-3 图形图像处理系统功能描述图图像部分 改变被选图元线型。 改变被选图元线宽。(5) 图像格式处理能够打开、存储、关闭几种常见图像文件,隐含了格式的转换。(6) 图像变换包括旋转、镜像。(7) 图像处理包括图像平滑、锐化。根据功能模块分析,完整的系统功能描述参见图3-1。3.4 界面设计3.4.1 主界面设计图形图像系统启动界面,如
35、图3-4所示。图3-4 图形图像系统启动界面考虑到图像处理的方便,决定采用多文档(MDl)界面。基本的绘图工具都在两个工具栏中体现出来,这是为了方便用户绘图的需要,属性单独使用一个对话框使设置图元的属性更加方便,而且使界面看起来更加的美观。图形图像系统界面如图3-5所示。图3-5 图形图像系统界面3.4.2菜单设计主菜单如图3-6所示,包括文件、编辑、查看、窗口、图像变换、图像处理、帮助菜单项。图3-6 图形图像系统菜单图像变换菜单包括图像的旋转和镜像,图像处理菜单包括平滑和锐化。图3-7 图像变换和图像处理菜单3.4.3 工具栏设计工具栏方便绘图,所以本系统把常用的绘图操作命令都用工具栏来实
36、现,如图3-8、图3-9是本应用程序的工具栏。主工具栏中包括打开、新建、保存、回退,设定画布大小等命令。图3-8 主工具栏绘图工具栏中包括绘制直线,矩形,圆角矩形,圆,椭圆等图形。图3-9 绘图工具栏3.4.4 属性框设计属性框可以设置绘图图形的属性,包括线型,线宽,颜色的属性属性框的界面如下图如3-10所示。图3-10 属性框界面第4章 图形图像处理系统图像部分设计4.1 与设备无关位图(DIB)Windows3.1以上版本提供了对设备无关位图DIB的支持。DIB位图可以在不同的机器或系统中显示位图所固有的图像。与DDB相比而言,DIB是一种外部的位图格式,经常存储为以.BMP为后缀的位图文
37、件(有时也以DIB为后缀)。DIB位图还支持图像数据的压缩11。4.1.1 DIB位图的结构DIB位图文件的结构如图4-1所示,包括位图文件头结构BITMAPEHEADER、位图信息头结构BITMAPINFOHEADER、位图颜色表RGBQUAD和位图像素数据4部分。位图文件头结构BITMAPEHEADER位图信息头结构BITMAPINFOHEADER位图颜色表RGBQUAD位图像素数据图4-1 DIB位图的结构上面结构中各数据域的意义如表4-2所示。表4-1 Windows位图结构数据域的含义结 构数 据 域含 义BITMAPFILEHEADERbfType字节“BM”bfSize文件总字节
38、数bfReserved10 续表4-1结 构数 据 域含 义bfResrved20bfOffBits位图数据距文件头的偏移量BITMAPINFOHEADERbiSize本结构大小的字节数biWidth位图的宽度,单位为像素点biHeight位图的高度,单位为像素点biPlanes1bitBitCount像素的位数(1,4,8,24)biCompression压缩方式(0表示不压缩)biSizeImage位图数据的字节数biXpelsPerMeter水平分辨(像素点每米)biYpelsPerMeter垂直分辨(像素点每米)biClrUsed图像中使用的颜色数biClrImportant图像中重要
39、的颜色数RGBQUADrgbBlue蓝色的比例rgbGreen绿色的比例rgbRed红色的比例rgbReserved0DIB位图像素的位数可为1、4、8和24,其图像的颜色数分别为2、16、256和真彩色其中前3种具有对应的颜色表,而24位位图的颜色表为空,其像素值就是颜色值12。4.1.2 定义DIB处理函数集定义的DIB处理函数如表4-2所示。表4-2 DIB处理函数集函数类型函 数 名功 能初始化函数CreateDIB创建一个空的DIBCreateDefaultDIB用当前的系统调色板创建一个空的DIBDestroryDIB释放DIB内存块LoadDIB从DIB文件中装载DIB数据Sav
40、eDIB读DIB存到文件中ReadDIBFile读DIB存到内存中属性函数BytesPerLine获取DIB每行所占的字节数DIBlockSize获取DIB数据块的大小DIBHeight获取DIB高度DIBWidth获取DIB宽度DIBNumColors获取DIB的颜色数DIBBitCout获取DIB的图像颜色位数FindDIB Bits获取DIB数据块的地址(指针)PletteSize获取DIB的调色板中的颜色表项数显示函数PaintBitmap显示DDBPaintDIB显示DIB续表4-2函数类型函 数 名功 能PaintDIB显示DIB操作函数DIBToDIBSetion将DIB数据块转
41、换为DIBSECTION DIBSectionToDIB将DIBSECTION转换为DIB数据块ConvertDIBFormat修改的格式BitmapToDIB将DDB转换为DIB ChangeBitmapFormat修改DDB的格式DIBToBitmap将DDB转换为DIB ChangeDIBFormat基于当前的系统调色板修改DIB调色板函数CreateDIBPalette创建DIB调色板DisplayPalette显示调色板CopyPalette拷贝调色板GetSystemPalette获取当前的系统调色板PalEntriesOnDevice获取设备的调色板表项数CreateIdenti
42、fyPalette创建等同调色板MapDIBColorsToPalette按指定的调色板映射DIB的颜色捕获函数CopyScreenToBitmap将屏幕显示转换为一个DDBCopyWindowToBitmap将指定窗口的显示转换为一个DDBCopyClientRectToBitmap将指定窗口用户区的指定区域显示转换为一个DDBCopyScreenToDIB将屏幕显示转换为一个DIBCopyWindowToDIB将指定窗口的显示转换为一个DIB4.1.3 CDib类的设计目标实现图像处理的基础是设计一个解释位图的DIB类(名CDib),基本功能如下所述。(1) 多种形式的构造函数,包括创建空
43、DIB、从DDB创建、从DIB句柄创建、从DIB数据块指针创建及从屏幕或窗口显示创建等;(2) 支持拷贝构造函数和赋值运算;(3) DIB文件的读、写操作;(4) 从资源中装载DIB位图;(5) DIB的显示;(6) 提供DIB的空间颜色和格式特征等信息;(7) DDB与DIB的相互转换;(8) DIB格式转换;(9) DIB调色板操作;(10) 能获取DIB位图数据的句柄;(11) 能生成DIB数据的拷贝。4.2 图像变换4.2.1 图像变换的理论基础图像变换主要是指几何变换或空间变换,是一种建立一幅图像与其变形后的图像中所有各点之间映射关系的函数,可表示为:x,y=X(u,v),Y(u,v
44、)(4-1)或u,v=U(x,y),V(x,y)(4-2)其中,u,v表示输出图像中像素的坐标,x,y表示输入图像中像素的坐标。X、Y、U、V惟一确定空间变换的映射函数,即它们唯一地定义了输入图像和输出图像中所有点之间的几何对应关系。X、Y将输入映射到输出,称为向前映射(Forward mapping);U、V将输出图像映射到输入,称为逆向映射(Inverse mapping)。4.2.2 旋转在实际的应用中,最常用的是直角旋转,包括对位图(逆时针)旋转90、180和270。其中最基本的是旋转90的操作,旋转180和270的操作可借助旋转90的操作来实现。将位图旋转90的实现步骤如下所述。(1
45、) 创建一个新DIB,其颜色信息与源位图相同,注意新位图的宽、高分别为源位图的高和宽。(2) 根据位图的存储位大小,分别对1位、4位、8位和24位的位图进行旋转,即对DIB的每一像素进行旋转变换。图4-3为图像经过旋转90度之后的效果。图4-2 原 图图4-3 旋转90度之后的图像4.2.3 镜像镜像变换有两种基本形式,即水平镜像和垂直镜像。前者是将图像所有像素的排列左右反转,后者是将图像所有像素的排列上下反转。图4-4 原 图图4-5 水平镜像之后的图像4.3 图像处理的基本方法基本的图像处理方法可分为点处理和区域处理两类。点处理相对较简单,只能改变图像的灰度分布,但不会改变图像内的空间关系
46、。点处理可以按预定的方式改变图像的灰度直方图。最常用的点处理是灰度直方图均衡。区域处理在处理某一像素时,利用与该像素相邻的一组像素,经过某种变换得到处理后图像中某一点的像素值。目标像素的邻域一般是由像素组成的二维矩阵,该矩阵的大小为奇数。目标像素位于该矩阵的中央,即目标像素就是区域的中心像素。经过处理后,目标像素的值为经过特定算法计算后所得的结果。区域中心像素周围的那些像素值在二维方向上提供了图像的亮度变化趋势的信息。图像中像素的亮度在一定距离上的变化速率称为图像的空间频率。区域处理将改变图像的空间频率信息,减缓或增强图像中的某些特定的频率分量13。主要的区域处理算法有卷积法、中值滤波法和So
47、bel边缘检测法。我们这里只介绍卷积法。(1) 卷积原理卷积可以简单地看成加权求和的过程。卷积时使用的权用一个很小的矩阵来表示,矩阵的大小是奇数,而且与使用的区域的大小相同。这种权矩阵叫做卷积核,区域中的每个像素分别与卷积核中的每个元素相乘,所有乘积之和即为区域中心像素的新值。 卷积核中各元素叫做卷积系数。卷积核中卷积系数的大小、方向及排列次序决定了卷积的图像处理效果。大多数常用的卷积核都是33的,所有卷积核的行、列数都是奇数14。(2) 低通滤波:图像平滑与模糊低通滤波的基本思路是保留图像空间频率的低频成分,减少图像的高频成分。低通滤波可以降低图像中的视觉噪声,同时除去图像中的高频部分后,图
48、像中那些本来不明显的低频成分就更容易识别了15。(3) 高通滤波:图像锐化与清晰高通滤波增强图像的高频空间频率成分,阻挡低频中间频率成分。相对于高频成分来说,低频成分被削弱了。在需要突出图像中的高频成分时,可对图像进行高通滤波。(4) 平滑与锐化对图像进行低通滤波将使图像平滑;而对图像进行高通滤波将使图像锐化。因此图像的平滑与锐化处理实际上就是对图像进行低、高通滤波,即用低、高通滤波器作为卷积核来对图像进行卷积处理。图4-6 原 图图4-7 平滑之后的图像图4-8 锐化之后的图像4.4 图像格式用数字来表示图有两种不同的方式,即位图(又称为栅格或像素图)和矢量图。在具体的实现上,不同的厂家,在
49、不同的系统上和不同的软件中又采用不同的图像表示方式,即以不同的图像格式,来表示数字图像。4.4.1 PCX格式(1) 文件结构概述PCX格式由3个部分组成,即文件头、位图数据和一个多达256种色彩的调色板。PCX文件由固定的128字节的文件头开始。文件头包含版本号、被打印或扫描图像的分辨率(单位为每英寸点数)、大小(单位像素数)、每扫描行字节数、每像素位数和彩色平面数等信息。文件还可包括一个调色板以及表明该调色板是灰度还是彩色的一个代码。(2) 格式详解文件头如表4-3所示。表4-3 PCX文件头起始字节字节数内 容解 释01Zsoft标志10(0x0a),Zsoft PCX 文件的标志11版
50、本号0:PC Paintbrush 2.51:PC Paintbrush 2.821编码1:PCX游程长度31位/像素每个平面的位/像素值,可能值为1,2,4,或848图像大小图像边界极限为Xmin,Ymin,Xmax,Ymax,以像素为单位122水平分辨率打印时,X方向的每英寸点数续表4-3起始字节字节数内 容解 释142垂直分辨打印时,Y方向的每英寸点数1648文件头调色板调色板部分的说明641保留字节Zsoft保留,为0651平面彩色/灰色平面数,PCX图像可以是单彩色,也可以具有多个颜色平面662每行字节数每个色彩平面的每行字节数,即存储 未压缩图像的一个扫描行所需的字节数,总是偶数6
51、82调色板解释1:彩色或黑白2:灰度702视频屏幕大小X视频输出的水平像素数-1722视频屏幕大小Y视频输出的垂直像素数-17454全空直到文件结束05.4.2 GIF格式GIF(Graphics Interchange Format,图形交换格式)文件由CompuServe公司开发并持有该文件格式的版权。GIF图像是基于颜色列表而存储,即图像中每一点的存储数据是该点的颜色对应于颜色列表的索引值。GIF图像最多支持8位存储位,即最多仅支持256色图像。GIF文件内部是按块划分的,包括控制块(Control Block)和数据块(Data Sub-blocks)两种。控制块控制数据块行为,不同的
52、控制块包含一些不同的控制参数;数据块只包含些8-bit的字符流,由它前面的控制块来决定它的功能。每个数据块大小从0到255个字节不等。数据块的第一个字节存储这个数据块大小(字节数),但数据块的大小不包括这个字节。所以即使空的数据块也有一个字节,即数据块的大小为0x00。如图4-9所示显示了一个GIF数据块的结构。 图4-9 GIF数据块的结构图4-10 GIF文件的结构一个GIF文件的结构可分为文件头(File Header)、GIF数据流(GIF Data Stream)和文件终结符(Tailer)3个部分。文件头包含GIF文件署名(Signature)和版本号(Version),包括GIF
53、数据流由控制标识符、图像块(Image Block)和其他的一些扩展块组成;文件终结符只有一个值为0x3B的字符表示文件结束。如图4-10所示显示了一个GIF文件的组成结构。4.4.3 JPEGJPEG的全称是“联合图片专家组(Joint Photographic Experts Group)”,是由该专家组制订的用于连续色调(包括灰度和彩色)静止图像的压缩编码标准。JPEG标准的压缩编码算法是“多灰度静止图像的数字压缩编码”。JPEG标准包括3部分,即编码器、译码器和交换格式。编码器将原始图像的编码压缩成压缩数据,译码器将压缩的图像数据还原成原始图像数据。图像压缩数据以一定的交换格式存储。第5章 图形图像处理系统图形部分设计5.1 图形类的设计图形类的设计这一节介绍了图形类的层次结构,类层次设计的特点和设计原则以及图形类的一些实现代码。5.1.1 图形系统的层次结构利用面向对象的方法,将图形的基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆彭水苗族土家族自治县2025年上半年事业单位公开遴选试题含答案分析
- 云南省盐津县2025年上半年事业单位公开遴选试题含答案分析
- 河北省望都县2025年上半年事业单位公开遴选试题含答案分析
- 河北省任丘市2025年上半年公开招聘辅警试题含答案分析
- 河北省青县2025年上半年公开招聘城市协管员试题含答案分析
- 河北省孟村回族自治县2025年上半年公开招聘城市协管员试题含答案分析
- 2025年存量房交易全程资金监管与划转合同
- 2025橱柜安装工程质量监管与验收合同协议
- 2025版企业员工劳动合同解除与经济补偿合同
- 2025年度配送员劳动合同范本修订示范
- 口腔健康与全身系统性疾病关联机制
- 消防部队改革转隶课件
- 2025年安徽合肥包河区演艺集团有限责任公司招聘笔试参考题库含答案解析
- CJ/T 120-2016给水涂塑复合钢管
- T/CNIDA 010-2023核电厂建(构)筑物变形监测系统技术规程
- T/CECS 10214-2022钢面镁质复合风管
- 既有供暖蒸汽管网及设施改造项目建议书(参考范文)
- 公交从业人员考试试题及答案
- 智联招聘协议书
- 2025-2030中国细胞分选机行业市场发展趋势与前景展望战略研究报告
- 中国特色社会主义知识点总结中职高考政治一轮复习
评论
0/150
提交评论