📄 中值滤波.txt
字号:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
public class zzlb extends Frame{
Image im,tmp;
int i,iw,ih;
int[] pixels;
boolean flag=false;
public zzlb(){
Panel pdowm;
Button load,run,save,quit;
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
pdowm = new Panel();
pdowm.setBackground(Color.lightGray);
load = new Button("装载图像");
run = new Button("中值滤波");
save = new Button("保存");
quit = new Button("退出");
this.add(pdowm,BorderLayout.SOUTH);
pdowm.add(load);
pdowm.add(run);
pdowm.add(save);
pdowm.add(quit);
load.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jLoad_ActionPerformed(e);
}
});
run.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jRun_ActionPerformed(e);
}
});
save.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jSave_ActionPerformed(e);
}
});
quit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
jQuit_ActionPerformed(e);
}
});
}
public void jLoad_ActionPerformed(ActionEvent e){
MediaTracker tracker = new MediaTracker(this);
im=Toolkit.getDefaultToolkit().getImage("Color.jpg");
tracker.addImage(im,0);
try{
tracker.waitForID(0);
}catch(InterruptedException e2){e2.printStackTrace();}
iw=im.getWidth(this);
ih=im.getHeight(this);
pixels=new int[iw*ih];
try{
PixelGrabber pg = new PixelGrabber(im,0,0,iw,ih,pixels,0,iw);
pg.grabPixels();
}catch (InterruptedException e3){
e3.printStackTrace();
}
ImageProducer ip=new MemoryImageSource(iw,ih,pixels,0,iw);
tmp=createImage(ip);
flag=true;
repaint();
}
public void jRun_ActionPerformed(ActionEvent e){
try{
PixelGrabber pg = new PixelGrabber(im,0,0,iw,ih,pixels,0,iw);
pg.grabPixels();
}catch (InterruptedException e3){
e3.printStackTrace();
}
ColorModel cm=ColorModel.getRGBdefault();
for(i=1;i<ih-1;i++)
{
for(int j=1;j<iw-1;j++)
{
int red,green,blue;
int alpha=cm.getAlpha(pixels[i*iw+j]);
int red2=cm.getRed(pixels[(i-1)*iw+j]);
int red4=cm.getRed(pixels[i*iw+j-1]);
int red5=cm.getRed(pixels[i*iw+j]);
int red6=cm.getRed(pixels[i*iw+j+1]);
int red8=cm.getRed(pixels[(i+1)*iw+j]);
if(red4>=red5){
if(red5>=red6){red=red5;}
else{
if(red4>=red6){red=red6;}
else{red=red4;}
}}
else{
if(red4>red6){red=red4;}
else{
if(red5>red6){red=red6;}
else{red=red5;}
}}
int green2=cm.getGreen(pixels[(i-1)*iw+j]);
int green4=cm.getGreen(pixels[i*iw+j-1]);
int green5=cm.getGreen(pixels[i*iw+j]);
int green6=cm.getGreen(pixels[i*iw+j+1]);
int green8=cm.getGreen(pixels[(i+1)*iw+j]);
if(green4>=green5){
if(green5>=green6){green=green5;}
else{
if(green4>=green6){green=green6;}
else{green=green4;}
}}
else{
if(green4>green6){green=green4;}
else{
if(green5>green6){green=green6;}
else{green=green5;}
}}
int blue2=cm.getBlue(pixels[(i-1)*iw+j]);
int blue4=cm.getBlue(pixels[i*iw+j-1]);
int blue5=cm.getBlue(pixels[i*iw+j]);
int blue6=cm.getBlue(pixels[i*iw+j+1]);
int blue8=cm.getBlue(pixels[(i+1)*iw+j]);
if(blue4>=blue5){
if(blue5>=blue6){blue=blue5;}
else{
if(blue4>=blue6){blue=blue6;}
else{blue=blue4;}
}}
else{
if(blue4>blue6){blue=blue4;}
else{
if(blue5>blue6){blue=blue6;}
else{blue=blue5;}
}}
pixels[i*iw+j]=alpha<<24|red<<16|green<<8|blue;
}
}
ImageProducer ip=new MemoryImageSource(iw,ih,pixels,0,iw);
tmp=createImage(ip);
flag=true;
repaint();
}
public void jSave_ActionPerformed(ActionEvent e){
ImageIcon ii=new ImageIcon("copyColor.jpg");
ii.setImage(tmp);
}
public void jQuit_ActionPerformed(ActionEvent e){
System.exit(0);
}
public void paint(Graphics g){
if(flag){
g.drawImage(tmp,50,50,this);
}else{ }
}
public static void main(String[] args){
zzlb mi=new zzlb();
mi.setSize(300,300);
mi.show();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -