在 ImageJ 中,如何将任何像素强度大于整个图像中某个任意值的像素值设置为零?

问题描述

我有一堆荧光标记的细胞。

样本中存在人工制品,导致细胞内非常明亮的区域并非基于我感兴趣的信号。

由于这些伪影的强度(亮度)远高于我感兴趣的信号强度,我只想将所有高于我将选择的任意值的像素归零。

所以我想要在逻辑上执行类似操作的宏:

对于每个切片:

对于每个像素:

 if pixel intensity>150 then set pixel=0

我正在使用 imageJ 宏语言进行编码。我想避免在这部分使用 ROI,因为我已经有代表每个单元格的 ROI,并且正在我的脚本中循环它们。

我认为这应该很简单,但现在我尝试的解决方案非常麻烦;通过阈值处理,分析粒子,生成 ROI,选择每个 ROI,然后从每个 ROI 中减去值(例如 150)。

知道这是如何以简单的方式完成的吗?

解决方法

使用选择和阈值来解决问题:

HotPix = 150; Stack.getStatistics(voxelCount,mean,min,StackMax,stdDev); setThreshold(HotPix,StackMax); //your thresholds here for (i = 1; i <= nSlices; i++) { setSlice(i); run("Create Selection"); if (selectionType() != -1) { run("Set...","value=0"); } run("Select None"); } resetThreshold;

olsution 来自 imageJ 论坛上的 @antonis:https://forum.image.sc/t/how-to-delete-all-pixels-or-set-to-zero-in-a-roi-which-are-above-a-certain-value/51173/5

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...