ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:2.54MB ,
资源ID:10533304      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10533304.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于java综合图像处理课程设计报告书.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于java综合图像处理课程设计报告书.docx

1、基于java综合图像处理课程设计报告书成 绩 评 定 表学生姓名*班级学号*专 业通信工程课程设计题目基于JAVA的综合图像处理的设计与实现评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院信息科学与工程学院专 业通信工程学生姓名*班级学号 *课程设计题目基于JAVA的综合图像处理的设计与实现实践教学要求与任务:1、 熟悉综合图像处理的基本原理2、 熟悉Java的环境3、 在Java环境中仿真实现综合图像处理4、 运行、调试综合图像处理5、对综合图像处理进行结果验证及分析工作计划与进度安排: 12月1日 熟悉设计任务、查阅资料、进行原理分析及可行性论证 12月2日3日 在Java环境

2、中仿真实现综合图像处理 12月4日 验收、答辩、提交报告指导教师: 201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日1 背景及意义图形图像信息是人类获得外界信息的主要来源,因为大约有70%的信息是通过人眼获得的,而人眼获得的都是图形图像信息。在近代科学研究、军事技术、工农业生产、医学、气象及天文学领域中,人们越来越多地利用图形图像信息来认识和判断事物,解决实际问题。本设计能实现基本的绘画功能以及图形图像的基本编辑。本文是基于Java图形图像处理软件,Java编程语言是一种跨平台的编程语言,在编写图形用户界面方面,也要支持跨平台功能。为此Java提供了强大而丰富

3、的AWT包和Swing包,使得Java功能越来越强大,界面越来越美观。Java图形图像用户界面的编写普遍采用构件化思想来进行,AWT和Swing本身提供的也是许多标准的构件和容器。本软件将所学的理论知识与实际应用相结合,运用Java编程语言,实现读入图片、滤镜处理功能、边缘处理功能、图像还原功能,以达到图形处理的目的。课题研究的目的及意义随着科学技术的不断发展,计算机的更新速度不断提高,人们的思想文化素质的提高,对图形图像的要求也越来越高。因此把原始图形图像与计算机结合起来,从而创作出许多更加完美的图像,满足人们的需求,计算机图形图像处理,是指利用计算机对图像图像进行一系列加工,以便获得人们所

4、需要的效果。图形图像是人们获取和交换信息的主要来源,人类感知外界信息,80%以上是通过视觉得到的。因此,图形图像处理的应用领域必然涉及到人类生活和工作的方方面面。图形图像是用各种观测系统以不同形式和手段观测客观世界而产生视知觉的实体。比如人的视觉就是以观测系统,通过它得到的图形图像就是客观景物在人心目中形成的影像。视觉是人类观察世界、认知世界的重要功能手段。图形图像带有大量的信息,为此开发这个图形图像处理软件,能过处理一些图形图像,并对图形图像处理技术此方面进行深入的研究。2 设计原理及设计方案2.1 图像增强图像增强作为最基本的图像处理技术,其目的是对图像进行加工,已得到对具体应用来说视觉效

5、果更好更有用的图像。由于具体应用的目的和要求不同,因而好和有用的含义也不相同,因此图像增强技术是面向具体问题的。目前图像增强技术根据其处理的空间不同,可分两大类:空域方法和频域方法。前者直接在图像所在的像素空间进行处理;而后者是通过对图像进行傅里叶变换后在频域上间接进行的。在空域方法中,根据每次处理是针对单个像素还是小的子图像块(模板)又可分为两种:一种是基于像素的图像增强,也叫点处理,这种增强过程中对每个像素的处理与其他像素无关;另一种是基于模板的图像增强,也叫空域滤波,这种增强过程中的每次处理操作都是基于图像中的某个小的区域。本文中采用的图像增强方式就是空域滤波,其根据操作特点可以分为线性

6、滤波和非线性滤波两类;而根据滤波效果又可分为平滑滤波和锐化滤波两种。2.1.1 图像平滑处理本文中对图像的平滑处理采用的是线性平滑滤波器。平滑滤波器的概念非常直观,它用滤波模板确定的邻域内像素的平均灰度值,去代替图像中的每一个像素点的值,这种处理减少了图像灰度的“尖锐”变化。图1显示了一个标准33的平滑模板,图1 线性平滑算子在JAVA程序中,可以通过使用ConvolveOp组件来进行模板与图像的卷积计算,部分代码如下public BufferedImage smooth(BufferedImage image1) image=image1;float data = 1/9f, 1/9f, 1

7、/9f, 1/9f, 1/9f, 1/9f, 1/9f, 1/9f, 1/9f;Kernel kernel = new Kernel(3,3,data);ConvolveOp op = new ConvolveOp(kernel);return filter(op);源程序代码将在附录中给出,此处不做详细介绍。2.1.2 图像锐化处理图像的锐化与平滑相反,在图像传输和变换过程中,因受到干扰会退化,比较典型的事图像模糊。图像锐化就是使边缘轮廓线模糊的图像变得清晰,使其细节更加清晰。拉普拉斯算子是一种各项同性的二阶导数算子,对一个连续函数,他在位置处的拉普拉斯算子定义为:由于任意阶微分都是线性的,

