收藏 分享(赏)

图像识别技术和图像处理技术.doc

上传人:cjc2202537 文档编号:7676586 上传时间:2019-05-23 格式:DOC 页数:50 大小:1.58MB
下载 相关 举报
图像识别技术和图像处理技术.doc_第1页
第1页 / 共50页
图像识别技术和图像处理技术.doc_第2页
第2页 / 共50页
图像识别技术和图像处理技术.doc_第3页
第3页 / 共50页
图像识别技术和图像处理技术.doc_第4页
第4页 / 共50页
图像识别技术和图像处理技术.doc_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、摘 要本文对图形图像处理系统的发展现状和所采用的主要技术进行了详细分析,确定了相应的结构和主要功能,以及实际开发中所采取的技术。系统在 Windows XP 平台下实现,本课题是采用 Visual C+作为编程工具,采用面向对象的程序设计技术实现一个图形绘制和图像处理的应用软件。主要工作分为三类,包括基本图形绘制与编辑、简单的图像处理、图像格式的转换。图形方面主要是设计图形基类,以及继承图形基类的具体图形类。通过对独立功能的封装,可以为今后需要的图形图像的应用奠定基础。系统的优点有:充分体现了面向对象的设计思想,充分运用了 C+的特性,比如封装、多态、继承。程序结构清晰,可读性好,程序中做了充

2、分的注释。图形绘制部分避免了传统的 switch case 的繁琐结构。容易扩充和移植。最后,对系统进行测试表明,系统功能达到了预期的要求,界面友好,操作简便,运行也较稳定,是一个完成基本功能的图形图像系统。总体上,本文介绍了系统开发设计的全过程和设计过程中部分代码,也对系统测试的过程进行简单描述,同时对系统中采用的关键技术也作了一些必要的说明,对图像变换的基本原理,图像处理的基本原理和各种图像格式做了详细的阐述。关键词:图形;图像;多态;继承AbstractThis 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目 录摘 要 .IAbstract II第 1 章 引 言.11.1 课题的研究目的和意义1

9、1.2 国内外发展现状11.3 研究方法与手段21.3.1 运行环境.21.3.2 开发环境.2第 2 章 图形图像处理系统相关技术综述.32.1 图形设计基础32.1.1 Visual C+技术概要 .32.1.2 图形设备接口 GDI 32.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 图形图像处理系统目

10、标设计103.3 图形图像处理系统功能描述103.4 界面设计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

11、JPEG 28第 5 章 图形图像处理系统图形部分设计.295.1 图形类的设计295.1.1 图形系统的层次结构.295.1.3 类层次性的特点.295.1.4 图形系统类层次的设计原则.305.1.5 基类 CEntity .305.1.6 命令基类 CCommand 315.2 派生类设计325.2.1 派生类 Cline.325.2.2 派生类 Cline 的具体实现 325.2.3 创建直线命令类 CCreateLine .335.3 位置类 Position .335.3.1 构造位置类的原因.345.3.2 位置类 Position 的实现 .345.4 图元拾取355.4.1

12、直线的拾取.365.4.2 矩形的拾取.375.4.3 圆的拾取.375.4.4 图元拾取的准确度和可靠性.375.5 图元的编辑375.5.1 图元编辑函数.385.5.2 实现图元的交互编辑.395.6 序列化和反序列化405.7 系统测试.41第 6 章 结论.43参考文献.44致 谢.45第 1 章 引 言1.1 课题的研究目的和意义本课题的目的是采用 Visual C+作为编程工具,实现基本图形元素如直线、圆、椭圆等的绘制,对图形元素的基本操作如填充、擦除等,也包括对常用图像格式的处理,如图像的显示、图像格式的转换等 1。应该说,目前已有种类繁多的图形图像处理专用软件工具,如 Aut

