1、 本科毕业论文 ( 20 届) 基于 Visual C#平台的几种数字图像处理算法的实现 所在学院 专业班级 信息与计算科学 学生姓名 学号 指导教师 职称 完成日期 年 月 浙江海洋学院毕业论文 I 摘 要 目前大多数的图像是以数字形式存储,因而图像处理在很多情况下是指数字图像处理。图像处理是信号处理 的子类,另外它与计算机科学、人工智能等领域也有密切的关系。自从 20 世纪 60 年代以来,数字图像处理的理论和方法不断完善,已经在宇宙探测、遥控、生物医学、工农业生产、军事、公安、办公自动化、视频和多媒体系统等领域得到了广泛应用,并显示出广阔的应用前景,它已经成为计算机科学、信息科学、生物学
2、、医学等学科研究的热点。 本设计是基于 Visual C# 数字图像处理的点运算实现,综合运用面向对象设计技术、数字图象处理技术 , 以 Visual C#.NET 作为系统应用程序开发工具,以Microsoft Visual Studio.NET 作为集成开发环境,通过 Windows 应用程序设计以及 GDI+进行系统软件开发,实现了数字图像处理的 5个功能:灰度处理、 几何运算 、 数学形态学图像处理、频率变换 、图像平滑。 关键词 数字图像处理技术,点运算, Visual c#, .NET, GDI+浙江海洋学院毕业论文 II Several Digital Image Process
3、ing Algorithms To Achieve Based On VS Abstract At present, most image-processing techniques involve treating the image as a two-dimensional signal and applying standard signal-processing techniques to it. Image processing usually refers to digital image processing. Image processing is signal process
4、ings subclass. In addition its also closely related to the computer science, artificial intelligence and other fields. Since the 1960s, We constant improve the digital image processings theory and method, Already it widely uses in space exploration, remote control, biomedical, industrial and agricul
5、tural production, military, public security, office automation, video and multimedia systems and other fields. And shows a wide application prospect, it has become the computer science, information science, biology, medicine and other discipline researchs hot spot. The design is based on Visual C #
6、point of digital image processing operations to achieve. It uses object-oriented design techniques, digital image processing technology, in Visual C #.Net as a system of the application developer tools, in Microsoft Visual Studio .NET as IDE, Windows application design and GDI + for system software
7、development. Implementation of digital image processing of five functions: Gray-scale processing, Geometric computing, Morphological image processing, Frequency conversion, mage Smoothing. Keywords: digital image processing, Point operations, Visual c #, .NET, GDI + 浙江海洋学院毕业论文 III 目录 摘 要 . I Abstrac
8、t . II 1 引 言 . 1 2 相关技术介绍 . 2 2.1 C#技术简介 . 2 2.2 WinForm . 3 2.3 GDI+ . 3 3 图像处理技术 . 4 3.1 视图 . 4 3.1.1 灰度化 . 4 3.1.2 直方图与线性点 . 4 3.2 几何运算 . 5 3.3 数学形态学图像处理 . 6 3.4 频率变换 . 7 3.5 图像平滑与去噪 . 9 4 系统软件设计 . 11 4.1 需求分析(这就不是需求分析) . 11 4.2 总体设计 . 11 4.3 详细设计 . 18 5 系统测试和评价 . 27 5.1 系统测试 . 27 5.2 系统有待改进的地方 .
9、 28 参 考文献 . 29 浙江海洋学院毕业论文 1 1 引 言 数字图像处理起源于 20 世纪 20 年代,当时通过海底电缆从英国伦敦到美国纽约采用数字压缩技术传输了第一幅数字照片。此后,由于遥感等领域的应用,使得图像处理技术逐步受到关注并得到了相应的发展。第三代计算机问世后,数字图像处理便开始迅速发展并得到普遍应用。由于 CT 的发明、应用及获得了备受科技界瞩目的诺贝尔奖,使得数字图像处理技术大放异彩。目前数字图像处理科学已成为工程学、计算机科学、信息科学、统计学、物理、化学、生物学、医 学甚至社会科学等领域中各学科之间学习和研究的对象。 随着信息高速公路、数字地球概念的提出以及 Int
10、ernet 的广泛应用,数字图像处理技术的需求与日俱增。其中,图像信息以其信息量大、传输速度快、作用距离远等一系列的优点成为人类获取信息的重要来源及利用信息的重要手段。因此,图像处理科学与技术逐步向其他学科领域渗透并为其他学科所利用是必然的。图像处理科学又是一门与国计民生紧密相联的应用科学,它已为人类带来了巨大的经济和社会效益,不久的将来不仅在理论上会有更深入的发展,在应用上亦是科学研究、社会生产乃至人类生活中不 可缺少的强有力工具。它的发展及应用与我国现代化建设的联系之密切、影响之深远是不可估量的。在信息社会中,数字图像处理科学无论是在理论上还是实践上都存在着巨大的潜力。 图像处理是对图像进
11、行分析、加工和处理,使其满足视觉、心理以及其他要求的技术。目前大多数的图像是以数字形式存储,因而图像处理在多数情况下是指数字图像处理。图像处理时信号处理的子类,另外它与计算机科学、人工智能等领域也有密切的关系。浙江海洋学院毕业论文 2 2 相关技术介绍 2.1 C#技术简介 C#是 Microsoft 在 2007 年 7 月推出 .NET Framework 的第 一版时提供的一种全新语言。C#的快速流行,使之成为 .NET Framework 的 Windows 和 Web 开发人员无无可争议的语言选择他们喜欢 C#的一个原因是其派生于 C/C+的简洁语法,这种语法简化了以前困扰一些程序员
12、的问题。 C#是微软公司发布的一种面向对象的、运行于 .NET Framework 之上的高级程序设计语言。并定于在微软职业开发者论坛 (PDC)上登台亮相。 C#是微软公司研究员 Anders Hejlsberg的最新成果。 C#看起来与 Java 有着惊人的相似;它包括了诸如单一继承、接口、与 Java几乎同 样的语法和编译成中间代码再运行的过程。但是 C#与 Java 有着明显的不同,它借鉴了 Delphi 的一个特点 ,与 COM(组件对象模型 )是直接集成的,而且它是微软公司 .NET windows 网络框架的主角。 C#是一种安全的、稳定的、简单的、优雅的,由 C 和 C+衍生出
13、来的面向对象的编程语言。 编写同样一段代码, C#与 C+相比不仅开发周期短、代码量小,而且可读性好。 它在继承 C 和 C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏和模版,不允许多重继承)。 C#综合了 VB 简单的可视化操作和 C+的高运行效率,以其强大 的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为 .NET 开发的首选语言 。 C#包括以下一些特性: 1 1. 完全支持类和面向对象编程,包括接口和继承、虚函数和运算重载符。 2. 定义完整、一致的基本类型集 3. 对自动生成 XML 文档说明的内置支持。 4. 自动清理动态分配的内存。 5. 可以用用
14、户定义的特性来标记类或方法。这可以用于文档说明,对编译有一定的影响。 6. 对 .net 基类库访问内存,并易于访问 Windows API。 7. 可以使用指针直接访问内存,但 C#语言可以在没有它们的条件下访问内存。 8. 以 Visual Basic 的风格支持属性和事件。 9. 改变编译器选项,可以把程序编译为可执行文件或 .NET 组件库,该组件库可以用于ActiveX 控件相同的方式由其他代码调用。 10. C#可以用于编写 ASP.NET 动态 Web 页面和 XML Web 服务。 1 C#高级编程 P6 浙江海洋学院毕业论文 3 2.2 WinForm WinForm 是 .
15、Net 开发平台中对 Windows Form 的一种称谓。 .Net 为开发 WinForm 的应用程序提供了丰富的 Class Library(类库)。这些 WinForm 类库支持 RAD(快速应用程序开发 ),这些类库被封装在一个名称空间之中,这个名称空间就是 System.Windows.Forms。在此名称空间中定义了许多类,在开发基于 .Net 的 GUI 应用程序的时候,就是通过继承和扩展这些类才使得我们的程序有着多样的用户界面。 一个典型的 Windows 窗体应用程序至少应该包含一个窗体。 WinForm 应用程序中通常有一个窗体作为主体,它应该是应用程序生命周期内可能显示
16、的其他窗体的父窗体或所有者,主菜单,工具栏,状态栏等都显示与该窗体内。当主窗体被关闭时,程序应该随即退出。 2.3 GDI+ GDI+是与 .NET Framework 中的图形设备接口进行交互的入口。它是 程序开发人员可以编写出与设备无关的受控应用程序,它的设计目的是要求提供较高的性能、方便的使用以及对多语言的支持。如果要编写与监视器、打印机或文件等图形设备进行交互的 .NET 应用程序,那么就必须使用到 GDI+。 GDI+使得应用程序开发人员在输出到屏幕和打印机信息的时候,不需要考虑具体设备的细节,他们只需要调用 FDI+库输出的类的一些方法就可以完成图形操作,正在的绘图工作由这些方法交
17、给特定的设备驱动程序来完成, GDI+使得图形硬件和应用程序相互隔离,从而使开发人员编写与设备无关的应用程序变得非常容易。 GDI+提供了一个抽象层,隐藏了不同视频卡之间的区别,这样就可以调用 Windows API函数完成指定的任务了, GDI 会在内部支出在运行特定的代码时,如何让客户机的视频卡完成要绘制的图像。 GDI+在 GDI 的基础上提供了明显地改进。最主要的特点是在 GDI+中,没有句柄或者设备上下文的概念,它被 Graphics 对象取代。 Graphics 类提供了绘制不同图形对象的方法和属性,而且更容易使用。 浙江海洋学院毕业论文 4 3 图像处理技术 图像的颜色是由 3
18、种基本颜色(红( R),绿( G),蓝( B)有机组合而成,称为三基色。每种基色的色素可 以取到 0-255,因此由 3 基色可组合成( 256*256*256) 1677 万种颜色,每种颜色都对应着一种 R.G.B 值。例如常见的 7 种颜色对应的 R.G.B 值如图 3-1 所示。 对于一幅彩色图像的各像素值进行变换并依变换后的新像素值重新显示,则可以实现不同的显示效果。 图 3-1 常见的 7种颜色对应的 RGB 值 3.1 视图 3.1.1 灰度化 为加快处理速度,在灰度处理算法,往往需要把彩色图像转换为灰度图像。当 R.G.B分量值不同时表现为彩色图像;当 R.G.B 分量值相同时,
19、表现为灰度图像,该值就是系统所求的。 一般 的灰度转换有 3 种公式,分别是像素提取法,内存法和指针法。 它们所对应的公式分别是: Gray( i,j) =R(i,j)+G(i,j)+B(i,j)/3 (3.1) Gray( i,j) =0.299*R(i,j)+0.587*G(i,j)+0.0114*B(i,j) (3.2) Gray( i,j) =G(i,j) (3.3) 其中最常用的是 3.2 这个公式。 3.1.2 直方图与线性点 直方图是 以图形化参数来显示图片曝光精确度的手段,其描述的是图片显示范围内影像的灰度分布曲线。它可以帮助分析图片的曝光水平等一些信息。直方图的左边显示了图像
20、的浙江海洋学院毕业论文 5 阴影信息,直方图的中间显示了图像的中间色调信息,直方图的右边显示了图像的高亮信息。 直方图的横轴从左到右 是 代表照片从黑(暗部)到白(亮度)的像素数量,其左边最暗处的 Level 值为 0,而右边 最亮处的 Level 值为 255。直方图的垂直轴方向代表了在给定的Level 值下的像素的数目。 在数字图像处理当中,点运算时一种简单而重要的技术。 点运算时值根据对应像素的输入灰 度值来决定该像素输出的灰度值的图像处理运算。点运算也有时被称为对比度增强、对比度拉伸或者灰度变换。点运算没有改变图像内的空间关系,它是按照一定的方式改变图像的灰度直方图。 灰度直方图是一种
21、最简单且最有用的工具,它概括了一幅图像的灰度级内容。 灰度直方图是灰度的函数,描述的是图像中具有该灰度级的像素个数。如果用直角坐标系来表示,则它的横坐标是灰度级,纵坐标是该灰度级出现的概率(像素的个数)。 其分布函数为: h(k)=nk 其中的 k 是指第 K 个灰度级, nk 是灰度级为 rk 的像素总和。 线性点运算是输出灰度级与输入 灰度级呈线性关系的点运算。在这种情况下,灰度变换函数为: g(x,y)=pf(x,y)+L 3.2 几何运算 图像的几何运算是与点运算相互对立的。它改变了像素之间的空间位置和空间关系,但它没有改变灰度等级值。几何运算需要两个独立的算法:空间变换和灰度值插值。
22、在该系统中,应用了空间变换算法对图像进行平移、镜像处理,应用空间变换和灰度值插值算法对图像进行缩放和旋转处理。 在该系统中,是以图像的几何中心为坐标原点, x 轴由左向右递增, y 轴由上至下递增。 图像平移是指使图像沿水平方向和垂直方向移动。 具体的算法为: X =x+x0 y =y+y0 在该算法中我们使用到的是整数。 图像镜像分为水平镜像和垂直镜像。水平镜像就是将图像的左半部分和右半部分以图像的垂直中轴线为中心镜像进行对换;垂直镜像就是将图像的上半部分和下半部分以图像水平中轴线为中心镜像进行对换。 图像的缩小和放大的定义为:将图像中的某点( x, y)经缩小放大后其位置变为( x ,y
23、) ,则两者的关系式: 浙江海洋学院毕业论文 6 X =ax y =by 其需要用到的是灰度插值法,它包括最近邻插值和双线性插值。 最近邻插值也叫做零阶插值,其做法是令输出像素的灰度值等于离他所映射到的位 置最近的输入像素的灰度值。该方法很简单,但是会带来齿形的边,图像中也会出现孔洞和重叠。 双线性插值也称作是一阶插值,该方法是求到相邻的 4 个方格上点的距离之比,用这个比率和 4 个邻点像素的灰度值进行灰度插值。所运用的算法公式如下: f(i+p,j+p)=(1-p)(1-q)f(i,j)+(1-p)qf(i,j+1)+p(1-q)f(i+1,j)+pqf(i+1,j+1) 双线性插值法计算
24、量虽然大,但是缩放和的质量较高,不会出现像素值不连续的情况。 图像旋转:如果平面中所有的点绕原点逆时针旋转,则它的变化公式 是: x =xcos +ysin y =-xsin +ycos 其中, (x,y)为原坐标, (x ,y )为旋转后所得坐标。它的逆变换公式为: x=x cos -y sin y=x sin +y cos 由于双线性插值法比最近邻插值好,因此我在该系统中所用到的就是双线性插值这种方法对图像进行旋转处理。 该程序在运行图像旋转时可能引入点噪声,使其图像中出现一些小白点和小黑点。 3.3 数学形态学图像处理 数学形态学是建立在数学理论基础上的学科,它已经构成了一种新型的图像处理方法和理论,并且成为计算机数字 图像处理的一个主要的研究领域了。其基本思想是利用一个称作结构元素的“探针”收集图像的信息。当探针在图像中移动式,便可考虑图像各部分间相互关系,从而了解图像的结构特征。结构元素是最重要,最基本达到概念,它在形态变换中的作用相当于信号处理中的“滤波窗口”。我在该系统中用到的有水平单列、垂直单列、十字形以及方形,如图 3-2 所示: ( a) ( b) ( c) ( d) 图 3-2 元素结构