2015-12-21 13 views
0

我在imagej中構建一個插件,在進行分析之前會對圖像執行一些預處理。我希望這個插件可以在單個圖像和堆棧上運行。這裏是我的插件代碼樣本至今:「製作二進制文件」在單個圖像和堆棧之間切換背景

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



public class My_Analysis implements PlugIn { 

    public void run(String arg) { 

     ImagePlus imp = IJ.getImage(); 
     IJ.run(imp, "Find Edges", "stack"); 
     Prefs.blackBackground = true; 
     IJ.run(imp, "Make Binary", "stack"); 
     IJ.run(imp, "Erode", "stack"); 
    } 
} 

還有更多在此之後,但它只是在參照分析,我不認爲這是相關的。另外,我在代碼的前面有一個GenericDialog,但也不認爲它是相關的,並且不想陷入樣本。當然,如果有人認爲這是必要的,我可以包括所有這些。

我的問題是,這個工作原理在一個圖像上很漂亮,但是製作二進制文件反轉了堆棧上的黑色/白色。我敢打賭,我可以簡單地將Prefs.blackBackground切換爲false,並且可以修復它,但是它不會在單個圖像上工作。

另一個信息是,如果我從製作二進制行中取出「堆棧」,它會彈出一個對話框,提示我選擇幾個選項,其中之一是背景是否是黑色。如果我選擇這個選項,它會正確執行Make Binary,但不會將其應用於整個堆棧或其他東西,因爲我最終只分析堆棧中第一個圖像和其餘圖​​像,很奇怪。

任何幫助將不勝感激。非常感謝你。

回答

1

我同意ImageJ1.x的這種行爲是不一致的。我不確定它是否是有意的,但可隨時在ImageJ forummailing list上報告,因此它可能會被修復。


的另一條信息是,如果我走了「堆」出來的 的製作二進制線,它會彈出打開一個對話框,提示我 選擇幾個選項,其中之一是是否背景是 黑色。

這確實是路徑工作解決方案在這裏:只需添加關鍵字black重現腳本或宏,例如行爲這個Groovy腳本運行在單個圖像和堆棧是相同的:

import ij.IJ; 
import ij.ImagePlus; 
import ij.Prefs; 

ImagePlus imp = IJ.getImage(); 
IJ.run(imp, "Find Edges", "stack"); 
Prefs.blackBackground = true; 
IJ.run(imp, "Make Binary", "stack black"); // this line changed 
IJ.run(imp, "Erode", "stack"); 

你被使用Macro recorder和運行過程所需要的關鍵字>二進制>在堆棧上製作二進制