13、oCAD、和 PhotoShop 等,利用这些图形图像处理软件可以实现同样的功能。即便如此,研究这些图形图像处理技术仍具有一定使用价值。首先,利用一个设计良好的简单的小图形处理程序可以用于教学演示的目的,展示基本的图形图像处理技术和面向对象技术在这一领域的应用效果。其次,在很多应用中需要提供自己的图形图像处理功能,例如,在一个正在连接网络的任务中可能就希望显示一幅示意性的动画,此时,不能依赖一个图形软件来实现。因此,通过对独立功能的封装,可以为今后需要的图形图像的应用奠定基础 2。此外,借助 Visual C+语言这种典型的面向对象编程环境,能够充分挖掘硬件的潜能,得到性能优良的程序代码。1.

14、2 国内外发展现状图形与图像处理是计算机最早应用的领域之一,从简单的图形显示到复杂的图像分析、模式识别,使得图形与图像处理技术不断走向成熟,也涌现出了大量的软件。例如,ACDSee、PhotoShop、CorelDraw 等,这些软件提供了一般显示、特殊显示、特技处理等大量复杂的功能。图形处理技术得益于图形学的发展,而从目的上可以将图像处理技术分为两类,分别是图像识别技术和图像处理技术。针对图像处理技术,可以是旋转、亮度、对比度、饱和度、RGB调节、调节图像尺寸等属性方面的处理技术和添加文字、图像增强、弱化、水印、特效、镂空等处理方法。甚至为了达到更精微的处理效果,这些软件还使用了图层。随着网

15、络和多媒体技术的发展和应用,体现在应用软件中的是一些更具有“现代感”的应用,例如,支持各种常用图形、RAW 原始图片、Flash 动画的快速浏览、编辑、保存、导入、导出,甚至还可以提供一些趣味涂鸦、字符素描之类的应用,以体现人的个性 3。事实上,应用软件中常常需要采用其中的某些技术来处理相关的问题。例如,一个支持简单形状辅助设计的软件并不需要支持特效方面的方法。在软件设计的支撑环境和技术上,C+是一个很好的选择,这主要是考虑到如下因素,主要包括代码效率高,处理底层问题能力强,支持面向对象的程序设计方法。利用 C+技术可以实现对程序代码和数据的良好封装,使之能够具有良好的重用性。1.3 研究方法

16、与手段1.3.1 运行环境运行环境主要介绍了硬件环境和软件环境。(1) 硬件环境 处理器:Inter Pentium 166 MX 或更高 内存:32MB 或更高 硬盘空间:1GB 或更高 显卡:SVGA 显示适配器(2) 软件环境操作系统: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-Orie

17、nted Programming,简称 OOP)方法已出现近30 年,在 20 世纪 90 年代己成为程序设计的主流方向。面向对象程序设计语言是现代程序开发的主要工具。程序包含两类基本的元素,即数据和操作数据的指令集(称为代码)。传统的程序设计语言以设计代码为核心,程序设计实际上就是指定程序指令的先后次序,数据表示必须适应代码的设计。模块化程序设计方法将完成某一功能的指令集组成一个相对独立的程序模块(即函数或过程),使得程序的结构清晰,便于有效的维护,对程序设计技术有很大的促进。但由于结构化程序设计方法并不能保证各程序模块之间真正的相互独立,程序设计者在设计一个模块时很难完全排除其他模块的影响

18、。随着程序规模的增大,各模块之间的相互影响导致一些难于测试,难以定位发现的错误,增加了程序开发和维护的困难。面向对象程序设计方法主要以数据为中心,代码是围绕着需要处理的数据而设计的4。2.1.2 图形设备接口 GDI图形设备接口(GDI)是一个抽象的接口。通过该接口可以实现对图形的颜色、线条的粗细等属性的控制。程序可以通过调用这些 GDI 函数和硬件打交道的,从而实现了设备无关性 5。2.1.3 设备环境 DC设备环境 DC(Device Context 又称设备上下文,也称设备描述表)是一个关于如何绘制图形的方法的集合,它可以绘制各种图形,确定在应用窗口中绘制图形的方式,即确定绘图模式和映射

