基于VB的数字图像处理_第1页
基于VB的数字图像处理_第2页
基于VB的数字图像处理_第3页
基于VB的数字图像处理_第4页
基于VB的数字图像处理_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、郑州航空工业管理学院结 课 设 计(论文) 2008 级 电子信息工程 专业 0813083 班级 课 程 数字图像处理 姓 名 陈 军 学号 081308303 指导教师 陈 宇 职称 讲 师 2011 年 11月 2 日基于VB的数字图像处理系统设计081308303 陈军 指导教师:陈宇 讲师VB简介Visual Basic(简称VB)是美国微软公司开放的一种可视化编程工具。它功能强大、简单易学,能够方便快捷地开放Windows应用程序。它主要沿袭了BASIC系列语言的语法,非常简洁。Visual Basic中的“Visual ”,其含义是“可视化的”,指的是开发图形用户界面(GUIGr

2、aphical User Interfaces)的方法。“Basic”指的是BASIC(Beginners All-Purpose Symbol Instruction Code,即初学者通用符号指令代码)语言。Visual Basic与一般的BASIC语言不同,它是可视化的BASIC语言,不必编写大量代码是描述程序界面,而只要把预先建立好的对象拖放到窗口界面中即可。Visual Basic具有以下突出特点:1. 方便的开发环境。Visual Basic提供了完善的可视化编程环境。可以同时打开多个工程,可以建立多文档界面和单文档界面,具有强大的代码编辑器。在代码窗口中可以自动列出控件的属性和方

3、法,可以自动提示函数的语法。2. 事件驱动的程序机制Visual Basic程序运行的基本方法是由“事件”来驱动程序运行的。不使用传统编程中的“主程序”和“子程序”之间细致的连带关系,而是将大规模的程序分为若干个单一的、独立的、小规模的段落程序,分别由各种“事件”来驱动执行,大大降低了程序的编写难度。Visual Basic版本简介:它有三种版本,各自满足不同的开发需要。1.学习版。利用学习版编程人员可以轻松的开发出Windows下的应用程序。它包括所有的内部控件及Grid、Tab和Data_Bound控件。学习版提供的文档有程序员指南、联机帮助、及Visual Basic联机手册。2.专业版

4、。为专业编程人员提供了一整套进行系统开发的功能完备的工具。该版本包括学习版的全部功能同ActiveX控件,还包括Internet控件和Crystal Report Writer。专业版提供的文档有程序员指南、联机帮助、部件工具指南。3.企业版。使得专业编程人员能够开发功能强大的组内分别式应用程序。该版本包括专业版的全部功能连同工程版的控制系统等。企业版提供的文档除包括专业般的所有文档外,还有客户/服务器应用程序开发指南和SourceSafe Users Guide。因为本软件开发的平台为企业版Visual Basic 6.0,而且现在市面上流行的也是企业版Visual Basic6.0,因此这

5、里我们主要介绍Visual Basic 6.0。Visual Basic 6.0是微软公司系列可视化开发工具Visual Studio 6.0中的产品,是创建Windows应用程序最简便、最快捷的开发工具之一。同时Visual Basic 6.0具有强大的图形图像处理功能,并广泛应用于图形设计、图像处理及多媒体技术中。2 软件系统总体分析2.1系统的主体界面由于现在关于图像处理的应用软件很多,优秀的有Adobe公司的Photoshop、Macromedia公司的Fireworks等,它们的版本不断在更新,功能也在不断的提高。本应用软件就参照图像处理软件新视觉的主体界面。整个界面如图2.11所示

6、:图2.1-1系统界面2.2系统的功能该系统的功能主要集中在菜单栏和工具栏中,菜单栏中所体现的都是处理图像的功能。包括以下方面:A .选择图像、打开、保存、关闭和退出等功能。B .过滤图像,包括锐化处理、浮雕处理、镶嵌处理、逆反处理、曝光处理。C .对彩色图像进行变换:包括平滑处理、教材处理、霓红处理、油画处理。 工具栏中的功能主要体现在工具中,正如平时画图工具的工具一样,可以选择一定的区域,放大图像、画圆、画方,输入文字、剪切一定的区域,简单的渐变等。2.3 系统简单操作举两个例子:其一,我们要处理一幅图片,要想得到一个浮雕的效果。那么,首先在文件菜单项中选择打开文件,到指定的目录下选择你需

