6

ImageJ の画像のデータセット セット (.tif 画像のスタック、約 130 フレーム) を調べていますが、データセットに問題があります。これは一連の顕微鏡画像で、各フレームは前のフレームの上下約 3 ~ 4 マイクロメートルの平面です。データセットを深く掘り下げると、光の散乱によって背景が明るくなり、標本の主な特徴が暗くなります。

ただし、ImageJ の明るさとコントラストの機能は、画像のスタック全体を表すヒストグラムを使用します。スタックの奥深くにある画像で [自動] と [リセット] をクリックすると、結果として得られるコントラストは完璧です。すべての機能が非常によく点灯します。ただし、スタックの最初に戻ると、ほとんどの機能が飽和状態になっています。

スタック内のさまざまなポイントからいくつかの画像を手動で抽出し、それぞれに対して Auto->Reset in Brightness & Contrast を個別に実行してから、それらをスタックに再変換しようとしましたが、非常にしっかりしているように見えます。スタック全体に対してプログラムで (プラグインなどを使用して) これを行うにはどうすればよいですか? 関連する API 呼び出しは何ですか?

4

3 に答える 3

4

このようなスクリプトを書き始める良い方法は、ImageJ のマクロ レコーダーを使用することですPlugins > Macros > Record ...。この例では、Record:オプション ボックスを に切り替えたと仮定していますJavaScriptが、ImageJ マクロ言語や Java でプラグインを作成することに慣れている場合は、他のいずれかを選択することをお勧めします。次に、画像を開いてImage > Stacks > Set Slice ...スライス 20 を使用して選択すると、次のように表示されます。

imp.setSlice(20);

...レコーダーに表示されます。実行Image > Adjust > Brightness/Contrast...して を選択すると、 0.35% の飽和ピクセルを維持Autoして実行するのと同等であることがレコーダーに表示されます。Enhance Contrastお気づきのように、これに関する問題は、そのスライスだけでなく、スタック全体の最小値と最大値を調整することです。ただし、 を実行するEnhance Contrastと、別のオプションで実行できますProcess > Enhance ContrastImageJ ドキュメント wikiのそのオプションに関するセクションでは、スタックの最小値と最大値を設定するのではなくピクセル値を変更する場合は、「正規化」オプションを選択する必要があると説明しています。代わりにそれを行うことを選択した場合、マクロ レコーダーは次のように記録します。

imp.setSlice(20);
IJ.run(imp, "Enhance Contrast", "saturated=0.35 normalize");

...そして、スライス 20 だけが変更されていることがわかるはずです。次に、すべてのスライスで同じ拡張機能を実行するループでそれをラップできます。

var imp = IJ.getImage();
var n = imp.getStackSize();

for( var i = 0; i < n; ++i) {
    imp.setSlice(i+1);
    IJ.run(imp, "Enhance Contrast", "saturated=4 normalize");
}

(フィジーを使用している場合、スクリプト エディタ (例: 経由File > New > Script) は、そのようなスクリプトを試す簡単な方法です。)

もちろん、正規化オプションを使用すると、ピクセル値が変更されます。つまり、この場合、情報が失われることになるため、得られたスタックを定量的な結果には使用しません。

それが何かの役に立てば幸いです。

于 2011-01-03T21:59:25.223 に答える
1

また、 CellProfilerを使用して画像を処理することも検討してください。CP があなたがしようとしていることを直接実行できない場合でも、CP から実際に ImageJ コマンド、プラグイン、およびマクロを実行できます。

非常に単純な方法として、LoadImages と RunImageJ だけを持つ CP パイプラインを作成できます。

于 2011-09-30T19:35:41.390 に答える