为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > java 图像的锐化与模糊

java 图像的锐化与模糊

2021-08-30 11页 doc 492KB 57阅读

用户头像

is_721103

暂无简介

举报
java 图像的锐化与模糊java图像的锐化与模糊java 图像的锐化与模糊对用Java2D进行图像处理技术,包括有坐标变换、图像模糊、锐化、边缘检测等几方面。本实例,主要介绍通过在面板中显示一张图片,通过单击不同的按钮,来改变图像的锐化度和模糊度。操作步骤:(1)导入所面的类包,并创建Blur主类。该类继承了Jframe类和ActionListener类,其中implementsActionListener主要用来实现动作事件监听。然后,分别定义模糊、锐化和还原等按钮,并创建ImagePanel绘制图像对象。importjava.awt.*;impo...
java  图像的锐化与模糊
java图像的锐化与模糊java 图像的锐化与模糊对用Java2D进行图像处理技术,包括有坐标变换、图像模糊、锐化、边缘检测等几方面。本实例,主要介绍通过在面板中显示一张图片,通过单击不同的按钮,来改变图像的锐化度和模糊度。操作步骤:(1)导入所面的类包,并创建Blur主类。该类继承了Jframe类和ActionListener类,其中implementsActionListener主要用来实现动作事件监听。然后,分别定义模糊、锐化和还原等按钮,并创建ImagePanel绘制图像对象。importjava.awt.*;importjavax.swing.*;importjava.io.*;publicclassBlurextendsJFrameimplementsActionListener{privateJPaneljPanel=newJPanel();//面板jPanel用于容纳模糊、锐化、还原图像按钮privateJButtonbuttonBlur;//模糊图像按钮privateJButtonbuttonSharpen;//锐化图像按钮privateJButtonbuttonReset;//还原图像按钮ImagePanelimagePanel=newImagePanel();//创建ImagePanel对象用于绘制图像(2)构造主方法,并分别实例化按钮对象,以及添加不同按钮的监听事件。然后,将各按钮添加到面板中,再将面板添加到容器中,并设置容器的布局方式。publicBlur(){super("图像的模糊与锐化演示");//调用父类构造函数ContainercontentPane=getContentPane();//得到容器buttonBlur=newJButton("模糊图像");buttonBlur.addActionListener(this);buttonSharpen=newJButton("锐化图像");buttonSharpen.addActionListener(this);buttonReset=newJButton("还原图像");buttonReset.addActionListener(this);jPanel.add(buttonBlur);//增加组件到面板上jPanel.add(buttonSharpen);jPanel.add(buttonReset);contentPane.add(jPanel,BorderLayout.SOUTH);//增加组件到容器上contentPane.add(imagePanel,BorderLayout.CENTER);StringfileName="fj.jpg";imagePanel.loadImage(fileName);//设置窗口this.setSize(280,230);//设置窗口大小this.setVisible(true);//设置窗口可见this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口时退出程序}(3)创建监听事件方法,并获取事件源,如e.getSource()方法获取组件名称。然后,通过if elseif else语句,来判断是哪一个按钮事件,并执行语句体中的代码。PublicvoidactionPerformed(ActionEvente){Jbuttonbutton=(Jbutton)e.getSource();//获取事件源if(button==this.buttonBlur){imagePanel.blur();//模糊图像buttonReset.setEnabled(true);//设置还原图像按钮可用}//锐化图像按钮buttonSharpen事件处理elseif(button==this.buttonSharpen){imagePanel.sharpen();//锐化图像buttonReset.setEnabled(true);//设置还原图像按钮可用}//还原图像按钮buttonBlur事件处理elseif(button==this.buttonReset){imagePanel.reset();//还原图像buttonReset.setEnabled(false);//设置还原图像按钮不可用}}(4)创建主方法,并实例化Blur()方法。然后,在创建ImagePanel类,并继承JPanel面板类。在该类中,先设置图像处理的相关参数,如显示缓冲区图像、原始缓冲区图像和图形环境等。publicstaticvoidmain(String[]args){newBlur();}publicclassImagePanelextendsJPanel{Imageimage;//被处理的图像BufferedImagebufImage;//用于显示缓冲区图像BufferedImageoriginalBufImage;//原始缓冲区图像Graphics2Dg2D;//图形环境(5)创建loadImage()方法,并加载图像、创建原始缓冲区图像、设置图形环境等等。publicvoidloadImage(StringfileName){image=this.getToolkit().getImage(fileName);//获取图像MediaTrackermt=newMediaTracker(this);//实例化媒体加载器mt.addImage(image,0);//增加待加载图像到媒体加载器try{mt.waitForAll();//等待所有图像的加载完成}catch(Exceptionex){ex.printStackTrace();//输出出错信息}originalBufImage=newBufferedImage(image.getWidth(this),image.getHeight(this),BufferedImage.TYPE_INT_ARGB);//创建原始缓冲区图像g2D=originalBufImage.createGraphics();//创建缓冲区图像的图形环境g2D.drawImage(image,0,0,this);//传输源图像数据到缓冲区图像中bufImage=originalBufImage;repaint();//重绘组件}(6)创建applyFilter()方法,并通过传递的data数组值,来改变图像的模糊度与锐化度。在整个图像处理过程中,主要通过图像中颜色的过滤起到模糊与锐化效果。//过滤图像publicvoidapplyFilter(float[]data){if(bufImage==null)return;//如果bufImage为空则直接返回Kernelkernel=newKernel(3,3,data);ConvolveOpimageOp=newConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,null);//创建卷积变换操作对象BufferedImagefilteredBufImage=newBufferedImage(image.getWidth(this),image.getHeight(this),BufferedImage.TYPE_INT_ARGB);//过滤后的缓冲区图像imageOp.filter(bufImage,filteredBufImage);//过滤图像,目标图像在filteredBufImagebufImage=filteredBufImage;//让用于显示的缓冲区图像指向过滤后的图像repaint();//重绘组件}(7)分别创建blur()和sharpen()方法,来改变data数组中的值,来改变图像过滤效果。再创建reset()方法,通过“g2D.drawImage(image,0,0,this);”语句将源图像数据到缓冲区图像中,以恢复图像源效果。publicvoidblur(){//模糊图像if(bufImage==null)return;float[]data={0.0625f,0.125f,0.0625f,0.125f,0.025f,0.125f,0.0625f,0.125f,0.0625f};applyFilter(data);}publicvoidsharpen(){//锐化图像if(bufImage==null)return;float[]data={-1.0f,-1.0f,-1.0f,-1.0f,9.0f,-1.0f,-1.0f,-1.0f,-1.0f};applyFilter(data);}publicvoidreset(){//恢复图像if(bufImage==null)return;bufImage=originalBufImage;//g2D.drawImage(image,0,0,this);repaint();//调用paint()方法重绘组件}publicvoidpaint(Graphicsg){super.paintComponent(g);//如果bufImage非空,则在组件上绘制它if(bufImage!=null){Graphics2Dg2=(Graphics2D)g;g2.drawImage(bufImage,(this.getWidth()-bufImage.getWidth())/2,(this.getHeight()-bufImage.getHeight())/2,this);}}}}(8)执行代码,通过单击【模糊图像】或者【锐化图像】按钮,可以改变图像的效果,如图11-1所示。图像源始效果与还原效果      图像模糊效果图像锐化效果图11-1 图像模糊与锐化
/
本文档为【java 图像的锐化与模糊】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索