7、要处理的图片,打开之后,在菜单栏中的过滤选项中选择浮雕,那么软件就执行相应的操作,进行图像处理。处理完后,如果不需要其它操作,就可以在文件菜单项中选择保存项,保存到你指定的目录下。其二,我们要自己建一幅自己的图片。选择菜单栏中文件下的新建,然后在工作区,选择工具条的多种工具,可以画圆,也可以画放方,剪切一定的区域,进行简单的渐变色,输入文字等,然后保存即可。3 图像处理技术3.1基本图像处理技术图像的颜色是由三种基本颜色,即红(R)、绿(G)、蓝(B)有机组合而成的,称为三基色。每种基色可取0到255的值,因此由三基色可组合成(256*256*256)1677万种颜色,每种颜色都有其对应的R、

8、G、B值。对一幅彩色图像的各像素值进行变换并依变换后的新像素值重新显示,则可以实现不同的显示效果3.2过滤技术包括锐化、浮雕、风化、腐蚀。这里介绍两种分别是锐化和浮雕。1.位图图像的锐化处理的算法如下:计算源图像像素f(i,j)的像素值与边缘上相邻像素f(i-1,j-1) 像素值之差的绝对值的百分比之和,然后将该值作为处理后图像像素g(i,j)的像素值。例如:rr=r1+0.25*abs(r1-r2)或者 0.25改为0.5也可gg=g1+0.25*abs(g1-g2)bb=b1+0.25*abs(b1-b2)式中r1,g1,b1分别为f(i,j)的红、绿、蓝分量值, r2,g2,b2分别为f

9、(i-1,j-1)的红、绿、蓝分量值, rr,gg,bb分别为g(i,j)的红、绿、蓝分量值。2. 位图图像的浮雕处理的算法是G(i,j)= f(i,j)- f(i-1,j)+常数式中,G(i,j)为处理后图像的像素值,f(i,j)为源图像的像素值,F(i-1,j)为前一个相邻像素的值。常数一般取128。即rr=r1-r2+128gg=g1-g2+128bb=b1-b2+128式中, r1,g1,b1分别为为源图像的像素f(i,j)的红、绿、蓝分量值;r2,g2,b2分别为前一个相邻像素f(i-1,j)的红、绿、蓝分量值,rr,gg,bb分别为处理后图像的像素G(i,j)的红、绿、蓝分量值。3

10、.3彩色图像变换包括彩色转灰度、彩色转黑白、平滑处理、逆反处理和霓红处理。这里介绍一下彩色转灰度和逆反处理。1.彩色图像生成灰度图像的一般算法如下:Col=Picture1.Point(x,y)r= Col AND &0 xffg=( Col AND &0 xff00)/256b=( Col AND &0 xff0000)/(256*256)rr=gg=bb=(r+g+b)/3其中Col为获取到的像素值f(i,j),r,g,b分别为原像素值f(I,j)的分量值,rr,gg,bb分别为处理后g(i,j)的分量值。2. 位图图像的逆反处理的算法如下:rr=255-r gg=255-gbb=255-

11、b式中,r,g,b分别为源图像像素f(i,j)的红、绿、蓝分量值,rr,gg,bb分别为处理后像素g(i,j)的红、绿、蓝分量值。4 系统软件设计4.1软件设计根据现在社会的需求,要得到不同的图像效果也是理所当然的。在VB中,我们创建一些窗体。包括主窗体frmMain、工作区窗体frmPaint、工具窗体frmTool、调色板窗体frmColorcharge、历史框窗体Hstory、新建窗体frmNew、图像大小frmSize、控制窗体frmControl,其它为一些功能窗体,如对比度增强frmDuibidu,图像合成frmHecheng,FFT分析frmFFT。主窗体frmMain:是整个软