19、模式。在绘图之前,必须获取绘图窗口区域的一个设备环境 DC。接着进行 GDI 函数的调用,执行适合于设备环境 DC的命令。获取 DC 时,Windows 初始化了一套完整的属性和对象集合,可以使用它们渲染显示。为了创建自己应用程序的特定显示,可以更改这些属性和对象。Windows 的设备环境是 GDI 的关键元素,它代表了不同的物理设备 5。分为 4 种类型,包括显示器型,打印机型,内存型和信息型。每种类型的设备环境都有各自的特定用途,详见表 2-1。表 2-1 设备环境的类型和用途设 备 环 境 用 途显示器型打印机型内存型信息型支持视频显示器上的绘图操作支持打印机和绘图仪上的绘图操作支持位

20、图上的绘图操作支持设备数据的访问2.1.4 CDC 类的派生类的功能及其之间的区别CDC 各派生类各有特点,并可以完成不同的功能,表 2-2 介绍了各派生类的主要功能。表 2-2 CDC 类的派生类简介派生类名称 说 明CClientDC 这是一个设备描述表,提供对窗口客户区域的图形访问。在窗口中画图时可使用此类 DC,但对WM_PAINT Windows 消息除外。CMetaFileDC 这个设备描述表代表 Windows 元文件,它包含一系列命令已重新产生图像。想要创建独立于设备的文件时可使用此类 DC,用户可以回放这种文件来创建图像。续表 2-2派生类名称 说 明CPaintDC 这是创

21、建 WM_PAINT Windows 消息的设备描述表。应用程序可以使用此 DC 更新 Windows 显示,通常在 MFC 应用程序的 OnPaint()函数中使用。CWindowDC 可以提供在整个窗口(包括客户区和非客户区)中画图的设备描述表。(1) CWindowDC 类与 CPaintDC 和 CClientDC 类的区别CWindowDC 类与 CPanitDC 类和 CClientDC 的区别的一个方面是:用CPaintDC 类 CClientDC 类的对象绘制图形时,绘制区只能是客户区,而不能在非客户区,而 CWindowDC 可以在非客户区进行图形绘制。CWindowDC 一

22、般在框架窗口类中(CMainFrame)引用,在视图窗口中引用 CWindowDC 类时,由于视图类只能管理客户区,所以并不能在非客户区进行绘制。他们之间区别的另一个方面是:在 CWindowDC 绘图类下,坐标系是建立在整个屏幕上的,在像素坐标方式下,坐标原点在屏幕的左上角,而在 CPaintDC 和 CClientDC 绘图类下,坐标系是建立在客户区上的,在像素坐标方式下,坐标原点在客户区的左上角 6。(2) CPainDC 类与 CClientDC 类的区别CPaintDC 类与 CClientDC 类都是在窗口的客户区内绘制图形,但两者在绘制机制上有着本质的区别。CPaintDC 类应

23、用在 OnPaint 函数中,以响应Windows 的 WM_PAINT 消息,而 CClientDC 应用在非响应消息 WM_PAINT的情况下。CPaintDC 类响应 WM_PANINT 消息,自动完成绘制,这对维护图形的完整性有着重要的作用。2.1.5 与绘图相关的 GDI 对象类本节主要介绍与绘制各种图形元素相关的 GDI 对象类。所谓基本绘图对象类主要包括 CBitmap 类、CBrush 类、CFont 类、CPen类、CRgn 类。它们都是 CGdiObject 类的派生类 6。简要介绍如下。(1) CBitmap位图是一种位矩阵,每一个显示像素都对应于其中的一个或多个位。利用

24、位图来表示图像,创建画刷。(2) CBrush画刷定义了一种位图形式的像素,利用它可对区域内部填充颜色。(3) CFont字体是一种具有某种风格和尺寸的所有字符的完整集合。 (4) CPen画笔是一种用来画线及绘制有形边框的工具,可以指定它的颜色及厚度,并且可以指定它画实线、点线或虚线。(5) CRgn区域是由多边形、椭圆或二者组合形成的一种范围,可以利用它来进行填充、裁剪。(6) CPalette调色板是一种颜色映射接口,允许应用程序在不干扰其他应用程序的前提下,充分利用输出设备的颜色描绘能力。2.1.6 坐标变换和映射模式在本节讨论两种坐标系逻辑坐标系和设备坐标系及其相互之间的转换。坐标映

