1

我一直在尝试制作一个宏来计算图像中的单元格。但是,我很难消除单元格之间的重叠,也很难让程序区分这些块。

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"); 

请帮助(使用第一个或第二个代码!)谢谢!:)

这是我正在分析的图像。在此处输入图像描述

4

1 回答 1

3

重叠的对象可能是一个棘手的问题。关于分割的斐济 wiki 页面讨论了处理图像分割的两种主要方法:可训练的Weka 分割插件和更灵活的基于宏的工作流程。到目前为止,您的尝试更多地属于后一类。在您的情况下,我建议尝试前者。

我玩了一些可训练的 Weka 分割,得到了一些有潜力但还不够好的结果:

可训练的 Weka 分割

我将图像分为四类:背景、中心的暗区(“blob”)、细胞本身(“1 类”)和穿过每个细胞的中线(“2 类”)。我的想法是分离那些中线,因为从中更容易找到细胞中心,而且你的细胞形状非常规则。一旦你有了中心,重叠单元格的问题就基本上消失了。由于中线是有方向的,您甚至可以计算单元方向的角度,如果这对您的分析有用的话。

这是只有第 2 类的面具:

面具

不幸的是,在我第一次尝试时,单元格边界也被训练为 2 级,但通过更多的调整也许可以消除这个问题。Settings您还可以控制在对话框中使用哪些图像特征进行分类,这可能有助于分类。

一旦你有一个足够好的分类器,你就可以保存它(Save classifier)并将它批量应用到更多图像(Apply classifier)。所有可训练的 Weka 分割也可以从脚本和宏中使用,因此如果需要,您可以将其与一些预处理和/或后处理结合使用。

如果您不能让第 2 类停止识别膜,您可能可以通过分析该特定形状的面具本身来跟进,以将二进制细胞轮廓形状归结为细胞中心。也许这里有一个形态学运算符会有所帮助,但我不是专家,所以我建议在几位这样的专家阅读的ImageJ 邮件列表上询问。

您可以查看的另一个可能对您的分析有帮助的项目是CellProfiler。它提供了一套出色的图像处理模块,它们还有一个出色且响应迅速的论坛,您可以在其中就此类特定数据寻求帮助。

于 2013-09-26T17:31:55.883 回答