基于JAVA平台的图像处理软件的设计与实现_第1页
基于JAVA平台的图像处理软件的设计与实现_第2页
基于JAVA平台的图像处理软件的设计与实现_第3页
基于JAVA平台的图像处理软件的设计与实现_第4页
基于JAVA平台的图像处理软件的设计与实现_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、基于JAVA平台的图像处理软件设计与实现摘要:随着计算机技术的飞速发展,数字图像处理技术在各个领域的研究和应用日益深入和广泛。 Java 是 Sun 推出的一种面向对象的编程语言。 Java 非常适用于企业网络和 Internet 环境,已成为 Internet 上最流行和最有影响力的编程语言之一。目前国内使用Java语言开发的图像处理系统还很少,这也增加了该领域的研究价值。本论文首先介绍了Java中处理图形图像的算法,并设计了Java GUI(Graphical User Interface)来显示图像处理的结果。关键词: Java Graphics2D,图形图像, Java GUI ,多媒

2、体,数字图像 TOC o 1-3 h z u HYPERLINK l _Toc262117178 1.简介 PAGEREF _Toc262117178 h 4 HYPERLINK l _Toc262117180 (1) 主题来源 PAGEREF _Toc262117180 h 5 HYPERLINK l _Toc262117181 (2)项目的目的和意义 PAGEREF _Toc262117181 h 5 HYPERLINK l _Toc262117182 (3) 本软件的特点 PAGEREF _Toc262117182 h 5 HYPERLINK l _Toc262117183 JAVA语言

3、发展概况 PAGEREF _Toc262117183 h 5 HYPERLINK l _Toc262117184 1. JAVA语言的诞生 PAGEREF _Toc262117184 h 5 HYPERLINK l _Toc262117185 JAVA语言 PAGEREF _Toc262117185 h 6 HYPERLINK l _Toc262117186 JAVA语言 PAGEREF _Toc262117186 h 6 HYPERLINK l _Toc262117187 (5) JAVA语言 PAGEREF _Toc262117187 h 6的特点 HYPERLINK l _Toc2621

4、17188 1.简单 PAGEREF _Toc262117188 h 6 HYPERLINK l _Toc262117189 2.面向对象 PAGEREF _Toc262117189 h 7 HYPERLINK l _Toc262117190 3.分布式 PAGEREF _Toc262117190 h 7 HYPERLINK l _Toc262117191 4.稳健性7 PAGEREF _Toc262117191 h _ HYPERLINK l _Toc262117192 5.安全 PAGEREF _Toc262117192 h 7 HYPERLINK l _Toc262117193 6.便携

5、性7 PAGEREF _Toc262117193 h _ HYPERLINK l _Toc262117194 2.问题分析 PAGEREF _Toc262117194 h 7 HYPERLINK l _Toc262117195 (1) 功能设计 PAGEREF _Toc262117195 h 7 HYPERLINK l _Toc262117196 (2) 设计题 PAGEREF _Toc262117196 h 8 HYPERLINK l _Toc262117197 1.理论题: PAGEREF _Toc262117197 h 8 HYPERLINK l _Toc262117198 2.技术问题

6、: PAGEREF _Toc262117198 h 8 HYPERLINK l _Toc262117199 3.实际问题: PAGEREF _Toc262117199 h 8 HYPERLINK l _Toc262117200 (3) 设计原则 PAGEREF _Toc262117200 h 8 HYPERLINK l _Toc262117201 (4) 开发工具的选择 PAGEREF _Toc262117201 h 8 HYPERLINK l _Toc262117204 (5) 使用的主要技术 PAGEREF _Toc262117204 h 9 HYPERLINK l _Toc2621172

7、06 1.java.awt PAGEREF _Toc262117206 h 9 _ HYPERLINK l _Toc262117207 2.java.awt.image PAGEREF _Toc262117207 h 9 _ HYPERLINK l _Toc262117208 HYPERLINK l _Toc262117209 3.java.awt.color PAGEREF _Toc262117209 h 9 _ HYPERLINK l _Toc262117211 三、设计与实现 PAGEREF _Toc262117211 h 10 HYPERLINK l _Toc262117212 (1)

