2011-08-23 33 views
0

我對imageJ非常非常新,但知道一點Java。我想在imageJ中顯示模糊的圖像。爲什麼這不起作用?

本質上我想從OpenDialog打開一個文件來顯示圖像,然後模糊圖像並顯示結果模糊的圖像。我的程序編譯,但是這兩個圖像看起來是一樣的。任何人都可以幫忙嗎?我該如何讓程序顯示模糊不清的圖像?

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(); 


    } 

} 

感謝

貝特曼

+0

兩個圖像都顯示出來,並且都不模糊。 – bateman

回答

4

當你調用.smooth()improc,該呼叫改變了由ImageProcessor,正由原始ImagePlus顯示包含的圖像數據。然後,您將基於相同的ImageProcessor創建一個新的ImagePlus,因此它當然是模糊的圖像而非原始圖像。如果你不想讓原來被改變,那麼你就可以平滑之前通過改變線路重複ImageProcessor,例如:

ImageProcessor improc = imp.getProcessor(); 

...到:

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

更新:當我測試你的代碼時,我看到兩個圖像都是模糊的。如果仍然看到原始圖像,請嘗試將下列內容添加到運行方法的末尾:

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

這兩個圖像都顯示並且都不模糊。 – bateman

+0

@bateman:我在我的回答中增加了一個提示。 –

+0

謝謝,我明白,updateAndDraw()也應該顯示圖像,但是當我從上面的代碼中刪除imp.show()並添加imp.updateAndDraw()和alter.updateAndDraw(),程序編譯但顯示不圖片。還有什麼建議嗎?感謝您的時間。 – bateman

相關問題