基于Java的图形图像处理软件的设计与实现.docx
- 文档编号:26206338
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:28
- 大小:235.58KB
基于Java的图形图像处理软件的设计与实现.docx
《基于Java的图形图像处理软件的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Java的图形图像处理软件的设计与实现.docx(28页珍藏版)》请在冰豆网上搜索。
基于Java的图形图像处理软件的设计与实现
目录
引言7
第一章绪论8
1.1.1计算机图形图像学的发展简史8
1.1.2现有图形图像处理软件8
1.2课题研究的目的及意义9
第二章图形图像处理软件开发技术基础10
2.1JavaSwing简介10
2.1.1Swing的特性10
2.1.2Swing程序包和类11
2.2MVC体系结构12
2.2.1模型12
2.2.2视图12
2.2.3控制器13
第三章图形图像软件的设计14
3.1图形处理模块的设计14
3.1.1结构设计14
3.1.2功能描述14
3.1.3图形处理模块结构图14
3.1.4主要类设计15
3.2图像处理模块的设计16
3.2.1结构设计16
3.2.3结构图17
4.1绘图功能的详细设计与实现19
4.1.1菜单栏19
4.1.2工具栏20
4.1.3画图区22
4.1.4状态栏22
4.2图像编辑的详细设计与实现23
4.3滤镜处理的详细设计与实现25
4.3.1图像增强25
4.3.2图像边缘检测27
4.3.3图像平滑处理28
4.3.4系统测试29
结论32
致谢33
图形图像处理软件的设计与实现
摘要:
随着计算机技术的迅速发展,图形图图像技术在各个领域的研究和应用日益深入和广泛。
由于图形图像各种算法的实现,使得其处理速度越来越快,能更好的为人们服务。
图形图像处理的信息量很大,对处理速度的要求也比较高。
Java强大的运算和图像展示功能,使图像处理变得更加的简单和直观。
同时系统所有的操作设计得十分简单方便,无需具备有专业的知识,也能实现图像图像处理。
Java是一种完全面向对象的语言,Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。
本文基于Java的图形图像处理环境,设计并实现了以图形图像处理系统,展示如何通过利用Java实现对图形图像的各种处理。
关键词:
Java绘图板图形图像编辑滤镜处理边缘处理
Imageprocessingsoftwaredesignandimplementation
Abstract:
Withtherapiddevelopmentofcomputertechnology,graphicchartofimagetechnologyinvariousfieldsofresearchandapplicationdeeplyandwidelyincreasingly.Duetotheimageoftherealizationofthealgorithm,sothattheprocessingfaster,thebetterforthepeopleservice.Imageprocessingofinformationisverybig,therequirementsofprocessingspeedishigh.Javapowerfuloperationandimagedisplayfunction,maketheimageprocessingbecomemoresimpleandintuitive.Andthesystemalloperatingverysimpledesign,neednothavetheprofessionalknowledge,alsocanrealizeimageandimageprocessing.
Javaisafullyobject-orientedlanguage,thedesignoftheJavalanguagefocusonobjectsandinterface,itprovidessimpleclassmechanismaswellasthedynamicmodeloftheinterface.Thispaper,basedontheJavagraphicsimageprocessingenvironment,thedesignandrealizedbygraphicalimageprocessingsystem,andshowshowtouseJavatoachievethroughgraphicimageofprocessing.
Keywords:
Java;Drawingboard;Graphicimageediting;Filterprocessing;Edgeprocessing
引言
随着图形图像处理技术的发展,从七十年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,图形图像处理向更高、更深层次发展。
图形图像是用各种观测系统以不同形式和手段观测客观世界而获得的,可以直接或间接作用于人眼并进而产生视知觉的实体。
其最广义的观点是指视觉信息。
例如照片、图画、电视画面以及光学成像等。
人类的大部分信息都是从图像中获得的。
目前国内外市场依然是以Adobe公司的Photoshop为主流的图形图像处理软件,软件拥有强大的处理能力,丰富的工具库,代表着计算机图形图像处理领域的最高技术标准。
进入21世纪,随着计算机技术的迅猛发展和相关理论的不断完善,数字图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,如航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等领域。
图形图像处理技术已成为一门引人注目、前景远大的新型学科。
本文是基于Java图形图像处理软件,Java编程语言是一种跨平台的编程语言,在编写图形用户界面方面,也要支持跨平台功能。
为此Java提供了强大而丰富的AWT包和Swing包,使得Java功能越来越强大,界面越来越美观。
Java图形图像用户界面的编写普遍采用构件化思想来进行,AWT和Swing本身提供的也是许多标准的构件和容器。
本软件将所学的理论知识与实际应用相结合,运用Java编程语言,实现绘图功能、图形图像的常规编辑功能、滤镜处理功能、边缘处理功能,以达到进一步提高程序开发能力的目的。
第一章绪论
图形图像信息是人类获得外界信息的主要来源,因为大约有70%的信息是通过人眼获得的,而人眼获得的都是图形图像信息。
在近代科学研究、军事技术、工农业生产、医学、气象及天文学领域中,人们越来越多地利用图形图像信息来认识和判断事物,解决实际问题。
本设计能实现基本的绘画功能以及图形图像的基本编辑。
1.1课题背景
1.1.1计算机图形图像学的发展简史
麻省理工学院(MIT)旋风I号(Whirlwind)计算机的附件诞生了。
该显示器用一个类似于示波器的阴极射线管(CRT)来现实一些简单的图形。
1958年美国Calcomp公司由联机的数字记录仪发展成滚筒式绘图仪,GerBer公司把数控机床发展成为平板式绘图仪。
在整个50年代,只有电子管计算机,用机器语言编程,主要用于科学计算,为这些计算机配置的图形设备仅具有输出功能。
计算机图形学处于准备和酝酿时期,并称之为:
“被动式”图形学。
到50年代末期,MIT的林肯实验室在“旋风”计算机上看法SAGE空中防御体系,第一次使用具有指挥和控制功能的CRT显示器,操作者可以用笔在屏幕上指出被确定的目标。
1974年,在Colorado大学召开了第一届SIGGRAPH年会,并取得巨大的成功,当时大约有600位来自世界各地的专家参加会议。
到1997年,参加会议的人数已经增加到48,700。
因为每年只录取大约50篇论文,在ComputerGraphics杂志上发表,因此论文的学术水平较高,基本上代表图形图像学的主流方向。
1.1.2现有图形图像处理软件
随着对图形图像处理需求的扩大,现有的图形图像处理软件多种多样,数不胜数。
本文简单介绍两个比较有代表性的图形图像处理软件:
Photoshop
Photoshop是平面图形图像处理业界霸主Adobe公司推出的跨越PC和MAC两界首屈一指的大型图形图像处理软件。
它功能强大,操作界面友好,得到广大第三方开发厂家的支持,从而也赢得众多用户的青睐。
Photoshop是目前公认的最好的通用平面美术设计软件,它的功能完善,性能稳定,使用方便,所以在几乎所有的广告、出版、软件公司,Photoshop都是首选的平面工具。
通过Photoshop可以对图形图像修饰、对图形图像进行编辑,以及对图形图像的色彩处理,另外,还有绘图和输出功能。
在实际生活和工作中,可以将数码相机拍摄下来的照片进行编辑和修饰,也可以将现有的图形图像和照片,用扫描仪扫如计算机进行加工处理,还可以把摄像机摄入的内容转移到计算机上,然后用它实现对影像的润色。
总之,Photoshop可以使你的图形图像产生特技效果,如果和其它工具软件配合使用,还可以进行高质量的广告设计、美术创意和三维动画制作。
由于Photoshop功能强大,目前正在被越来越多的图形图像编排领域、广告和形象设计领域以及婚纱影楼等领域广泛使用,是一个非常受欢迎的应用软件。
1.2课题研究的目的及意义
随着科学技术的不断发展,计算机的更新速度不断提高,人们的思想文化素质的提高,对图形图像的要求也越来越高。
因此把原始图形图像与计算机结合起来,从而创作出许多更加完美的图像,满足人们的需求,计算机图形图像处理,是指利用计算机对图像图像进行一系列加工,以便获得人们所需要的效果。
图形图像是人们获取和交换信息的主要来源,人类感知外界信息,80%以上是通过视觉得到的。
因此,图形图像处理的应用领域必然涉及到人类生活和工作的方方面面。
图形图像是用各种观测系统以不同形式和手段观测客观世界而产生视知觉的实体。
比如人的视觉就是以观测系统,通过它得到的图形图像就是客观景物在人心目中形成的影像。
视觉是人类观察世界、认知世界的重要功能手段。
图形图像带有大量的信息,百闻不如一见,一图值千金都说明这个事实。
为此开发这个图形图像处理软件,能过处理一些图形图像,并对图形图像处理技术此方面进行深入的研究。
第二章图形图像处理软件开发技术基础
2.1JavaSwing简介
浏览Java的主页(http:
//java.sun.con/)时,可以找到对Swing的说明,他被描述成一组可定制的图形组件,可以在运行时指定这些组件的外观风格。
不过,Swing实际上不只这些,它允许使用Java语言进行企业级开发。
程序员可以使用Swing建立包含许多功能强大的组件的大型Java应用程序,并且可以更容易地扩充或者修改这些组件以控制它们的外观和行为。
那么,为了能较好地发挥Swing的优势来为自己的Java应用程序增色,首先就要对Swing有一个总体的认识。
2.1.1Swing的特性
Swing的特性有以下三个方面:
一、可插拔外观风格
Swing类最让人激动的一个方面是能够规定每个组件的外观风格,甚至可以在运行时重新设置外观风格。
这种特性叫做“可插拔外观风格”(PluggableLook-and-Feel,或简称PLAF)。
Swing能够模拟集中外观风格,并且它目前支持Window、UnixMotif和“本地”JavaMetal外观风格。
此外,Swing允许用户在运行时转换外观风格,而不必关闭应用程序。
这样,用户甚至可以为每一个Swing组件建立自己的外观风格。
二、轻型组件
绝大多数Swing组件都是轻型的。
在最完美的情况下,这意味着这些组件并不依赖本地对等组件来绘制自己。
相反,它们使用简化的图形基本元素在屏幕上描绘自己,甚至允许部分图像是透明的。
只是少数顶层容器不是轻型的(如Jframe和JWindow)。
这个设计允许程序设计人员在运行时绘制(和重新绘制)自己的应用程序的外观风格,而不是对主机操作系统的外观风格进行这样的尝试。
此外,Swing组件的设计支持对组件行为随意修改。
例如,可以告诉几乎所有的Swing组件用户是希望接受输入焦点还是希望拒绝输入焦点,可以告诉它应该如何处理键盘输入。
三、如何使用Swing
不是人人都为了同一个原因而使用Swing。
实际上,因为有着各种级别的必须预先具备的知识,所以Swing库有许多使用级别。
以下是一些可能的用途:
1.在打算建立自己的企业级应用程序时使用Swing组件。
第一种方法是大多数Swing组件所使用的方法。
在这时,使用Swing组件类似于使用AWT组件。
常见的组件、容器和布局管理器都可以从Swing程序包中获得,它们有助于建立并快速运行应用程序。
如果擅长使用AWT组件进行编程,只需要浏览对每个组件的粗略介绍,就可以开始使用了。
只有在使用一些更大并且更新的组件(如表和文本),或者打算将每个组件用作JavaBean进行可视编程时,才必须考虑更多的问题。
2.建立自定义Swing组件—或者扩展已经存在的组件。
建立自定义组件或者扩展现有的组件需要更深入的了解Swing。
这是一定要了解Swing体系结构、事件和较低级别的类。
此外,如果决定细分Swing组件,则必须承担处理这个组件的责任,否则,新组建的执行情况就可能是不定的。
3.为一个或者多个Swing组件覆盖或者建立一个新的外观风格。
最后,用户可能希望更改一个或者多个Swing组件的外观风格。
这是可以使用的3种方法中最复杂的一种方法,它要求全面了解每个组件的设计,体系结构基本原理和图形基本元素。
此外,用户必须了解如何使用Swing的UIManager和UIDefaults类来“设置”每个组件的外观风格。
2.1.2Swing程序包和类
Swing库中的程序包很多,只在此大致介绍在后面的图像浏览器的实现中用到的程序包。
其中用得最多的当然是javax.swing,另外有javax.swing.border、javax.swing.event、javax.swing.tree、javax.swing.filechooser。
以下给出了这些程序包的简短描述。
Swing包是JFC(JavaFoundationClasses)的一部分,由许多包组成,如表2.1。
包
描述
Com.sum.swing.plaf.motif
用户界面代表类,它们实现Motif界面样式
Com.sum.java.swing.plaf.windows
用户界面代表类,它们实现Windows界面样式
Javax.swing
Swing组件和使用工具
Javax.swing.border
Swing轻量组件的边框
Javax.swing.colorchooser
JcolorChooser的支持类/接口
Javax.swing.event
事件和侦听器类
Javax.swing.filechooser
JFileChooser的支持类/接口
Javax.swing.pending
未完全实现的Swing组件
Javax.swing.plaf
抽象类,定义UI代表的行为
Javax.swing.plaf.basic
实现所有标准界面样式公共功能的基类
Javax.swing.plaf.metal
用户界面代表类,它们实现Metal界面样式
Javax.swing.table
Jtable组件
Javax.swing.text
支持文档的显示和编辑
Javax.swing.text.html
支持显示和编辑HTML文档
Javax.swing.text.html.parser
Html文档的分析器
Javax.swing.text.rtf
支持显示和编辑RTF文件
Javax.swing.tree
Jtree组件的支持类
Javax.swing.undo
支持取消操作
表2.1Swing包
2.2MVC体系结构
Swing使用模型—视图—控制器体系结构(MVC)作为它的每个组件的基本设计。
实质上,MVC将GUI组件拆分成三个元素,每个元素都对组件的表现起着至关重要的作用。
2.2.1模型
模型包括每个组件的状态数据。
不同类型的组件有不同的模型。
例如,滚动条组件的模型可能包含有关可调整“滑尺”当前位置、最大值、最小值和滑尺宽度(与值的范围有关)的信息。
另一方面,菜单可能只包含一个用户用来从中进行选择的菜单项列表。
不论组件在屏幕上是如何被描绘的,这些信息总是相同的,模型数据总是独立于组件的可视表示。
2.2.2视图
视图是指组件在屏幕上的表现形式。
可以参见两个不同GUI平台上一个应用程序窗口,这是现实视图如何不同的一个好例子。
又如,几乎所有窗口框架都
有一个位于窗口顶端的标题栏。
不过,标题栏的左边可能有一个关闭框(类似于MacOS平台),或者可能在标题栏的右边有一个关闭框(与Windows平台中的类似)。
2.2.3控制器
控制器使用户界面的一部分,它指示组件如何与事件进行交互。
事件的形式有很多种,例如,鼠标单击、获得或失去焦点、触发特定菜单命令的键盘事件,甚至是重新绘制某一部分屏幕的指示。
控制器决定了每个组件如何对事件做出反应。
Swing通常使用一个叫做模型代理(modek-delegate)的MVC设计的简化变体。
这个设计将视图和控制器对象合并到一个元素中,即UI代理,该元素将组件绘制到屏幕上,并处理GUI事件。
模型负责维护有关组件状态的信息。
使用Java语言捆绑图形功能和事件处理会容易一些,因为许多事件处理是使用AWT的。
模型与UI代理之间的通信是双向的。
第三章图形图像软件的设计
软件需求分析是设计优良的重要组成部分,一份好的需求分析说明,可以使程序设计的复杂性降到最低。
需求分析与总体设计是软件具体实现前的必要环节,具体介绍如下。
3.1图形处理模块的设计
3.1.1结构设计
(1)菜单栏的设计
(2)画图区的设计
(3)工具栏的设计
(4)其他功能设计
3.1.2功能描述
该模块主要有菜单栏、工具栏、画图区组成,菜单栏具有新建、打开、保存等常见的功能;工具栏可以选择用户需要的图形样式、设置参数、插入文本等操作;画图区就是简单绘图区域,用户在画图区可自由绘制图形。
右击工具栏可设置工具是否可拖动。
还可以根据不同的需要设置背景色,画笔大小、画笔颜色。
能够在任意点添加文字并设置文字样式和字体。
3.1.3图形处理模块结构图
图3.1图形绘制模块
3.2图像处理模块的设计
3.2.1结构设计
(1)菜单栏的设计及功能实现:
菜单栏主要包括文件、图像增强、图像分割、图像变换、前进后退、图像缩放。
(2)图像处理区的设计:
将整个界面分为两个部分,左边部分是打开的原图像,右边部分显示的是处理后的图像。
3.2.2功能描述
(1)文件:
此功能主要实现图像的文件操作,包括打开一个图像、清空图像、对图像进行保存、退出软件。
(2)图像增强:
此功能主要实现对图像进行加强边缘、锐化、模糊、浮雕、灰度变换处理。
(3)图像分割:
此功能主要实现对图像进行边缘检测处理。
(4)图像变换:
此功能主要实现对图像进行平滑处理。
(5)前进后退:
此功能主要实现图像的上一张、下一张读取。
(6)图像缩放:
此功能主要实现图像的放大缩小功能。
3.2.3结构图
图3.2图像处理模块的业务流程
各个分模块的功能如图3.3-3.5
图3.3图像编辑模块
图3.4滤镜处理模块
图3.5边缘处理模块
第四章软件具体实现
软件系统分析设计完成后,就是开始对系统设计的实施阶段,以便完成系统的性能和功能。
这是一个严格谨慎的过程,必须认真进行。
系统的具体设计实现主要完成各模块之间的具体界面设计问题以及核实系统是否达到实际要求。
4.1绘图功能的详细设计与实现
4.1.1菜单栏
菜单栏包括文件、编辑、设置、帮助四部分。
其中,文件菜单实现了新建、打开、保存、退出功能;编辑菜单实现了撤销和恢复功能;设置菜单实现了画笔颜色、画笔大小和立方体宽度的设置;帮助菜单实现了关于画图板的帮助信息。
在Java中,菜单的构成有三个基本要素:
MenuBar、Menu、MenuItem。
Menu、MenuItem类的继承关系如图4.1所示
图4.1菜单类的继承关系
从图4.1中可以看出,菜单相关的类都继承自MenuComponent,而不是Component,因此它无法像普通组件那样设置前景色、背景色、字体。
构造菜单首先要通过JmenuBar建立一个菜单栏,它是菜单容器。
然后使用Jmenu建立菜单,每个菜单再通过JmenuItem建立菜单项。
菜单的构造方法:
Jmenu():
建立一个新的Jmenu。
Jmenu(Actiona):
建立一个支持Action的新的Jmenu。
Jmenu(Strings):
以指定的字符串名称建立一个新的Jmenu
JmenuJmenu:
以指定的字符串名称建立一个新的Jmenu,并决定这个菜单是否具有下拉属性。
4.1.2工具栏
工具栏是一系列快捷操作的按钮,分别是:
新建、打开、保存、自由画笔、直线、空心矩形、实心矩形、空心椭圆、实心椭圆、圆、实心圆、空心圆角矩形、实心圆角矩形、3D矩形、3D矩形、3D长方体、橡皮、设置背景色、画笔颜色、画笔粗细、添加文字,用来实现相应的功能。
另外还为工具栏设置了按钮图片和鼠标右击事件,右击鼠标可以设置工具栏是否可拖动。
构造工具栏时使用JToolBar创建一个工具栏对象,然后使用add()方法将带图标的按钮加到工具栏中。
JToolBar的构造函数:
JToolBar():
建立一个新的JToolBar,位置为默认的水平方向。
JToolBar(intorientation):
建立一个指定位置的JToolBar。
JToolBar(Stringname):
建立一个指定名称的JToolBar
JToolBar(Stringname,intorientation):
建立一个指定名称和位置的JToolBar。
4.1.3画图区
画图区可以绘制各种图形,可以进行擦除操作,还可以根据实际需要添加文本。
绘图的操作一般在paint()或paintComponent()方法中进行,建立一个JPanel的子类,重写paintComponent()方法,利用该方法的Graphics类型参数的绘图方法进行绘图。
下面介绍一下基本图形的绘制方法:
(1)直线:
绘制直线是通过使用Graphics的drawline方法来实现的,其原型如下:
Voiddrawline(intx1,inty1,intx2,inty2)
这个函数将使用当前颜色,在图形坐标系统中的(x1,y1)至(x2,y2)之间绘制一条直线。
(2)矩形:
常见的矩形有两种:
实体的(solid)、圆角矩形(rounded),这些矩形的绘制是用Graphics的一些方法来完成的,方法如下:
VoiddrawRect(intx,inty,intw,inth)
VoiddrawRoundRect(intx,inty,intw,inth,intarcWidth,intarcHeight)
除了绘制以外,还可以填充矩形,这由以下的Graphics方法来实现:
VoidfillRe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Java 图形图像 处理软件 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)