8、因此拉普拉斯变换也是一个线性操作。对于数字图像来说,图像的拉普拉斯算子定义为:其中,是在方向和方向的二阶差分,因此离散函数的拉普拉斯算子可表示为:上式可用图2所示的模板表示,且拉普拉斯算子显然是各向同性的。图2 拉普拉斯算子由于拉普拉斯是一种微分算子,它的应用强调图像中灰度的突变即降低灰度缓慢变化的区域,这将产生一幅把图像中的浅灰色边线和突变点叠加到暗背景中的图像。将原始图像和拉普拉斯图像叠加在一起的方法可以保护拉普拉斯锐化处理的效果,同时又能复原背景信息,因此,记住拉普拉斯定义是很重要的。如果所使用的定义具有负的中心系数,那么就必须将原始图像减去经拉普拉斯变换后的图像,从而得到锐化的结果,反

9、之,如果拉普拉斯定义的中心系数为正,则原始图像要加上经拉普拉斯变换后的图像。故使用拉普拉斯算子对图像增强的基本方法可以表示为下式:其中也可以用算子矩阵来表示,例如对于图2模板,最终得到的增强图像相当于原图像直接与如图3算子相卷积的结果,此算子矩阵也叫锐化掩膜。图3 锐化掩膜算子在程序中相关的代码如下:public BufferedImage sharp(BufferedImage image1) image=image1; float data = 0.0f, -1.0f, 0.0f, -1.0f, 5.0f, -1.0f, 0.0f, -1.0f, 0.0f; Kernel kernel =

10、 new Kernel(3,3,data); ConvolveOp op = new ConvolveOp(kernel); return filter(op); 2.2 边缘检测图像的边缘对人类视觉而言具有重要意义。当人们看一个带有边缘的物体时,首先感受到的便是它的边缘。灰度或结构等信息的突变处称为边缘。边缘时一个区域的结束,也是另一个区域的开始,利用这种特性可以分割图像。需要指出的是,检测出的边缘并不等同于目标的真实边缘。由于图像数据是二维的,而实际物体是三维的,从二维到三维的投影必然会造成信息的丢失,再加上成像过程中的光照不均和噪声等因素的影响,使得有边缘的地方不一定能检测出来,而检测出

11、来的边缘也不一定代表实际边缘。图像的边缘有方向和幅度两个属性,沿边缘方向的像素点变化平缓,而垂直于边缘方向的像素点变化剧烈。物体边缘上的这种变化可以用微分算子检测出来,通常用一阶或二阶导数来检测边缘。 拉普拉斯算子同样可用于图像边缘检测,由于其是基于二阶导数的边缘检测算子,该算子对噪声敏感。一种改进方法是先对图像进行平滑滤波处理,然后再应用边缘检测算子。这种平滑和微分合并后的算子称为高斯-拉普拉斯算子,这种边缘检测方法也称为Marr边缘检测方法。 在计算过程中可直接使用如图2所示的拉普拉斯算子进行边缘检测,其在程序中相关的代码如下: public BufferedImage edge(Buff

12、eredImage image1) image=image1; float data = 0.0f, 1.0f, 0.0f, 1.0f, -4.0f, 1.0f, 0.0f, 1.0f, 0.0f ; Kernel kernel = new Kernel(3,3,data); ConvolveOp op = new ConvolveOp(kernel); return filter(op); 3 设计过程本文以此在校园内拍摄的照片为例对其分别进行平滑、锐化、边缘处理3.1 对图像进行平滑处理对图像使用平滑处理功能对其进行平滑处理,结果如下:3.2 对图像进行锐化处理使用图像还原功能还原图像,再

13、使用锐化处理功能对例图进行锐化处理,结果如下:3.3 对图像进行边缘检测 使用图像还原功能还原图像,再使用边缘变换功能对例图进行边缘检测,结果如下:4 结论本文基于Java的图形图形处理环境,设计并实现了一个图形图像处理系统,总的来说,达到了预定的目标,可以实现对图形图像进行较好的,较全面的处理。这次的课程设计从各个方面对我所掌握的知识进行了一次考验,虽说做的比较简单,但也花费我较长的时间,总的来说这次课程设计对本人来说是成功的,见识、知识、经验都长进了不少。在这次课程设计的过程中,让自己的编程水平有了一定程度的提高,对自己也有一个了解,使自己从校门走出去以后,能够比较准确的给自己定位,了解自

