Ho utilizzato il seguente codice x visualizzare un immagine filtrata ma nn ottengo nulla ottengo un immagine nera.Qualcuno mi sa aiutare?oppure mi sa indicare un altro modo per poter filtrare l'immagine?

import com.pearsoneduc.ip.op.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
import java.awt.color.ColorSpace;



class Esempio2 extends Canvas implements ActionListener
{

ImageFFT fft;
BufferedImage leggi;
BufferedImage immagine;
BufferedImage outimage;


public Esempio2 (String imageFile) {

try
{
leggi = ImageIO.read(new File(imageFile));
/*ColorSpace space = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp operation = new ColorConvertOp ( space, null);
BufferedImage immagine = operation.filter(leggi, null);*/


immagine=new BufferedImage(leggi.getWidth(),leggi.getHeight(),B ufferedImage.TYPE_BYTE_GRAY);


}
catch (IOException e) {};
}


public Dimension getPreferredSize()
{

int width = leggi.getWidth(this);
int height = leggi.getHeight(this);



return new Dimension(width,height);
}

public void paint(Graphics g)
{
g.drawImage(leggi,0,0,this);
}


public void actionPerformed(ActionEvent ev)
{

try{
fft=new ImageFFT(immagine);
fft.transform();
//System.out.println("WWW");
fft.butterworthLowPassFilter(1,0.1d);
fft.transform();
leggi=fft.toImage(null);
repaint();

}
catch(Exception e){
System.out.println("eccezione");
}


}


public static void main(String[] args)
{

Esempio2 es =new Esempio2 ("immagineoriginale.jpg");

Frame f = new Frame("Esempio1");

f.setLayout(new BorderLayout());
f.add(es);
Button b = new Button("fft");
f.add(BorderLayout.SOUTH,b);

b.addActionListener(es);

f.pack();

f.setVisible(true);
}

}