科 / 研 / 图 / 像 / 处 / 理
在做荧光比率图时,需要两个图像做除法,之前的文章介绍了这一操作:
在做除法时,不可避免会遇到分母是 0 的情况,这会导致图像出现很多异常值。
这些异常值通常为 NaN、Infinity 或者一些特别大的值。
这篇文章会用做比率图的例子,来详细介绍一下怎样去除 NaN 以及 Infinity 这些异常值。
实现效果:
先上 Macro 代码,ijm 文件公众号后台回复“异常值”获取:
代码解析
代码最关键的部分是对 pixel value 的值进行判断:
value = getPixel(i, j);
if (isNaN(value)) {
setPixel(i, j, 0);
}
if (value>1000) {
setPixel(i, j, 0);
}
isNaN() 判断 pixel value 是否为 NaN。
如果 pixel value 过大,这里设置为 pixel value 大于 1000,说明这个 pixel 为异常值,直接赋零。从而去除 Infinity。
真正使用时需要根据实际情况调整这一参数。
除了利用 Macro 进行异常值的去除,ImageJ 中也自带了对这些异常值的处理:
https://imagej.net/ij/docs/menus/process.html#nans
例如,Process -> Noise -> Remove NaN
往期回顾