所需要的工具就是fiji這個特別的imagej。
下載位置:https://fiji.sc/
它預載了Trainable Weka Segmentation這個plugin,我就是用這個plugin來偵測出氣孔位置。然後再用imagej的巨集(Macro),把偵測出的氣孔存成單張圖片。
整個流程我會用四部影片來說明:
機器學習的過程一看名字就覺得好複雜,但是透過這個plugin其實很簡單。就是你先教機器那個是保衛細胞,哪些是表皮細胞,然後訓練機器找出規則,讓它自己找出其他的保衛細胞,訓練好的分類器(Classifier),可以用在同類型的其他圖片上找氣孔。
第一部影片是針對單張圖片做分類器的訓練,第二部則是用多張圖片做成Stack,套用已經訓練的分類器直接找出氣孔。
第三部影片是利用分類器分類出來的圖片轉成ROI Manager的選取區,就可以在原圖上找到氣孔位置。這部影片會輪流示範單張圖片和多張圖片疊成的Stack要怎麼做這件事。
第四部影片是利用巨集來把單個氣孔裁切成單張圖,Macro是用來簡化重複工作的,首先利用record macro的方式找出每個滑鼠點擊的指令的文字命令是什麼,影片裡會教怎麼找,然後利用迴圈重複執行就可以。
影片中使用的Macro是這個,使用者要根據自己的狀況改一下檔名和存檔位置
for (i=0; i<roiManager("count"); ++i) {
roiManager("Select", i);
run("Duplicate...", "title=crop");
run("Make Inverse");
setForegroundColor(0, 0, 0);
run("Fill", "slice");
saveAs("Tiff", "rticle_"+(i+1)+".tif");
close();
//Next round!
selectWindow("cell.jpg");
}
影片中使用的Macro是這個,使用者要根據自己的狀況改一下檔名和存檔位置
for (i=0; i<roiManager("count"); ++i) {
roiManager("Select", i);
run("Duplicate...", "title=crop");
run("Make Inverse");
setForegroundColor(0, 0, 0);
run("Fill", "slice");
saveAs("Tiff", "rticle_"+(i+1)+".tif");
close();
//Next round!
selectWindow("cell.jpg");
}
如果你有幾十張顯微照片,每張照片都有上千個氣孔,善用以上的流程,其實幾分鐘就可以做完這件事情了