2013-09-21 30 views
1

我一直在试图制作一个宏来计算图像中的单元格。但是,我很难消除单元之间的重叠,并且程序要区分这些块。ImageJ计数聚集的单元格

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

普莱斯帮助(或者与第一或第二的代码!)谢谢! :)

这是我正在分析的图像。 enter image description here

回答

3

重叠对象可能是一个棘手的问题。 Fiji wiki page on Segmentation讨论了接近图像分割的两种主要方法:Trainable Weka Segmentation插件和更灵活的基于宏的工作流程。到目前为止,你的尝试更多地落入后一类。在你的情况下,我会建议给前者一个尝试。

我打得有点与可训练Weka中分割并得到了一些具有潜力,但仍然还未足够好,结果:

Trainable Weka Segmentation

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

这里只有2类的面膜:

Mask

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

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

如果您无法使第2类停止识别膜,您可以通过分析该特定形状的掩模本身以将二元单元轮廓形状归结为单元中心来跟进。也许有一个形态学操作员会帮助我,但我不是专家,所以我建议询问ImageJ mailing list哪些专家阅读。

您可以查看哪些可能有助于您的分析的另一个项目是CellProfiler。它提供了一套优秀的图像处理模块,他们还有一个出色的响应式论坛,您可以在这里寻求具体数据的帮助。

+0

谢谢!我仍然必须自己尝试。我只有一个问题,一旦我“训练”它,我可以在宏中使用它吗?谢谢 – Kaye11

+0

@ Kaye11当然。请参阅[可训练的Weka细分文档](http://fiji.sc/Trainable_Weka_Segmentation#Macro_language_compatibility)以获取完整详细信息。 – ctrueden