我一直在尝试制作用于计算图像中单元格的宏。但是,我很难去除单元格之间的重叠,以及程序区分块。
run("8-bit", "stack");
run("Subtract Background...", "rolling=5 light sliding stack");
run("Median...", "radius=1 stack");
run("Unsharp Mask...", "radius=0.8 mask=0.50 stack");
run("Invert LUT");
run("Auto Threshold", "method=Yen white stack");
run("Erode");
run("Erode");
run ("Watershed");
run("Analyze Particles...", "size=200-2000 circularity=0.50-1.00 show=[Count Masks] display exclude clear summarize add in_situ");
我在一堆图像上使用宏。
我也尝试过使用GreyscaleReconstruct,但我也没那么成功。我用过这段代码
run("Open...");
selectWindow("A.png");
setBatchMode(true);
a=getTitle();
run("8-bit");
run("Invert LUT");
run("Gaussian Blur...", "sigma=2");
run("Duplicate...", "title=_seed");
run("Minimum...", "radius=3");
run("GreyscaleReconstruct ", "mask="+a+" seed=_seed create");
imageCalculator("Subtract create", a,"_seed");
selectWindow("Result of "+a);
rename("WhiteTopHatReconstructed");
run("Auto Threshold", "method=Otsu white");
setBatchMode(false);
run("Analyze Particles...", "size=200-2000 circularity=0.50-1.00 show=[Count Masks] display exclude clear summarize add in_situ");
请求帮助(使用第一个或第二个代码!)谢谢! :)
以下是我正在分析的内容的图像。
答案 0 :(得分:3)
重叠对象可能是一个棘手的问题。 Fiji wiki page on Segmentation讨论了两种主要的图像分割方式:Trainable Weka Segmentation插件,以及更灵活的基于宏的工作流程。到目前为止,您的尝试更多地属于后一类。在你的情况下,我建议尝试给前者。
我使用了Trainable Weka Segmentation进行了一些尝试,得到了一些潜在的,但仍然不够好的结果:
我将图像分为四类:背景,中心的暗区(“blob”),细胞本身(“1级”)和贯穿每个细胞的中线(“2级”)。我的想法是隔离那些中线,因为从中它们更容易找到细胞中心,并且你的细胞形状非常规则。一旦你有了中心,重叠细胞的问题就会大大消失。由于中线是方向性的,你甚至可以计算细胞方向的角度,如果这对你的分析有用的话。
这是一个只有2级的面具:
不幸的是,在我第一次尝试时,单元格边界也被训练为第2类,但是通过更多调整可能可以消除这个问题。您还可以在Settings
对话框中控制用于分类的图像特征,这可能有助于分类。
一旦你有一个足够好的分类器,你可以保存它(Save classifier
)并批量应用于更多的图像(Apply classifier
)。所有可训练的Weka分段也可以从脚本和宏中使用,因此如果需要,您可以将它与一些预处理和/或后处理相结合。
如果你不能让第2级停止识别一般的膜,你可以跟进通过分析该特定形状的面膜本身,将二进制细胞轮廓形状归结为细胞中心。也许有一个形态学运算符会在这里提供帮助,但我不是专家,所以我建议在ImageJ mailing list询问几个这样的专家所读的内容。
您可以查看哪些可能有助于您的分析的项目是CellProfiler。它提供了一套出色的图像处理模块,它们还有一个出色的响应式论坛,您可以在这里寻求有关此类特定数据的帮助。