8、 整体结构设计 PAGEREF _Toc262117212 h 10 HYPERLINK l _Toc262117213 1、BufferedImages类对象的图像数据处理方案 PAGEREF _Toc262117213 h 如下: 10 HYPERLINK l _Toc262117214 二、软件的组成和功能 PAGEREF _Toc262117214 h 10 HYPERLINK l _Toc262117215 3 、软件功能测试: PAGEREF _Toc262117215 h 14 HYPERLINK l _Toc262117216 四。结论 PAGEREF _Toc26211721

9、6 h 14 HYPERLINK l _Toc262117217 参考文献 PAGEREF _Toc262117217 h 16一、简介70年代以来,随着计算机的广泛应用,用户对其屏幕性能的要求也随之提高,数字图像处理技术应运而生。它实现并增强了人类的视觉和人类处理视觉信息的能力。目前,国外市场仍以Adobe的Photoshop为主流图形图像处理软件。该软件具有强大的处理能力和丰富的工具库,代表了计算机图形和图像处理领域的最高技术标准。进入21世纪,随着计算机技术的飞速发展和相关理论的不断完善,数字图像处理技术在航空航天、生物医学工程、工业测试、机器人技术等诸多应用领域得到了广泛的重视,并取得

10、了重大的开创性成果。 .视觉、公安司法、军事指导、文化艺术等。图形与图像处理技术已成为一门引人注目的新兴学科。互联网是世界上最大的计算机网络。它起源于 1968 年,当时美国国防部的高级研究计划署(ARPAAdvanced Research Project Agency)开发了一个名为 ARPANET 的计算机实验网络来支持军事研究。网络的发展也为图形图像技术的发展提供了空间,网络的多媒体化和丰富化也对图形图像处理提出了更高的要求。谷歌的卫星地图就是一个非常成功的例子。如今,各种精美的图片已广泛应用于各个领域,图形图像技术已成为不可或缺的应用。(一)题目来源本课题是根据我大三学习的JAVA开发

11、课程,结合网上流行的图形图像处理软件。因为对这个领域比较感兴趣,所以写这个图文软件是对大学期间所学知识的总结。(二)项目的目的和意义基于Java平台的图像处理软件的设计与实现,研究Java语言的面向对象编程和多媒体编程,了解其图形绘制机制和多线程原理。深度学习和掌握。本课题的意义在于对图形图像处理领域的深入探索,力图开发具有实用价值或一定参考价值的软件产品。并且可以进一步了解和掌握软件开发的全过程,提高和提高自己的软件设计开发能力。同时,我对图形和图像的处理更感兴趣,这可以增加我对编程的学习和理解。(3) 本软件的特点由于自身技术的限制,在开发中无法展现太多的功能和特点,而Java语言本身在图

12、形图像处理方面也不是很好,所以只包括了几何变换、存取变换、钝化、锐化、颜色变换等选择使用 Java 语言作为软件编程语言是因为 Java 语言的简单性和可移植性。它可以跨平台运行,使用更方便。与C+不同的是,它是基于源代码移植的,不能跨平台使用。平台操作,软件开发不如Java方便,Java对图形图像研究较少,希望能在这方面有所发现。(4) JAVA语言发展概况一、JAVA语言的诞生它是由 Sun 开发的。它的诞生主要得益于家用电器的芯片。一开始,它的开发者想用C+语言来开发电器芯片。但是,由于芯片类型不同,因此,程序需要多次编译。尤其是C+中的指针操作,一旦操作不慎,就会出问题。程序可以出错,

13、但家用电器不能出错。为此,它的开发者简化了C+语言,去掉了指针操作,去掉了运算符重载等,去掉了C+中的多重继承,得到了Java语言,把它变成了解释语言,在上面安装了Java语言虚拟机每个芯片。一开始,Java 语言被称为 Oak 语言(Oak 语言)。这就是 Java 语言的安全性。其安全性的主要来源是放弃在 C+ 中使用指针,从而成为 Java 中包装类的使用。2.JAVA语言的发展它的发展得益于互联网的发展。刚开始,互联网的发展比较缓慢,每个网页都是静态图片,不能和用户一起操作。甚至后来的CGI也只跑在服务器端,而且速度太慢了,人们迫切需要在浏览器端能和用户交流,屏幕能动,但是WWW上有各