12、件的核心,我们用作VB中唯一的MDI窗体。MDI窗体是用来包容其它窗口的中心窗口。VB规定一个应用程序只能使用一个MDI窗体,因为一个MDI窗体用到了应用程序中的所有组件及功能。因此我们用它来作程序主界面。工作区窗体frmPaint:被作为工作区,用来放置图片,进行图像处理以及其它操作。工具窗体frmTool:放置在左端,有一些常用工具可进行选择使用。调色板窗体frmColorcharge:作为调用系统颜色,选择颜色的用途。历史框窗体Hstory:作为返回工具一样,可以使图片回到前几次处理的状态,不过,次历史框只允许回到前八次操作。控制窗体frmControl:作为工具栏的辅助,在工作区上端显

13、示当前选择的工具。新建窗体frmNew:新建一工作区域。图像大小frmSize:对图像工作区域进行设置。只对新建区域有效。那么我们在这里顺便介绍一下本软件用到的BAS模块文件。DailogAPI、GuiAPI、FFTMod、texiao、Simplepaints、PublicMod、PHMod1、PHMod2。这些模块文件都包含很多函数声明,以及很多算法都包含在其中。这些模块起到一定的声明作用,以及被其它程序调用。DailogAPI包含获取公共对话框API函数,如打开指定文件,保存指定文件等。GuiAPI包含大部分图形设备接口API函数,包括位图函数、剪切函数、颜色函数等,起到非常重要的作用。

14、FFTMod模块包含傅利叶算法、一维FFT模块程序,被frmFFT窗体调用,进行FFT分析。texiao模块包含大部分图像处理技术的算法。被主窗体中菜单栏功能项中选择,进行图像处理。Simplepaints模块是对工具栏中的算法进行总和,工具栏中的选择项中的功能都在此模块中体现出来。PublicMod、PHMod1、PHMod2都算是公共的模块调用程序,包含公共的函数声明、公共变量和公共调用程序。以上就是我们所设计的窗体和模块集。该系统的功能主要集中在菜单栏和工具栏中,菜单栏包括以下方面选项:1. 文件:包括新建、打开、保存、关闭和退出几项。2. 编辑:包括复制、粘贴、剪切、全选、取消选择和翻

15、转。其中翻转包括水平翻转和垂直翻转。3. 过滤:包括锐化、浮雕、腐蚀、风化。4. 滤波处理:包括最小值滤波处理、最大值滤波处理和中值处理。5. 彩色图像变换:包括彩色转灰度、彩色转黑白、平滑处理、霓红处理。6. 软化硬化:包括软化红色、软化绿色、软化橙色,硬化红色、硬化绿色、硬化蓝色。7. 卷积处理:包括水平增强、垂直增强和双向增强。8. 边缘探测:包括右下边缘抽出、拉普拉斯(8邻域)。9. 其它:包括对比度增强、FFT分析和图像合成。10. 工具窗口:包括调色板、历史框和工具栏。5 系统总体设计详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统。也就是设计出程序的“蓝图”,在接下来的

16、编码阶段里,这些描述将被直接翻译成程序设计所使用的语言。也就是说,详细设计的结果决定了最终的程序代码的质量。5.1打开图像图5.1-1源程序如下:Private Sub huoqutuxiang_Click()On Error GoTo ErrCommonDialog1.Filter = (*.*)|*.*|(*.gif)|*.gif|(*.bmp)|*.bmp|(*.jpg)|*.jpgCommonDialog1.ShowOpenPicture1.Picture = LoadPicture(CommonDialog1.FileName)Picture3.Picture = Picture1.

