If statement 如何标记接触边缘的对象,以便在以后的分析中对其进行不同的处理

If statement 如何标记接触边缘的对象,以便在以后的分析中对其进行不同的处理,if-statement,macros,imagej,roi,If Statement,Macros,Imagej,Roi,我对所有高级ImageJ用户和开发人员都有一个挑战。在我的宏(请参见下面的宏)中,我想插入以下任务: 我正在分析ROI中的粒子和那些接触图片边缘的粒子/对象,我想在结果表的一个特殊列中用“*”标记。也许if句子可以完成任务,但我是一个纯粹的宏初学者,真的需要一些技巧 (我知道“在边上排除”选项,但我需要这些对象的面积来计算图像上所有面积的总和;但我需要排除它们来计算平均面积) id=getImageID(); 对于(i=0;i只需分别处理边缘接触粒子和内部粒子。通过将图像与所有粒子和排除接触粒子

我对所有高级ImageJ用户和开发人员都有一个挑战。在我的宏(请参见下面的宏)中,我想插入以下任务:

我正在分析ROI中的粒子和那些接触图片边缘的粒子/对象,我想在结果表的一个特殊列中用“*”标记。也许if句子可以完成任务,但我是一个纯粹的宏初学者,真的需要一些技巧

(我知道“在边上排除”选项,但我需要这些对象的面积来计算图像上所有面积的总和;但我需要排除它们来计算平均面积)

id=getImageID();

对于(i=0;i只需分别处理边缘接触粒子和内部粒子。通过将图像与所有粒子和排除接触粒子的图像进行异或,可以获得仅包含边缘接触粒子的图像

此宏将创建三个图像:一个包含所有粒子,一个不包含边缘接触粒子,另一个仅包含边缘接触粒子:

run("Blobs (25K)");
setThreshold(126, 255);
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Masks clear");
rename("all");
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Masks exclude clear");
rename("not touching");
imageCalculator("XOR create", "all","not touching");
rename("touching");
然后,您可以分别分析它们并添加标记:

selectWindow("touching");
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Outlines display clear in_situ");
for(row = 0; row < nResults; row++){
    setResult("touching", row, "*");
}

selectWindow("not touching");
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Outlines display in_situ");
选择窗口(“触摸”);
运行(“分析粒子…”,“大小=0.01-无限圆度=0.00-1.00显示=轮廓在原位显示清晰”);
对于(行=0;行
selectWindow("touching");
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Outlines display clear in_situ");
for(row = 0; row < nResults; row++){
    setResult("touching", row, "*");
}

selectWindow("not touching");
run("Analyze Particles...", "size=0.01-Infinity circularity=0.00-1.00 show=Outlines display in_situ");