问题描述
样本中存在人工制品,导致细胞内非常明亮的区域并非基于我感兴趣的信号。
由于这些伪影的强度(亮度)远高于我感兴趣的信号强度,我只想将所有高于我将选择的任意值的像素归零。
所以我想要在逻辑上执行类似操作的宏:
对于每个切片:
对于每个像素:
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