17、PicturePicture4.Picture = Picture1.PictureExit SubErr:Exit SubEnd Sub5.2 逆反处理图5.2-1源程序代码如下:Private Sub Command4_Click()Label3.Enabled = TrueLabel3.Caption = 正在处理中.Width1 = Picture1.ScaleWidthheight1 = Picture1.ScaleHeightDoEventsFor i = 0 To Width1 - 1For j = 0 To height1 - 1col = Picture1.Point(i,

18、j)r1 = col Mod 256g1 = col 256 Mod 256b1 = col 65536rr = 255 - r1gg = 255 - g1bb = 255 - b1Picture2.PSet (i, j), RGB(rr, gg, bb)Label3.Caption = 处理结果Next jNext iEnd SubPrivate Sub Command5_Click()Picture1.Picture = Picture2.ImageCommand6.Enabled = TrueCommand7.Enabled = TrueEnd SubPrivate Sub Comman

19、d6_Click()CommonDialog1.Filter = pictures(*.bmp)|*.bmp|pictures(*.jpg)|*.jpg|pictures(*.gif)|*.gifCommonDialog1.ShowSaveSavePicture Picture1.Picture, CommonDialog1.FileNameEnd SubPrivate Sub Command7_Click()Picture1.Picture = Picture3.PictureEnd Sub5.3 平滑处理图5.3-1源程序代码如下:Private Sub Command8_Click()L

20、abel3.Caption = 正在处理中.DoEventswidth2 = Picture1.ScaleWidthheight2 = Picture1.ScaleHeightFor i = 1 To width2 - 2For j = 1 To height2 - 2p1 = Picture1.Point(i - 1, j - 1)p2 = Picture1.Point(i, j - 1)p3 = Picture1.Point(i + 1, j - 1)P4 = Picture1.Point(i - 1, j)P5 = Picture1.Point(i, j)P6 = Picture1.Po

21、int(i + 1, j)P7 = Picture1.Point(i - 1, j + 1)P8 = Picture1.Point(i, j + 1)P9 = Picture1.Point(i + 1, j + 1)Red = (p1 Mod 256 + p2 Mod 256 + p3 Mod 256 + P4 Mod 256 + P5 Mod 256 + P6 Mod 256 + P7 Mod 256 + P8 Mod 256 + P9 Mod 256) / 9Green = (p1 256 Mod 256 + p2 256 Mod 256 + p3 256 Mod 256 + P4 256

22、 Mod 256 + P5 256 Mod 256 + P6 256 Mod 256 + P7 256 Mod 256 + P8 256 Mod 256 + P9 256 Mod 256) / 9Blue = (p1 65536 + p2 65536 + p3 65536 + P4 65536 + P5 65536 + P6 65536 + P7 65536 + P8 65536 + P9 65536) / 9Picture2.PSet (i, j), RGB(Red, Green, Blue)Next jNext iLabel3.Caption = 处理结果图End Sub5.4 教材平滑图

23、5.4-1源程序代码如下:Private Sub Command9_Click()Label3.Caption = 正在处理中.DoEventswidth2 = Picture1.ScaleWidthheight2 = Picture1.ScaleHeightn = Val(Text1.Text): n1 = n * n: n2 = n 2For i = n2 To width2 - n2 - 1For j = n2 To height2 - n2 - 1rr = 0: gg = 0: bb = 0For k1 = -n2 To n2For k2 = -n2 To n2p = Picture1

24、.Point(i + k1, j + k2)rr = rr + (p Mod 256)gg = gg + (p 256 Mod 256)bb = bb + (p 65536)Next k2Next k1rr = rr / n1: gg = gg / n1: bb = bb / n1Picture2.PSet (i, j), RGB(rr, gg, bb)Next jNext iLabel3.Caption = 结果图:End SubPrivate Sub Form_Load()Command2.Enabled = FalseCommand6.Enabled = FalseCommand7.En

25、abled = FalseLabel3.Enabled = FalseEnd Sub5.5 霓虹平滑图5.5-1源程序代码如下:Private Sub Command10_Click()Label3.Caption = 正在处理中.DoEventswidth2 = Picture1.ScaleWidthheight2 = Picture1.ScaleHeightFor i = 0 To width2 - 1For j = 0 To height2 - 1p1 = Picture1.Point(i, j)p2 = Picture1.Point(i + 1, j)p3 = Picture1.Poi