14、己有从事什么工作的能力。另外,通过这次软件的开发,对于图形图像处理方面有了真正实质上的进步。但是,从整体上面来说,因为经验的欠缺,导致整个软件存在一些漏洞,另外一些地方做的也不是很正规,但是相信通过以后的学习和实践,这样的错误会尽量避免。参考文献1 孙卫琴JAVA面向对象编程M.北京:电子工业出版社,2006:256-2972 姚敏,数字图像处理,机械工业出版社 2012.43 张伟,举一反三-JAVA程序设计实战训练,人民邮电出版社,2004.104 天猜vs马头,图像的锐化算子 ,XX文库,2013.04.10附录:程序源代码1.Application1.javaimport javax.

15、swing.UIManager;public class Application1 public Application1() new Frame(); public static void main(String args) try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); catch(Exception e) e.printStackTrace(); new Application1(); 2.Frame.javaimport java.awt.*;import java.awt.image.*;

16、import java.awt.event.*;import javax.swing.*;public class Frame extends JFrame BufferedImage orimage; BufferedImage image; JFrame frame=new JFrame(图像处理); FilePane pane=new FilePane(); ImageFilter filter = new ImageFilter(); FileChooser chooser=new FileChooser(); JMenuBar bar=new JMenuBar(); JMenu fi

17、le1=new JMenu(文件); JMenu file2=new JMenu(编辑); JMenuItem open=new JMenuItem(打开); JMenuItem exit=new JMenuItem(退出); JMenuItem smooth=new JMenuItem(平滑处理); JMenuItem sharp=new JMenuItem(锐化处理); JMenuItem edge=new JMenuItem(边缘变换); JMenuItem reset=new JMenuItem(图像还原); public Frame() frame.getContentPane().

18、setLayout(new BorderLayout(); frame.setSize(600,480); frame.setContentPane(pane); frame.setVisible(true); frame.setResizable(true); file1.add(open); file1.add(exit); bar.add(file1); file2.add(smooth); file2.add(sharp); file2.add(edge); file2.add(reset); bar.add(file2); frame.setJMenuBar(bar); frame.

19、setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); exit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) System.exit(0); ); open.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) pane.showImage(chooser.chooser(); orimage=pane.PassImage();

20、 image=pane.PassImage(); filter.setoriginalimage(orimage); Dimension imageSize = new Dimension(orimage.getWidth()+17,orimage.getHeight()+60); frame.setSize(imageSize); frame.setVisible(false); frame.setVisible(true); repaint(); ); smooth.addActionListener(new ActionListener() public void actionPerfo

21、rmed(ActionEvent e) image=filter.smooth(image); pane.showImage(image); frame.setVisible(false); frame.setVisible(true); repaint(); ); sharp.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) image=filter.sharp(image); pane.showImage(image); frame.setVisible(false); fra

22、me.setVisible(true); repaint(); ); edge.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) image=filter.edge(image); pane.showImage(image); frame.setVisible(false); frame.setVisible(true); repaint(); ); reset.addActionListener(new ActionListener() public void actionPer

23、formed(ActionEvent e) image=filter.reset(); pane.showImage(image); frame.setVisible(false); frame.setVisible(true); repaint(); ); 3.FileChooser.java import java.io.File;import javax.swing.JFileChooser;public class FileChooser extends JFileChooser public JFileChooser f; public FileChooser() f=new JFi

24、leChooser(); public String chooser() f.setCurrentDirectory(new File(.); f.setFileFilter(new javax.swing.filechooser.FileFilter() public boolean accept(File file) String name = file.getName().toLowerCase(); return name.endsWith(.gif)|name.endsWith(.jpg)| name.endsWith(.jpeg)|name.endsWith(.png)|file.

25、isDirectory(); public String getDescription() return Image files; ); f.setVisible(true); f.showOpenDialog(f); int result=0; String name=null; if(result=JFileChooser.APPROVE_OPTION) name=f.getSelectedFile().getAbsolutePath(); f.setVisible(false); return name; 4.FilePane.javaimport java.awt.BorderLayo

26、ut;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Image;import java.awt.MediaTracker;import java.awt.Toolkit;import java.awt.image.BufferedImage;import javax.swing.JPanel;class FilePane extends JPanel BufferedImage orimage; BufferedImage image; public FilePane() super(); setLayou

27、t(new BorderLayout(); public void showImage(String url) Image image1 = Toolkit.getDefaultToolkit().getImage(url); MediaTracker tracker = new MediaTracker(this); tracker.addImage(image1, 0); try tracker.waitForID(0); catch(InterruptedException e) image = new BufferedImage(image1.getWidth(null),image1

28、.getHeight(null), BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); g.drawImage(image1,0,0,null); public void showImage(BufferedImage image1) MediaTracker tracker = new MediaTracker(this); tracker.addImage(image1, 0); try tracker.waitForID(0); catch(InterruptedException e) image = ne

29、w BufferedImage(image1.getWidth(null),image1.getHeight(null), BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); g.drawImage(image1,0,0,null); protected void paintComponent (Graphics g) super.paintComponent(g); if(image!=null) g.drawImage(image, 0, 0, null); public BufferedImage PassImage() return image; 5.ImageFilter.javaimport java.awt.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1