Sie sind auf Seite 1von 42

Coding //V //MAIN PROGRAM // pck.java import java.applet.*; import java.awt.*; import java.awt.Event; import java.awt.image.

*; public class pck extends myframe { Insets insets; Image src,dst; ImageProducer filtered; String filename=null; public pck() {}

public void paint(Graphics g) { if(filename!=null) //g.drawImage(dst,insets.left,insets.top,this); g.drawImage(dst,insets.left+50,insets.top+50,this); }

public static void main(String a[]) { pck f=new pck(); f.show(); }

public void abc() { if(filename!=null) { src=Toolkit.getDefaultToolkit().getImage(filename); MediaTracker mt=new MediaTracker(this); mt.addImage(src,0); try { mt.waitForID(0); }catch(Exception e) { System.out.println("Image Loading Error!"+e); System.exit(0); } dst=src; repaint(); } }

public void addNotify() { super.addNotify(); insets=getInsets(); setBounds(50,50,500+insets.left,350+insets.top); }

public void open() { FileDialog fd=new FileDialog(this,"Open",FileDialog.LOAD); fd.setVisible(true); String dir=fd.getDirectory(); String fname=fd.getFile(); filename=dir+fname; abc(); }

public void org() { if(filename!=null) { dst=src; repaint(); }

public void ls() { if(filename!=null) { int iw,ih; int j1,j2,j3,j4; int pixels[]; int out[]; int errflag=0; iw=dst.getWidth(null); ih=dst.getHeight(null); pixels=new int[iw*ih]; try { PixelGrabber pg=new PixelGrabber(dst,0,0,iw,ih,pixels,0,iw); pg.grabPixels(); }catch(InterruptedException e){};

mydialog md=new mydialog(this,"Level Slicing",true,1); md.setSize(250,180); md.setVisible(true);

if((md.val1!=null)&&(md.val2!=null)&&(md.val3!=null)&&(md.val4!=null))

{ j1=Integer.parseInt(md.val1); if((j1<0)||(j1>255)) errflag=1;

j2=Integer.parseInt(md.val2); if((j2<0)||(j2>255)) errflag=1;

j3=Integer.parseInt(md.val3); if((j3<0)||(j3>255)) errflag=1;

j4=Integer.parseInt(md.val4); if((j4<0)||(j4>255)) errflag=1;

if(errflag==0) { LevelSlicing level=new LevelSlicing(j1,j2,j3,j4); out=level.slicedImage(pixels,iw,ih); dst=createImage(new MemoryImageSource(iw,ih,out,0,iw)); } else { errdialog ed=new errdialog(this,"Error!",true);

ed.setSize(200,100); ed.setVisible(true); } } repaint(); } }

public void cs() { if(filename!=null) { int iw,ih; int j1,j2,j3,j4; int pixels[]; int out[]; int errflag=0; iw=dst.getWidth(null); ih=dst.getHeight(null); pixels=new int[iw*ih]; try { PixelGrabber pg=new PixelGrabber(dst,0,0,iw,ih,pixels,0,iw); pg.grabPixels(); }catch(InterruptedException e){};

mydialog md=new mydialog(this,"Contrast Stretching",true,2); md.setSize(250,180); md.setVisible(true);

if((md.val1!=null)&&(md.val2!=null)&&(md.val3!=null)&&(md.val4!=null)) { j1=Integer.parseInt(md.val1); if((j1<0)||(j1>255)) errflag=1;

j2=Integer.parseInt(md.val2); if((j2<0)||(j2>255)) errflag=1;

j3=Integer.parseInt(md.val3); if((j3<0)||(j3>255)) errflag=1;

j4=Integer.parseInt(md.val4); if((j4<0)||(j4>255)) errflag=1;

if(errflag==0) { contrast c=new contrast(j1,j2,j3,j4); out=c.csimage(pixels,iw,ih);

dst=createImage(new MemoryImageSource(iw,ih,out,0,iw)); } else { errdialog ed=new errdialog(this,"Error!",true); ed.setSize(200,100); ed.setVisible(true); } } repaint(); } }

public void lp() { if(filename!=null) { int[] filter={1,1,1, 1,1,1, 1,1,1}; double multiplier=0.11111; convfilter cv=new convfilter(filter); filtered=cv.filteredImage(dst,multiplier); dst=createImage(filtered); repaint();

} }

public void hp() { if(filename!=null) { int[] filter={-1,-1,-1, -1,8,-1, -1,-1,-1}; double multiplier=1; convfilter cv=new convfilter(filter); filtered=cv.filteredImage(dst,multiplier); dst=createImage(filtered); repaint(); } }

public void hb() { if(filename!=null) { int[] filter={-1,-1,-1, -1,9,-1, -1,-1,-1};

double multiplier=1; convfilter cv=new convfilter(filter); filtered=cv.filteredImage(dst,multiplier); dst=createImage(filtered); repaint(); } }

public void hist() { if(filename!=null) { int iw,ih; int pixels[]; int out[]; iw=dst.getWidth(null); ih=dst.getHeight(null); pixels=new int[iw*ih]; try { PixelGrabber pg=new PixelGrabber(dst,0,0,iw,ih,pixels,0,iw); pg.grabPixels(); }catch(InterruptedException e){}; Histogram h=new Histogram(this,"Histogram"); h.set(pixels,iw,ih);

h.setSize(320,480); h.setVisible(true); } }

public void thr() { if(filename!=null) { int iw,ih; int pixels[]; int out[]; int j1; iw=dst.getWidth(null); ih=dst.getHeight(null); pixels=new int[iw*ih]; try { PixelGrabber pg=new PixelGrabber(dst,0,0,iw,ih,pixels,0,iw); pg.grabPixels(); }catch(InterruptedException e){};

mydialog md=new mydialog(this,"Thresholding",true,0); md.setSize(200,130); md.setVisible(true);

if(md.val1!=null) { j1=Integer.parseInt(md.val1); if((j1<0)||(j1>255)) { errdialog ed=new errdialog(this,"Error!",true); ed.setSize(200,100); ed.setVisible(true); } else { thresholding level=new thresholding(j1); out=level.tsimage(pixels,iw,ih); dst=createImage(new MemoryImageSource(iw,ih,out,0,iw)); } } //MODIFIED repaint(); } }

public void heq() { if(filename!=null) {

int iw,ih; int pixels[]; int out[]; iw=dst.getWidth(null); ih=dst.getHeight(null); pixels=new int[iw*ih]; try { PixelGrabber pg=new PixelGrabber(dst,0,0,iw,ih,pixels,0,iw); pg.grabPixels(); }catch(InterruptedException e){}; he heq=new he(); out=heq.equalize(pixels,iw,ih); dst=createImage(new MemoryImageSource(iw,ih,out,0,iw)); repaint(); } } public void neg() { if(filename!=null) { int iw,ih; int pixels[]; int out[]; iw=dst.getWidth(null); ih=dst.getHeight(null);

pixels=new int[iw*ih]; try { PixelGrabber pg=new PixelGrabber(dst,0,0,iw,ih,pixels,0,iw); pg.grabPixels(); }catch(InterruptedException e){}; Negator negator=new Negator(); out=negator.negatepixels(pixels,iw,ih); dst=createImage(new MemoryImageSource(iw,ih,out,0,iw)); repaint(); } }

public void gs() { if(filename!=null) { int iw,ih; int pixels[]; int out[]; iw=dst.getWidth(null); ih=dst.getHeight(null); pixels=new int[iw*ih]; try { PixelGrabber pg=new PixelGrabber(dst,0,0,iw,ih,pixels,0,iw);

pg.grabPixels(); }catch(InterruptedException e){}; grey g=new grey(); out=g.greyimage(pixels,iw,ih); dst=createImage(new MemoryImageSource(iw,ih,out,0,iw)); repaint(); } }

public void rotate() { if(filename!=null) { rotate1 rt=new rotate1(); dst=rt.rimage(dst); repaint(); } } }

ROTATE.JAVA

import java.io.*; import java.awt.*; import java.awt.event.*;

import java.awt.image.*; import java.awt.Image; import java.awt.geom.*;

public class rotate { int iw,ih; BufferedImage bimage=null,simage=null; public rotate() {}

public Image rimage(Image img) { GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); try { int transparency=Transparency.OPAQUE; GraphicsDevice gs=ge.getDefaultScreenDevice(); GraphicsConfiguration gc=gs.getDefaultConfiguration(); bimage=gc.createCompatibleImage(img.getWidth(null),img.getHeight(null),transpa rency); }catch(Exception e){}

if(bimage==null) { int type=BufferedImage.TYPE_INT_RGB; bimage=new BufferedImage(img.getWidth(null),img.getHeight(null),type);

} Graphics g=bimage.createGraphics(); g.drawImage(img,0,0,null); g.dispose();

AffineTransform tx=new AffineTransform(); tx.rotate(0.125,bimage.getWidth()/2,bimage.getHeight()/2);

AffineTransformOp op=new AffineTransformOp(tx,AffineTransformOp.TYPE_BILINEAR); bimage=op.filter(bimage,null);

return Toolkit.getDefaultToolkit().createImage(bimage.getSource()); } } // NEGATOR.JAVA FOR NEGATIVE

import java.applet.*; import java.awt.*; import java.awt.image.*;

public class Negator { int outpixels[]; public void Negator() {}

public int[] negatepixels(int inpixels[],int width,int height) { outpixels=new int[width*height]; for(int i=0;i<(width*height);i++) { int p=inpixels[i];

int r=0xff&(p>>16); r=(int)255-r;

int g=0xff&(p>>8); g=(int)255-g;

int b=0xff&(p); b=(int)255-b; outpixels[i]=(255<<24)|(r<<16)|(g<<8)|b; } return outpixels; } } GREY.JAVA

import java.awt.*; import java.awt.image.*; import java.applet.*;

public class grey { int outpixels[]; public grey() {} public int[] greyimage(int[] inpixels,int width,int height) { outpixels=new int[width*height]; for(int i=0;i<(width*height);i++) { int p=inpixels[i]; int r=0xff&(p>>16); int g=0xff&(p>>8); int b=0xff&(p); int y=(int)(.33*r+.56*g+.11*b);

r=(int)y; g=(int)y; b=(int)y;

outpixels[i]=(255<<24)|(r<<16)|(g<<8)|b; } return outpixels; } }

// CONTRACT.JAVA import java.awt.*; import java.awt.image.*; import java.applet.*;

public class contrast { int r1,s1,r2,s2; int slp1,slp2,slp3; public int outpixels[];

public contrast(int sd1,int sd2,int sd3,int sd4) { r1=sd1; s1=sd2; r2=sd3; s2=sd4;

slp1=(int)(s1/r1);

slp2=(int)((s2-s1)/(r2-r1)); slp3=(int)((255-s2)/(255-r2)); System.out.println("the value of spl1 is" +slp1); System.out.println("the value of spl2 is" +slp2); System.out.println("the value of spl3 is" +slp3); }

public int[] csimage(int[] inpixels,int width,int height) { outpixels=new int[width*height]; for(int i=0;i<(width*height);i++) { int p=inpixels[i]; //System.out.println("the value of p is" +p); int r=0xff&(p>>16); //System.out.println("the value of r is" +r); if((r>0)&&(r<=r1)) r=(int)(slp1*r);

else

if((r>r1)&&(r<r2)) r=(int)(slp2*(r-r1)+s1);

else

if((r>=r2)&&(r<=255)) r=(int)(slp3*(r-r2)+s2);

int g=0xff&(p>>8);

if((g>=0)&&(g<=r1)) g=(int)(slp1*g);

else

if((g>r1)&&(g<r2)) g=(int)(slp2*(g-r1)+s1);

else

if((g>=r2)&&(g<=255)) g=(int)(slp3*(g-r2)+s2);

int b=0xff&(p);

if((b>=0)&&(b<=r1)) b=(int)(slp1*b);

else

if((b>r1)&&(b<r2))

b=(int)(slp2*(b-r1)+s1);

else

if((b>=r2)&&(b<=255)) b=(int)(slp3*(b-r2)+s2);

outpixels[i]=(255<<24)|(r<<16)|(g<<8)|b; }

return outpixels; } } // CONVERTER.JAVA

import java.awt.*; import java.awt.Component; import java.awt.image.*; class convfilter implements ImageObserver { int[] oldpixels,newpixels; int w,h; PixelGrabber pg; MemoryImageSource mis; int index=0; int i00,i01,i02,i10,i11,i12,i20,i21,i22;

int p00,p01,p02,p10,p11,p12,p20,p21,p22; int w00,w01,w02,w10,w11,w12,w20,w21,w22;

public convfilter(int[] matrix) { w00=matrix[0]; w01=matrix[1]; w02=matrix[2]; w10=matrix[3]; w11=matrix[4]; w12=matrix[5]; w20=matrix[6]; w21=matrix[7]; w22=matrix[8]; } public boolean imageUpdate(Image img,int infoflags,int x,int y,int width,int height) { w=width; h=height; if(w!=-1&&h!=-1) { return false; } return true; }

public ImageProducer filteredImage(Image source,double mult) { boolean success; w=source.getWidth(null); h=source.getHeight(null); oldpixels=new int[w*h]; newpixels=new int[w*h]; pg=new PixelGrabber(source.getSource(),0,0,w,h,oldpixels,0,w); try { success=pg.grabPixels(0); }catch(Exception e) { System.out.println("Error in grabbing"+e); } index=w+1; for(int y=1;y<h-1;y++) { calc3x3offsets(); for(int x=1;x<w-1;x++) { p00=oldpixels[i00]; p01=oldpixels[i01]; p02=oldpixels[i02]; p10=oldpixels[i10]; p11=oldpixels[i11];

p12=oldpixels[i12]; p20=oldpixels[i20]; p21=oldpixels[i21]; p22=oldpixels[i22];

int newRed=applyWeights(16,mult); int newGreen=applyWeights(8,mult); int newBlue=applyWeights(0,mult);

newpixels[index++]=255<<24|newRed|newGreen|newBlue;

i00++; i01++; i02++; i10++; i11++; i12++; i20++; i21++; i22++; } index+=2; } mis=new MemoryImageSource(w,h,newpixels,0,w); return mis; }

final void calc3x3offsets() { i00=index-w-1; i01=i00+1; i02=i00+2; i10=index-1; i11=index; i12=index+1; i20=index+w-1; i21=i20+1; i22=i20+2; }

final int applyWeights(int shift,double multfactor) { double total=0; total+=((p00>>shift)&0xFF)*w00; total+=((p01>>shift)&0xFF)*w01; total+=((p02>>shift)&0xFF)*w02; total+=((p10>>shift)&0xFF)*w10; total+=((p11>>shift)&0xFF)*w11; total+=((p12>>shift)&0xFF)*w12; total+=((p20>>shift)&0xFF)*w20; total+=((p21>>shift)&0xFF)*w21; total+=((p22>>shift)&0xFF)*w22;

total=total*multfactor; if(total>255) total=255; if(total<0) total=0; return((int)total)<<shift; } } // BLURIMAGE.JAVA

import java.applet.*; import java.awt.*; import java.awt.image.*; /*<applet code=Blurimage.class width=300 height=400> <param name=img value=c:/Balaji.gif></applet>*/

public class Blurimage extends Applet { Image img; int cell[]; int cell1[]; int iw,ih; int tw,th; int rs,gs,bs,r,g,b,rgb; public void init()

{ try { img=getImage(getDocumentBase(),getParameter("img")); MediaTracker t=new MediaTracker(this); t.addImage(img,0); t.waitForID(0); iw=img.getWidth(null); ih=img.getHeight(null); cell=new int[iw*ih]; cell1=new int[iw*ih]; /*try { PixelGrabber pg=new PixelGrabber(img,0,0,iw,ih,cell,0,iw); pg.grabPixels(); }catch(InterruptedException e){};*/ for(int y=1;y<ih;y++) { for(int x=1;x<iw;x++) { rs=0; gs=0; bs=0; for(int k=-1;k<=1;k++) { for(int j=-1;j<=1;j++)

{ rgb=cell[(y*k)*iw+x+j]; r=(rgb >> 16)& 0xff; g=(rgb >> 8) & 0xff; b=rgb & 0xff;

rs+=r; gs+=g; bs+=b;

rs/=9; gs/=9; bs/=9; cell1[y*iw+x]=(0xff000000 | rs << 16 | gs << 8 | bs); } } } } img=createImage(new MemoryImageSource(iw,ih,cell1,0,iw)); repaint(); }catch(Exception e){} }} // ERRDILOG.JAVA

import java.awt.*; import java.awt.event.*;

class errdialog extends Dialog implements ActionListener { Label m1,a1; Button ok; public errdialog(Frame p,String title,boolean m) { super(p,title,m); Panel p1=new Panel(); Panel p2=new Panel();

setLayout(new BorderLayout()); m1=new Label("Values should be with in 0-255"); ok=new Button("Ok"); p1.add(m1); p2.add(ok);

add("North",p1); add("Center",p2);

ok.addActionListener(this); }

public void actionPerformed(ActionEvent ae) { String s=ae.getActionCommand();

if(ae.getSource() instanceof Button) { if(s.equals("Ok")) dispose(); } }

} //MAIN FRAME import java.awt.*; import java.awt.event.*;

abstract class myframe extends Frame implements ActionListener,WindowListener { MenuItem op,cls; MenuItem org,neg,ls,lp,hp,hb,hist,thr,gs,cs,rot,heq;

public myframe() { super("Image Enhancement"); MenuBar mb1=new MenuBar(); setMenuBar(mb1); Menu file=new Menu("File"); Menu image=new Menu("Image");

mb1.add(file);

mb1.add(image);

file.add(op=new MenuItem("Open")); file.add(cls=new MenuItem("Exit"));

image.add(org=new MenuItem("Original Image")); image.add(neg=new MenuItem("Negate")); image.add(gs=new MenuItem("Grey Scale")); image.add(rot=new MenuItem("Rotate")); image.add(ls=new MenuItem("Level Slicing")); image.add(cs=new MenuItem("Constrast Stretching")); image.add(thr=new MenuItem("Thresholding")); image.add(lp=new MenuItem("Low Pass Filter")); image.add(hp=new MenuItem("High Pass Filter")); image.add(hb=new MenuItem("High Boost Filter")); image.add(hist=new MenuItem("Histogram")); image.add(heq=new MenuItem("Histogram Equalizing")); //image.add(eng=new MenuItem("Enlarge"));

op.addActionListener(this); cls.addActionListener(this);

org.addActionListener(this); neg.addActionListener(this); gs.addActionListener(this);

rot.addActionListener(this); ls.addActionListener(this); cs.addActionListener(this); thr.addActionListener(this); lp.addActionListener(this); hp.addActionListener(this); hb.addActionListener(this); hist.addActionListener(this); heq.addActionListener(this); //eng.addActionListener(this); addWindowListener(this); }

public void actionPerformed(ActionEvent ae) { String s=ae.getActionCommand();

if(ae.getSource() instanceof MenuItem) { if(s.equals("Exit")) System.exit(0);

else

if(s.equals("Open")) open();

else

if(s.equals("Original Image")) org();

else

if(s.equals("Negate")) neg();

else

if(s.equals("Grey Scale")) gs();

else

if(s.equals("Rotate")) rotate();

else

if(s.equals("Level Slicing")) ls();

else

if(s.equals("Low Pass Filter")) lp();

else

if(s.equals("High Pass Filter")) hp();

else

if(s.equals("High Boost Filter")) hb();

else

if(s.equals("Histogram")) hist();

else

if(s.equals("Thresholding")) thr();

else

if(s.equals("Constrast Stretching")) cs();

else

if(s.equals("Histogram Equalizing")) heq();

} }

public void windowClosed(WindowEvent we) {} public void windowDeiconified(WindowEvent we) {} public void windowIconified(WindowEvent we) {} public void windowActivated(WindowEvent we) {} public void windowDeactivated(WindowEvent we) {} public void windowOpened(WindowEvent we) {} public void windowClosing(WindowEvent we) {

dispose(); System.exit(0); }

abstract void open(); abstract void org(); abstract void neg(); abstract void gs(); abstract void ls(); abstract void cs(); abstract void lp(); abstract void hp(); abstract void hb(); abstract void hist(); abstract void thr(); abstract void heq(); abstract void rotate(); //abstract void eng(); }

// MENUES

import java.awt.*; import java.awt.event.*;

class mydialog extends Dialog implements ActionListener

{ TextField thr,ls1,ls2,ls3,ls4; Label m1,a1; Button ok,can; String val1=null,val2=null,val3=null,val4=null; int t; public mydialog(Frame p,String title,boolean m,int i) { super(p,title,m); t=i; Panel p1=new Panel(); Panel p2=new Panel(); Panel p3=new Panel();

setLayout(new BorderLayout()); ok=new Button("Ok"); can=new Button("Cancel");

p2.setLayout(new FlowLayout()); p3.setLayout(new FlowLayout()); //MODIFIED p3.add(ok); p3.add(can);

if(i==1) a1=new Label("Enter Min and Max values of Output:");

else if(i==2) a1=new Label("Enter range of output Grey levels:");

if((i==1)||(i==2)) { m1=new Label("Enter range of Grey levels to be changed:");

ls1=new TextField(4);

ls1.setText("100"); ls2=new TextField(4);

ls2.setText("200"); ls3=new TextField(4);

ls3.setText("0"); ls4=new TextField(4);

ls4.setText("255");

p1.add(m1); p2.add(ls1); p2.add(ls2); p2.add(a1); p2.add(ls3);

p2.add(ls4); } else if(i==0) { m1=new Label("Enter Threshold value(0-255):"); ls1=new TextField(4); p1.add(m1); p2.add(ls1); }

add("North",p1); add("Center",p2); add("South",p3);

ok.addActionListener(this); can.addActionListener(this); }

public void actionPerformed(ActionEvent ae) { String s=ae.getActionCommand();

if(ae.getSource() instanceof Button) { if(s.equals("Ok"))

{ val1=ls1.getText(); if((t==1)||(t==2)) { val2=ls2.getText(); val3=ls3.getText(); val4=ls4.getText(); } dispose(); } else if(s.equals("Cancel")) dispose(); } }

Das könnte Ihnen auch gefallen