14、种机器,操作系统也很不一样,后来人们想到了Oak语言,这是一个解释只要每台机器上的浏览器都有自己的虚拟机,Oak语言就可以运行,所以开发了Oak语言,后来改名为Java语。现在互联网上流行的开发语言是Java语言。它是目前社交软件开发的主流语言,主要是因为它使用简单,可移植性强。三、JAVA语言的成熟度JAVA语言现在逐渐成熟。它有近千个班级,而且它的班级包罗万象。还可以从第三方购买类,为Java语言的开发提供了良好的发展前景。同时,它也是跨平台的。因此,许多软件开发商和硬件开发商都争先恐后地搭上了Java语言的快车,都声称支持Java语言,这对微软发起了强烈的挑战,Sun也在努力开发Java

15、芯片。目前,JAVA程序几乎可以运行在从Windows系列、Unix系列、Mac OS系列到Linux的所有操作系统平台上,尤其重要的是已经能够“一次编写,到处运行”;另一方面,与C等传统编程语言相比,使用JAVA开发GUI应用程序的难度大大降低;再加上JAVA语言的纯面向对象和强大的网络功能,JAVA非常适合编译应用软件。(5) JAVA语言的特点JAVA语言的特点总结为以下六点:1.简单JAVA语言类似于C+,所以C+程序员很容易掌握,但是JAVA语言是C+语言的简化。它摒弃了C+中容易出错的地方,比如指针的使用和存储管理。它还提供了丰富的类库,为程序员的开发带来了极大的便利。2.面向对象

16、面向对象可以说是JAVA语言最重要的特性。 JAVA语言的设计是完全面向对象的。它不像 C 语言那样面向程序。 JAVA语言支持静态和动态代码重用和继承,3.分布式JAVA语言包含一个支持和基于TCP/IP协议的ftp的子库,所以JAVA程序可以使用URL来打开和访问网络上的对象,几乎和本系统中访问对象一样。可以为分布式环境(尤其是 Internet)提供的动态内容。4. 鲁棒性JAVA 致力于检查编译和运行时错误。类型检查有助于在开发的早期阶段检测到许多错误。 JAVA 自己操作存储,减少了很多存储错误的可能性。5. 安全JAVA的安全可以从两个方面来保证。一方面,为了避免非法的存储操作,放

17、弃了指针和存储释放等C+函数。另一方面,在JAVA中创建浏览器时,语言特性与浏览器自身提供的特性相结合,使其更加安全。6. 便携性大多数语言生成的目标代码只能在一种 CPU 上运行,即使是支持多 CPU 的编译器也无法一次生成多个合适的目标代码。如果要在多个CPU上运行,就必须多次编译,给编程技术带来极大的不便。 JAVA 编译器不同。它生成的目标代码用于不存在的 JVM 虚拟机。这个虚拟机可以屏蔽不同CPU之间的差异。目标代码可以在任何配备了虚拟机的虚拟机上运行。在平台上。2 、问题分析(1) 功能设计该软件是Java 2D编程和多线程编程的结合,其主要功能定位在一些通过Java 2D AP

18、I处理图形的机制中。整个软件操作简单,设计清晰明了,目的是测试功能和效果。软件整体布局简洁实用,美观大方。使用方便,功能描述清晰。由于其技术水平有限,图像处理效果可能并不理想,但能体现Java在图形处理方面的基本功能。(2) 设计问题本研究的目标是建立一种基于JAVA平台的、符合当代社会观念、具有实用价值、综合效益高的图片处理机制。需要解决的主要问题如下:1.理论问题:如今,图形图像处理软件在互联网上随处可见,花样繁多,用途各异。如何设计出自己的风格,又要体现实用性,而不是流于形式,需要慎重考虑。2、技术问题:在JAVA 、Java 2D、多线程的严格使用、架构、安全、使用的工具等都是我们需要

19、仔细考虑的问题,也是开发一款好的图像处理软件的必要要求。 .3. 实际问题:如今,互联网上流行的图形图像处理软件功能强大,花样繁多。需要从实践中不断总结。不切实际地模仿别人、抄袭别人是不可取的。(3) 设计原则本项目的主要开发原则如下:1、界面风格简洁自然,避免浮躁浮夸的风格,为实际用户带来轻松的交流环境;2、软件主要功能基本齐全,包括锐化、钝化、拉伸、颜色加深、图像翻转等;3、遵循Java的图像处理机制,保证代码运行的稳定性和可靠性。(4) 开发工具的选择Esclipes是一种由Java开发的软件。它的性能很好,而且很容易使用。适用于中小型企业和通用软件开发。这里使用了以下工具: 1. Ja

20、va 编译器Java编译器将Java源代码文件编译成可执行的Java字节码。 Java源代码文件具有扩展名.java , Java编译器将具有此扩展名的文件编译成具有扩展名 .class 的文件。源文件中的每个类在编译后都会生成一个类文件,也就是说一个Java源代码文件可能被编译生成多个类文件。2 、 Java解释器Java解释器支持运行编译生成的字节码格式的可执行程序,是运行非图形化Java程序的命令行工具。(五)采用的主要技术图像是按空间位置组织的像素集合,一个像素定义了某个显示位置的图像外观。 Java 2D API 在处理图像时提供了一些实用的处理机制。 Java 2D API 的图像

21、处理主要针对 BufferedImage 类。为了创建图像,直接在存在的情况下创建 BufferedImage 类对象,以保存和操作从文件或 URL 检索的图像数据,并提供一组 Xyz . Op 类,对 BufferedImage 对象执行图像处理操作,例如, AffineTransformOp、BandCombineOp、ColorConverOp、ConvolveOp、LookupOp、RescaleOp等类可用于图像缩放等几何变换、仿射变换、边缘检测、钝化、锐化、对比度增强、图像色彩校正等操作,并可对图像数据进行通过 Graphics2D 对象显示在屏幕设备上。对图像的各种操作通常是通过

22、称为过滤器的图像处理类来实现的。1.java.awt _java.awt包含一些新的 2D API 类和接口。其中Graphics2D继承自java.awt.Graphics,是一个描绘2D图形的对象。当要绘制对象时,painter 或 update 方法会根据相应的图形上下文自动调用 Graphics2D 对象的绘图方法。2. java.awt.image用于处理像素图图像的 Java 2D API 技术的即时模式图像处理类和接口。在 java.awt.image 包中,Java 2D API 中的图像处理类定义了许多过滤器,这些过滤器过滤源图像以生成新图像。3.java.awt.color

23、java.awt.color 包定义了 ColorSpace 类。此类包含在当前颜色空间和两种标准颜色之间进行转换的方法。三、设计与实现(1) 整体结构设计软件的处理结构如下:源图像图像处理操作目标图像过滤器(2) 具体设计源图像图像处理操作目标图像过滤器1 、BufferedImages类对象的图像数据处理方案如下:1)创建一个BufferedImage对象,将图像数据存储在BufferedImage对象中。2)确定图像数据处理方式和变换方法。3)确定变换矩阵Kernel。4)变换操作、图像数据处理、应用图像数据处理操作类。5)通过Graphics2D对象在屏幕上显示图像2、软件的组成和功能