26、nt(i, j + 1)rr = Sqr(p1 Mod 256 - p2 Mod 256) 2 + (p1 Mod 256 - p3 Mod 256) 2)gg = Sqr(p1 256 Mod 256 - p2 256 Mod 256) 2 + (p1 256 Mod 256 - p3 256 Mod 256) 2)bb = Sqr(p1 65536 - p2 65536) 2 + (p1 65536 - p3 65536) 2)Picture2.PSet (i, j), RGB(rr, gg, bb)Next jNext iLabel3.Caption = 结果图:End Sub5.6 油

27、画处理图5.6-1源程序代码如下:Private Sub Command15_Click() Picture2.Picture = Picture1.Picture Label3.Caption = 处理中. DoEvents width2 = Picture2.ScaleWidth height2 = Picture2.ScaleHeight n = Val(Text2.Text) n1 = n * n n2 = n 2 For i = n2 To width2 - n2 - 1 For j = 2 To height2 - n2 - 1 A = Rnd * (n - 1) - n2 B =

28、 Rnd * (n - 1) - n2 p = Picture2.Point(i + A, j + B) Red = p Mod 256 Green = p / 256 Mod 256 Blue = p / 65536 Picture2.PSet (i, j), RGB(Red, Green, Blue) 重新设定该点的像素 Next j Next iEnd SubPrivate Sub Command2_Click()Picture1.Picture = LoadPicture(CommonDialog1.FileName)Picture2.Picture = Picture1.Pictur

29、ePicture3.Picture = Picture1.PictureEnd SubPrivate Sub Command3_Click()End5.7 边缘锐化图5.7-1源程序代码如下:Private Sub Command11_Click()Label3.Caption = 正在处理中.DoEventswidth2 = Picture1.ScaleWidthheight2 = Picture1.ScaleHeightFor i = 1 To width2 - 1For j = 1 To height2 - 1p1 = Picture1.Point(i, j)p2 = Picture1.

30、Point(i - 1, j - 1)rr = p1 Mod 256 + Abs(p1 Mod 256 - p2 Mod 256) / 2gg = p1 256 Mod 256 + Abs(p1 256 Mod 256 - p2 256 Mod 256) / 2bb = p1 65536 + Abs(p1 65536 - p2 65536) / 2If rr 255 Then rr = 255: If rr 255 Then gg = 255: If gg 255 Then bb = 255: If bb 0 Then bb = 0Picture2.PSet (i, j), RGB(rr, g

31、g, bb)Next jNext iLabel3.Caption = 结果图:End Sub5.8 浮雕处理图5.8-1源程序代码如下:Private Sub Command12_Click()Label3.Caption = 正在处理中.DoEventswidth2 = Picture1.ScaleWidthheight2 = Picture1.ScaleHeightFor i = 0 To width2 - 1For j = 0 To height2 - 1p1 = Picture1.Point(i, j)p2 = Picture1.Point(i - 1, j)rr = Abs(p1 M

32、od 256 - p2 Mod 256 + 128)gg = Abs(p1 256 Mod 256 - p2 256 Mod 256 + 128)bb = Abs(p1 65536 - p1 65536 + 128)Picture2.PSet (i, j), RGB(rr, gg, bb)Next jNext iLabel3.Caption = 结果图:End Sub5.9 镶嵌处理 图5.9-1源程序代码如下:Private Sub Command13_Click()Label3.Caption = 正在处理中.DoEventsn = Val(Text2.Text): n1 = n * nw

33、idth2 = Picture1.ScaleWidthheight2 = Picture1.ScaleHeightFor i = 0 To width2 - n Step nFor j = 0 To height2 - n Step nr = 0: g = 0: B = 0For k1 = 0 To n - 1For k2 = 0 To n - 1p = Picture1.Point(i + k1, j + k2)r = r + (p Mod 256)g = g + (p 256 Mod 256)B = B + (p 65536)Next k2Next k1r = r 25: g = g 25: B = B 25For k1 = 0 To n - 1For k2 = 0 To n - 1Picture2.PSet (i + k1, j + k2), RGB(r, g, B)Next k2Ne

温馨提示

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

评论

0/150

提交评论