25、射方式是指两种坐标系在相互转换时,逻辑单位和设备单位之间存在的某种比例关系。(1) 逻辑坐标和设备坐标的转换设备坐标是针对屏幕或其他显示设备而言的。其原点在屏幕的左上角。X轴正方向为向右,Y 轴的正方向为向下。原点位于窗口的左上角点处。单位为像素。逻辑坐标则是在内存中虚拟的一个坐标系。其原点在屏幕的左上角。X轴的正方向为向右,Y 轴的正方向为向上。其单位随着映射模式的不同而改变。(2) 窗口和视口窗口是虚拟存在的一个屏幕,在屏幕上看到的图形是视口。Windows 在绘制图形时,并不是把图形直接绘制到屏幕上,而是绘制到特定的映射模式下的逻辑坐标系虚拟的窗口中,然后将这个图形映射到一个视图中,即视

26、口中。而当前的设备(如屏幕,打印机)显示出来的就是该视图的一部分 7。(3) 设置绘图模式绘图模式指定了画笔颜色和被填充物体内部颜色是如何与显示平面的颜色相混合的。绘图模式是描述两个变量的所有可能的布尔组合,指采用什么方式进行绘制工作,而采用的方式主要体现在像素颜色的设定。2.2 图像设计基础2.2.1 数字图像的基本概念人眼看到的任何自然界的图像都是连续的模拟图像,其形状和形态表现由图像各位置的颜色所决定。色度学理论认为,任何颜色都可由红(Red)、绿(Green)、蓝(Blue)3 种基本颜色按不同的比例混合得到。红、绿、蓝被称为三原色,简称 RGB 三原色。因此,自然界的图像可用基于位置