24、1)软件组成如下2)软件功能介绍如下:1 、“翻转”功能对应代码如下:/* 图像翻转变换方法*/publicvoid turnBufferedImage() bfdImage2 =新的BufferedImage(bfdImage1.getWidth(), bfdImage1.getWidth(), bfdImage1.getType();数据缓冲区 db1 = bfdImage1.getRaster().getDataBuffer();数据缓冲区 db2 = bfdImage2.getRaster().getDataBuffer();for ( int i = db1.getSize() -

25、1, j = 0; i = 0; i-, j+) db2.setElem(j, db1.getElem(i);如果(转)bfdImage = bfdImage2;转=假;其他bfdImage = bfdImage1;转=真;2 、“锐化”功能对应代码如下:/* 图像锐化变换方法*/publicvoid sharpImage() bfdImage = null ;浮动 数据 = -1.0f, -1.0f, -1.0f, -1.0f, 10.0f, -1.0f, -1.0f,-1.0f, -1.0f;内核 kernel = new Kernel(3, 3, data);ConvolveOp co

26、= new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP , null );co.filter(bfdImage1,bfdImage2);bfdImage = bfdImage2;3. “模糊”功能对应代码如下/* 图像模糊变换方法*/公共无效模糊图像()浮动 数据 = 0.0625f, 0.125f, 0.0625f, 0.125f, 0.125f, 0.125f,0.0625f, 0.125f, 0.0625f;内核 kernel = new Kernel(3, 3, data);ConvolveOp co = new ConvolveOp(kernel

27、, ConvolveOp.EDGE_NO_OP , null );co.filter(bfdImage1,bfdImage2);bfdImage = bfdImage2;4 、“灰显”功能对应代码如下:/* 图像灰度化方法*/publicvoid grayImage() ColorConvertOp cco = new ColorConvertOp(ColorSpace.getInstance (ColorSpace.CS_GRAY ) , null ) ;cco.filter(bfdImage1, bfdImage2);bfdImage = bfdImage2;5 、“明暗”功能对应代码如下

28、:/* 图像增亮方法*/公共无效增亮LUT()短 变亮 = newshort 256;短像素值;for ( int i = 0; i 255)像素值 = 255; elseif (pixelValue 0) 像素值 = 0;变亮i = 像素值;lut = new ShortLookupTable(0, 变亮);LookupOp lop = new LookupOp(lut, null );lop.filter(bfdImage1, bfdImage2);bfdImage = bfdImage2;/* 图像变暗方法*/publicvoid darkenLUT() 短 变暗 = newshort

29、256;短像素值;for ( int i = 0; i 255)像素值 = 255; elseif (pixelValue 0) 像素值 = 0;变暗i = 像素值;lut = new ShortLookupTable(0, 变暗);LookupOp lop = new LookupOp(lut, null );lop.filter(bfdImage1, bfdImage2);bfdImage = bfdImage2;6. “拉伸”功能,对应代码如下:/* 图像拉伸方法*/公共无效变换()transform.setToScale(scaleX, scaleY);AffineTransformO

30、p ato = new AffineTransformOp(transform, null );bfdImage2.createGraphics().clearRect(0, 0, bfdImage2.getWidth( this ),bfdImage2.getHeight(这个);ato.filter(bfdImage1, bfdImage2);bfdImage = bfdImage2;X方向:publicvoid setscaleX(双scalex)比例尺;Y方向:publicvoid setscaleY(双标度)鳞片状;7 、“恢复”功能对应代码如下:/* 图像恢复方法*/公共无效简历(

31、)bfdImage = bfdImage1;this.repaint ();3、软件功能测试:通过单击按钮触发事件,然后通过 GUI 查看图像的变化来测试软件处理能力的可靠性。四。结束语经过一个月的学习和努力,软件的设计和开发已经基本完成,感觉这段时间受益匪浅。我从图形图像处理软件的需求分析开始,从初步的设计,到具体的模块划分,到最后的统一连接,完成了一个图形图像处理软件的编写过程,体会到了图形图像处理软件的乐趣和艰辛。技术工作。通过这个软件的编写,我了解了软件开发的全过程:接到一个任务,首先需要分析需求,收集资料,做一系列的准备工作,然后再做具体的分析工作,最后实现代码。和测试。另外,经过这段边做边学,对Java相关知识有了一定的了解,激发了浓厚的学习兴趣,这无疑是非常有益的。这种实践也是大学期间难得的实践锻炼机会。相信这个练习会对我以后的工作和学习起到指导作用。参考1 美国布鲁斯埃克尔。 JA

温馨提示

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

评论

0/150

提交评论