ImageJ>MultiStackRegの使い方
複数のチャンネルを同時に画像取得した場合(例:GFP、RFP、iRFP)、それぞれを別々にStackRegで画像ブレを補正(registration)しようとすると、最終的にそれぞれのチャンネルがうまくマージできなくなる。FRET/CFPなどのRatio画像を作るときや、KTRなどで定量的な画像解析をするときにこれは致命的になる。
そこで、1つのチャンネルでStackRegをかけて、それと全く同じように別のチャンネルをregistrationするMultiStackRegというマクロがあったので試してみたら案外うまくいった。
①こちらでMultiStackReg1.45.jarをダウンロードする。
②これは、StackReg.jarとTurboReg.jarも必要なので、2つともダウンロードする。
③どちらも、Fiji.app > plugin のフォルダに入れる。
④Fiji/ImageJを立ち上げる。
MultiStackRegは私のFijiではPluginsのところには現れなかったが、検索はできるようになった。Ctr + L で検索すると出てくる。
⑤MultiStackRegのプラグインを立ち上げると、以下のような感じになる。
https://gyazo.com/d4ad8bf6499e4b2a58d629c9e1cea374
stack_1 に対象となる画像ファイルを入れる
action_1にAlignを選択。要するに、普通にstackregをかける。
file_1はoptionだけど、ここにstackregをかけたときのずらした量の情報(matrix)が保存される。
pathとファイル名も含めて記述する。デフォルトのフォルダは、Fiji.app の直下のフォルダ。
stack_2には何も入れない。2 chだけなら、1を基準にして2をalignするということもできると思われる。やってないけど。
transformationには平行移動だけでalignするTranslationを選択。Rigid bodyもありだけど回転も入る。gmaryu.icon 編: Transformation→ Translation
最後にsave transformation fileを選択すると、file_1の指定したファイル(ずれの情報入ったファイル)が保存される。拡張子無しでもいけた。
2回目以降(ずれの情報が入ったファイルがある場合)には、
stack_1 に対象となる画像ファイルを入れる
action_1にLoad Transforamtion Fileを選択。
file_1はTransformation fileが入ったpathとファイル名も含めて記述する。
stack_2には何も入れない。入れてもうまくいくかもしれないけど。
2回目はずれの情報が分かっているので、結構早くずれを直してくれる。
マクロにするとこんな感じ。もちろん、ファイルのバッチ処理もこれをいじるとできる。ただし、時間がかかる・・・。
code:multistackreg_macro.js
// ↑ 本当はこのマクロの拡張子は .ijm (ImageJ macro)
// 画像が置いてあるフォルダ
directry = "C:\\imagingdata"
// 画像のファイルのリスト
fileNameList = newArray(3);
fileNameList0 = "GFP"; fileNameList1 = "RFP"; fileNameList2 = "iRFP"; // チャンネルごとのループ
for (waveIndex = 0; waveIndex < 4; waveIndex += 1){
// ファイル名
// フォルダのパス+ファイル名
totalPath = directry + "\\" + totalFilename + ".tif";
// 画像を開く
open(totalPath);
if (waveIndex == 0){
// 1つ目の基準となるチャンネルのアラインメント
// stack_1 に対象となる画像ファイルを入れる
// action_1にAlignを選択。要するに、普通にstackregをかける。
// file_1はoptionだけど、ここにstackregをかけたときのずらした量の情報(matrix)が保存される。
// pathとファイル名も含めて記述する。デフォルトのフォルダは、Fiji.app の直下のフォルダ。
// stack_2は情報を入れない。
// transformationには平行移動だけでalignするTransforamtionを選択。Rigid bodyもありだけど回転も入る。
// 最後にsaveを選択すると、file_1の指定したファイルが保存される。拡張子無しでもいけた。
// スペースの位置がとても大事なので気を付けること!
run("MultiStackReg",
"stack_1=+ totalFilename +".tif " +
"file_1=C:\\Fiji.app\\ref " +
"stack_2=None action_2=Ignore file_2=[] " +
} else {
// 2つ目以降のチャンネルのアラインメント
// stack_1 に対象となる画像ファイルを入れる
// file_1に上で保存したファイル(pathも含めて)を選択する
// スペースの位置がとても大事なので気を付けること!
run("MultiStackReg",
"stack_1=+ totalFilename +".tif " +
"file_1=C:\\Fiji.app\\ref " +
"stack_2=None action_2=Ignore file_2=[] " +
}
saveAs("Tiff", directry + "\\Reg-" + totalFilename + ".tif");
run("Close All");
}
Data: 20210222
文責: 青木