27、坐标的三维函数来表示,即f(x,y,z)=(fred(x,y,z),fgreen(x,y,z),fblue(x,y,z) (2-1)其中 f 表示空间坐标为(x,y,z)位置点的颜色,fred 、 fgreen、f blue 分别表示该位置点的红、绿、蓝 3 种原色的颜色分量值。它们都是空间的连续函数,即连续空间的每点都由一个精确的值与之相对应。为了研究的方便,主要考虑平面图像。平面上每一点仅包括两个坐标值。因此,平面图像函数是连续的二维的数,即f(x,y)=(fred(x,y),fgreen(x,y),fblue(x,y) (2-2)图像可以分为黑白图像和彩色图像。所谓黑白图像,就是图像中每

28、一点都不是彩色的,即每点的红、绿、蓝颜色分量值都相等,即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)景物 图 像采 样 图 像 数 字 图 像采 样 系 统图 2-1 图像采集系统2.2.2 调色板现实世界的颜色种类是无限

29、的,但计算机显示系统所能表现的颜色数量是有限的。因此,为了使计算机能最好地重现实际图景,就必须采用一定的技术来管理和取舍颜色。按表现能力的不同,现代计算机的显示系统可以分为以下 3 种。(1) VGA:能用 640480 的分辨率同时显示 16 种颜色。(2) SuperVGA:能用 640480 的分辨率同时显示 256 种颜色(3) 真彩色:能同时显示 16777216 种颜色。所谓真彩色(True Color),是指显示出来的图像的颜色与真实世界中的颜色非常自然逼真、人眼难以区分它们的差别。通常使用 RGB 表示法来表现真彩色图像,即用 3 字节(24 位)来表示个真彩色像素的颜色值,红

30、、绿、蓝三原色的浓度分别用一字节(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 比分别表示红、绿、蓝

31、三原色的浓度,最高位字节为 0,用于保留与将来的系统兼容 8。2.2.3 调色板的概念在真彩色系统中,每一个像素的值都用 24 位来表示。像素值与真彩色颜色值可以一一对应,所以像素值就是所表现的颜色位。但对于仅能同时显示 16色或 256 色的系统,每一个像素仅能分别采用 4 位或 8 位来表示,像素值与真彩色颜色值不能一一对应,用像素值代表颜色值的方法将不能得到最佳的效果,而必须采用调色板技术。所谓调色板就是在 16 色或 256 色显示系统中,由图像中出现最频繁的 16 种或 256 种颜色所组成的颜色表。对这些颜色按 4 位或8 位,即 0 至 15 或 255 进行编号,每一编号代表其

32、中的一种颜色。这种颜色编号叫做颜色的索引号,4 位或 8 位的索引号与 24 位的颜色值的对应表叫做颜色查找表。使用调色板的图像叫做调色板图像。它们的像素值并不是颜色值,而是颜色在调色板查找表中的索引号 9。为了保证 Windows 的基本显示界面的一致性,Windows 保留了一个有 20 种颜色的内部系统调色板,用来绘制窗口的图标、边界和按钮等通用界面。该调色板在所有的显示设置中都保持不变。在 16 色的显示系统中,系统调色板通过 16 种颜色的抖动来产生其余 4 种颜色。在 256 色的显示系统中,Windows也保持该 20 种颜色的次序,其余的 236 种颜色由当前的调色板分配 10

33、。第 3 章 图形图像处理系统的总体设计3.1 需求分析市场上的图像处理软件大都功能强大,需要好一阵子适应,普通的用户根本用不到那么多的功能。所以,可以开发一种简单小巧,可进行基本图像处理,图形绘制的软件非常必要。利用一个设计良好的简单的小图形图像处理程序可以用于教学演示的目的,展示基本的图形图像处理技术和面向对象技术在这一领域的应用效果。通过对独立功能的封装,可以为今后需要的图形图像的应用奠定基础。此外,借助Visual C+语言这种典型的面向对象编程环境,能够充分挖掘硬件的潜能,得到性能优良的程序代码。3.2 图形图像处理系统目标设计系统的设计目标是采用面向对象的程序设计技术实现一个图形绘

34、制和图像处理的应用软件,满足普通用户对于图形图像应用程序的简单需求。主要工作分为三类,包括基本图形绘制与编辑、图像格式识别与转换、简单的图像处理。3.3 图形图像处理系统功能描述系统的主要功能包括绘制各种简单图形、改变所绘图形的颜色、线条类型、打开和存储各种常见的图像文件、对图像进行简单的处理。(1) 图元绘制 直线图元,或者称为线段图元,允许用户使用鼠标选择直线顶点绘制。 圆图元,允许用户利用圆心和半径来进行绘制。 矩形图元。 圆角矩形图元。(2) 改变绘制条件在绘制图元时要能够改变绘制条件,主要包括如下内容。 改变线条颜色,使用户可以绘制出不同颜色的图元。 改变线条类型,使用户可以绘制出不

35、同线型的图元。 改变填充方式,使用户可以选择不同的填充方式。(3) 图元修改包括如下操作。 删除图元。 平移图元。 镜像图元。 旋转图元。(4) 图元属性修改 改变被选图元颜色。图 3-1 图形图像处理系统功能描述图图 3-2 图形图像处理系统功能描述图图形部分图像部分图形图像系统图形部分图元绘制设置属性图元修改修改属性图形部分图像部分格式转换图像变换图像处理镜像旋转平滑锐化图 3-3 图形图像处理系统功能描述图图像部分 改变被选图元线型。 改变被选图元线宽。(5) 图像格式处理能够打开、存储、关闭几种常见图像文件,隐含了格式的转换。(6) 图像变换包括旋转、镜像。(7) 图像处理包括图像平滑

36、、锐化。根据功能模块分析,完整的系统功能描述参见图 3-1。3.4 界面设计3.4.1 主界面设计图形图像系统启动界面,如图 3-4 所示。图 3-4 图形图像系统启动界面考虑到图像处理的方便,决定采用多文档(MDl)界面。基本的绘图工具都在两个工具栏中体现出来,这是为了方便用户绘图的需要,属性单独使用一个对话框使设置图元的属性更加方便,而且使界面看起来更加的美观。图形图像系统界面如图 3-5 所示。图 3-5 图形图像系统界面3.4.2 菜单设计主菜单如图 3-6 所示,包括文件、编辑、查看、窗口、图像变换、图像处理、帮助菜单项。图 3-6 图形图像系统菜单图像变换菜单包括图像的旋转和镜像,

37、图像处理菜单包括平滑和锐化。图 3-7 图像变换和图像处理菜单3.4.3 工具栏设计工具栏方便绘图,所以本系统把常用的绘图操作命令都用工具栏来实现,如图 3-8、图 3-9 是本应用程序的工具栏。主工具栏中包括打开、新建、保存、回退,设定画布大小等命令。图 3-8 主工具栏绘图工具栏中包括绘制直线,矩形,圆角矩形,圆,椭圆等图形。图 3-9 绘图工具栏3.4.4 属性框设计属性框可以设置绘图图形的属性,包括线型,线宽,颜色的属性属性框的界面如下图如 3-10 所示。图 3-10 属性框界面第 4 章 图形图像处理系统图像部分设计4.1 与设备无关位图(DIB)Windows3.1 以上版本提供

38、了对设备无关位图 DIB 的支持。DIB 位图可以在不同的机器或系统中显示位图所固有的图像。与 DDB 相比而言,DIB 是一种外部的位图格式,经常存储为以.BMP 为后缀的位图文件 (有时也以 DIB 为后缀)。DIB 位图还支持图像数据的压缩 11。4.1.1 DIB 位图的结构DIB 位图文件的结构如图 4-1 所示,包括位图文件头结构BITMAPEHEADER、位图信息头结构 BITMAPINFOHEADER、位图颜色表RGBQUAD 和位图像素数据 4 部分。位图文件头结构 BITMAPEHEADER位图信息头结构 BITMAPINFOHEADER位图颜色表 RGBQUAD位图像素数

39、据图 4-1 DIB 位图的结构上面结构中各数据域的意义如表 4-2 所示。表 4-1 Windows 位图结构数据域的含义结 构 数 据 域 含 义BITMAPFILEHEADER bfType 字节“BM”bfSize 文件总字节数bfReserved1 0续表 4-1结 构 数 据 域 含 义bfResrved2 0bfOffBits 位图数据距文件头的偏移量BITMAPINFOHEADER biSize 本结构大小的字节数biWidth 位图的宽度,单位为像素点biHeight 位图的高度,单位为像素点biPlanes 1bitBitCount 像素的位数(1,4,8,24)biCom

40、pression 压缩方式(0 表示不压缩)biSizeImage 位图数据的字节数biXpelsPerMeter 水平分辨(像素点每米)biYpelsPerMeter 垂直分辨(像素点每米)biClrUsed 图像中使用的颜色数biClrImportant 图像中重要的颜色数RGBQUAD rgbBlue 蓝色的比例rgbGreen 绿色的比例rgbRed 红色的比例rgbReserved 0DIB 位图像素的位数可为 1、4、8 和 24,其图像的颜色数分别为2、16、256 和真彩色其中前 3 种具有对应的颜色表,而 24 位位图的颜色表为空,其像素值就是颜色值 12。4.1.2 定义

41、DIB 处理函数集定义的 DIB 处理函数如表 4-2 所示。表 4-2 DIB 处理函数集函数类型 函 数 名 功 能CreateDIB 创建一个空的 DIBCreateDefaultDIB 用当前的系统调色板创建一个空的DIBDestroryDIB 释放 DIB 内存块LoadDIB 从 DIB 文件中装载 DIB 数据SaveDIB 读 DIB 存到文件中初始化函数ReadDIBFile 读 DIB 存到内存中BytesPerLine 获取 DIB 每行所占的字节数DIBlockSize 获取 DIB 数据块的大小DIBHeight 获取 DIB 高度DIBWidth 获取 DIB 宽度

42、DIBNumColors 获取 DIB 的颜色数DIBBitCout 获取 DIB 的图像颜色位数FindDIB Bits 获取 DIB 数据块的地址(指针)属性函数PletteSize 获取 DIB 的调色板中的颜色表项数显示函数 PaintBitmap 显示 DDBPaintDIB 显示 DIB续表 4-2函数类型 函 数 名 功 能PaintDIB 显示 DIBDIBToDIBSetion 将 DIB 数据块转换为 DIBSECTION DIBSectionToDIB 将 DIBSECTION 转换为 DIB 数据块ConvertDIBFormat 修改的格式BitmapToDIB 将

43、DDB 转换为 DIB ChangeBitmapFormat 修改 DDB 的格式DIBToBitmap 将 DDB 转换为 DIB 操作函数ChangeDIBFormat 基于当前的系统调色板修改 DIBCreateDIBPalette 创建 DIB 调色板DisplayPalette 显示调色板CopyPalette 拷贝调色板GetSystemPalette 获取当前的系统调色板PalEntriesOnDevice 获取设备的调色板表项数CreateIdentifyPalette 创建等同调色板调色板函数MapDIBColorsToPalette 按指定的调色板映射 DIB 的颜色Cop

44、yScreenToBitmap 将屏幕显示转换为一个 DDBCopyWindowToBitmap 将指定窗口的显示转换为一个 DDBCopyClientRectToBitmap 将指定窗口用户区的指定区域显示转换为一个 DDBCopyScreenToDIB 将屏幕显示转换为一个 DIB捕获函数CopyWindowToDIB 将指定窗口的显示转换为一个 DIB4.1.3 CDib 类的设计目标实现图像处理的基础是设计一个解释位图的 DIB 类(名 CDib) ,基本功能如下所述。(1) 多种形式的构造函数,包括创建空 DIB、从 DDB 创建、从 DIB 句柄创建、从 DIB 数据块指针创建及从

45、屏幕或窗口显示创建等;(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) (4-1)或u,v=U(x,y)

46、,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) 创建一

47、个新 DIB,其颜色信息与源位图相同,注意新位图的宽、高分别为源位图的高和宽。(2) 根据位图的存储位大小,分别对 1 位、4 位、8 位和 24 位的位图进行旋转,即对 DIB 的每一像素进行旋转变换。图 4-3 为图像经过旋转 90 度之后的效果。图 4-2 原 图图 4-3 旋转 90 度之后的图像4.2.3 镜像镜像变换有两种基本形式,即水平镜像和垂直镜像。前者是将图像所有像素的排列左右反转,后者是将图像所有像素的排列上下反转。图 4-4 原 图图 4-5 水平镜像之后的图像4.3 图像处理的基本方法基本的图像处理方法可分为点处理和区域处理两类。点处理相对较简单,只能改变图像的灰度分布

48、,但不会改变图像内的空间关系。点处理可以按预定的方式改变图像的灰度直方图。最常用的点处理是灰度直方图均衡。区域处理在处理某一像素时,利用与该像素相邻的一组像素,经过某种变换得到处理后图像中某一点的像素值。目标像素的邻域一般是由像素组成的二维矩阵,该矩阵的大小为奇数。目标像素位于该矩阵的中央,即目标像素就是区域的中心像素。经过处理后,目标像素的值为经过特定算法计算后所得的结果。区域中心像素周围的那些像素值在二维方向上提供了图像的亮度变化趋势的信息。图像中像素的亮度在一定距离上的变化速率称为图像的空间频率。区域处理将改变图像的空间频率信息,减缓或增强图像中的某些特定的频率分量 13。主要的区域处理

49、算法有卷积法、中值滤波法和 Sobel 边缘检测法。我们这里只介绍卷积法。(1) 卷积原理卷积可以简单地看成加权求和的过程。卷积时使用的权用一个很小的矩阵来表示,矩阵的大小是奇数,而且与使用的区域的大小相同。这种权矩阵叫做卷积核,区域中的每个像素分别与卷积核中的每个元素相乘,所有乘积之和即为区域中心像素的新值。 卷积核中各元素叫做卷积系数。卷积核中卷积系数的大小、方向及排列次序决定了卷积的图像处理效果。大多数常用的卷积核都是 33 的,所有卷积核的行、列数都是奇数 14。(2) 低通滤波:图像平滑与模糊低通滤波的基本思路是保留图像空间频率的低频成分,减少图像的高频成分。低通滤波可以降低图像中的视觉噪声,同时除去图像中的高频部分后,图像中那些本来不明显的低频成分就更容易识别了 15。(3) 高通滤波:图像锐化与清晰高通滤波增强图像的高频空间频率成分,阻挡低频中间频率成分。相对于高频成分来说,低频成分被削弱了。在需要突出图像中的高频成分时,可对图像

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报