TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
用卷积的方法实现边缘检测,常用于医学图像处理.
/* <applet code="Graph.class" width="400" height="300"></applet> */
- import java.awt.*;
- import java.awt.event.*;
- import java.awt.geom.*;
- import java.awt.image.*;
- import java.io.*;
- import java.applet.*;
- import javax.swing.*;
- import java.applet.*;
- public class Graph extends JApplet{
- float[] elements={0.0f,-1.0f,0.0f,-1.0f,4.f,-1.0f,0.0f,-1.0f,0.0f};
- Image img;
- int w;
- int h;
- MediaTracker mt;
- BufferedImage bimg;
-
-
- public void init(){
- getContentPane().setLayout(new BorderLayout());
- try{
- img=getImage(getDocumentBase(),"PIG2.GIF");
- mt=new MediaTracker(this);
- mt.addImage(img,0);
- mt.waitForAll();
- w=img.getWidth(this);
- h=img.getHeight(this);
- //bi的存在是为了要把img转换成BufferedImage.这招瞒有用
- BufferedImage bi= new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
- Graphics2D big=bi.createGraphics();
- big.drawImage(img,0,0,this); //把img画到bi 的缓冲区
-
- bimg=new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB); //存卷积后的BufferedImage
- Kernel kernel=new Kernel(3,3,elements); //根据elements建个3X3的矩阵
- ConvolveOp cop=new ConvolveOp(kernel,ConvolveOp.EDGE_NO_OP,null); //ConvolveOp 专门用于图像的卷积
- cop.filter(bi,bimg); //过滤后生成新的BufferedImage
- //biop=new AffineTransformOp(at,AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
-
-
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- public void paint(Graphics g){
- Graphics2D g2=(Graphics2D)g;
- g2.drawImage(img,0,0,w,h,this);
- g2.drawImage(bimg,w,0,w,h,this);
-
- }
- }
- [img]http://img.javaxxz.com/2014/10/2/141417672.jpg[/img]
-
复制代码
源码下载:http://file.javaxxz.com/2014/10/2/141418359.zip |
|