由于聚类和像素值被切断而难以计数单元格

时间:2014-06-04 17:38:27

标签: image-processing macros cluster-analysis imagej

编辑:

我继续处理我的问题以及其他事情,并且已经取得了重大进展。使用ImageJwiki上提供的一个Ashby博士的宏,并使用我自己的一些临时代码,我现在可以对Hoescht,Calcein AM和Ethidium Homodimer污渍拍摄的图像进行批处理,并获得对物体的正确识别。减少暴露时间和使用的污渍水平(特别是钙黄绿素AM)有助于我之前处理的像素值减少。尽管如此,宏仍然存在区分丛集细胞的问题。为了解决这个问题,我想在我的宏中实现一个命令,它根据我们单元格的平均大小划分它识别为一个单元格的单元格簇。唯一的问题是,在我所有的阅读中,我都没有看到任何提到这一点的东西。有没有人对如何实现此代码有任何想法?我已复制下面的宏。

  //get appropriate directories from user
  dir1 = getDirectory("Choose Source Directory ");
  dir2 = getDirectory("Choose Destination directory");
  list = getFileList(dir1);

    //give user an opportunity to adjust default parameters to better fit their application
    Dialog.create("Adjust for objective magnification");
    Dialog.addNumber("Objective Magnification (use 10 if unknown)", 10);
    Dialog.addMessage("\tIf needed particle size limits can be adjusted below \nLeave mag. at 10 if customizing particle size limits\n");
    Dialog.addNumber("Minimum particle size (pixels^2)",420);
    Dialog.addNumber("Maximum particle size (pixels^2)",1600);
    Dialog.addMessage("\tIn the following dialogs select \n first the Source Directory, \nthen a Destinaion directory for Results");
    Dialog.show();  

    //Assigning the entered values to variables   
    magnification=Dialog.getNumber();
    userMin=Dialog.getNumber();
    userMax=Dialog.getNumber();
    sMin=magnification*magnification/100*userMin;
    sMax=magnification*magnification/100*userMax;

setBatchMode(true);

for (i=0; i<list.length; i++){
    //print (list[i]);
    open(dir1+list[i]);
    name=File.nameWithoutExtension;
    //Prepare the image by removing any scale and making 8-bit
    run("Set Scale...", "distance=0 known=0 pixel=1 unit=pixel");
    run("8-bit");
    saveAs("Tiff", dir2+i+" Original "+name);//Saving with this naming scheme is required for   the MeLast macro to function
    //run("Brightness/Contrast...");
    setMinAndMax(50, 255);
    setOption("BlackBackground", false);
    run("Make Binary", "method=Yen background=Light calculate black");
    run("Watershed", "stack");
    //Analyze particles
    run("Analyze Particles...", "size="+sMin+"-"+sMax+" circularity=0.50-1.00 show=[Count Masks] display exclude include summarize");
    //Save the masks file
    saveAs("Tiff", dir2+i+" CountMask "+name);//Saving with this naming scheme is required for the MeLast macro to function
    close();
    //Save the thresholded image
    saveAs("Tiff", dir2+i+" Thresholded "+name);//Saving with this naming scheme is required for the MeLast macro to function

}
//Save the results
selectWindow("Results");
saveAs("Results", dir2+"ZZ Results.xls");

//Save the summary
selectWindow("Summary");
saveAs("Text", dir2+"Z Summary.txt");

2 个答案:

答案 0 :(得分:0)

您需要找到这些群集并分析每个群集,以使用单元格的空间信息和问题域中的其他特定信息来猜测该群集可能属于多少个单元格。我相信这是一项通常的图像分析任务。

对于截止像素值,我猜你可以将截止像素视为删失数据。但我不确定8位深度图像会有多大意义。

答案 1 :(得分:0)

还有另一个名为CellProfiler(http://www.cellprofiler.org)的免费开源程序,它有一些更专业的分离细胞的方法 - 比标准分水岭更先进。例如,请参阅此处手册的一部分:http://www.cellprofiler.org/CPmanual/IdentifyPrimaryObjects.html

也许CellProfiler可以完成这项工作,或者指向正确的算法以引入ImageJ宏。