2011-08-23 1 views
0

Je suis très très nouveau à l'imageJ mais connais un peu Java. Essentiellement, je veux ouvrir un fichier à partir d'un OpenDialog afficher l'image, puis brouiller l'image et afficher l'image floue qui en résulte. Mon programme compile, cependant les deux images se ressemblent. Quelqu'un peut-il aider? Comment faire pour que le programme affiche une image floue et non floue?Je souhaite afficher une image floue dans l'imageJ. Pourquoi ça ne marche pas?

import ij.*; 
import ij.io.*; 
import ij.process.*; 
import ij.gui.*; 
import java.awt.*; 
import ij.plugin.*; 
import java.util.*; 
import java.io.*; 


public class opens_ implements PlugIn { 

    ImagePlus imp; 

    public void run(String arg){ 
    OpenDialog od = new OpenDialog("Open.....", arg); 
    Opener op = new Opener(); 
    String directory = od.getDirectory(); 
    String filename = od.getFileName(); 
    if (filename==null) return ; 
    imp = op.openImage(directory, filename); 
    imp.show(); 

    ImageProcessor improc = imp.getProcessor(); 
    improc.smooth(); 

    ImagePlus alter = new ImagePlus("alter", improc) ; 
    alter.show(); 


    } 

} 

Merci

Bateman

+0

Les deux images sont affichées et aucune n'est floue. – bateman

Répondre

4

Lorsque vous appelez .smooth() sur improc, cet appel modifie les données d'image contenues par le ImageProcessor, qui est affiché par le ImagePlus d'origine. Ensuite, vous créez un nouveau ImagePlus basé sur le même ImageProcessor, donc bien sûr, c'est l'image floue plutôt que l'original. Si vous ne voulez pas être modifié d'origine, vous pouvez dupliquer le ImageProcessor avant lissage, par exemple en changeant la ligne:

ImageProcessor improc = imp.getProcessor(); 

... à:

ImageProcessor improc = imp.getProcessor().duplicate(); 

Mise à jour: Lorsque j'ai testé votre code, j'ai vu les deux images floues. Si vous voyez toujours les images d'origine, essayez d'ajouter ce qui suit à la fin de votre méthode d'exécution:

imp.updateAndDraw() 
alter.updateAndDraw() 
+0

Les deux images sont affichées et aucune n'est floue. – bateman

+0

@bateman: J'ai ajouté une suggestion supplémentaire à ma réponse. –

+0

Merci, je comprends que updateAndDraw() est également censé afficher les images, mais quand je supprime imp.show() du code ci-dessus et ajoute imp.updateAndDraw() et alter.updateAndDraw(), le programme compile mais ne montre pas images. D'autres conseils? Merci pour votre temps. – bateman

Questions connexes