在对细胞进行成像后,我们往往需要对细胞的数量进行定量,手动数细胞 是一个极其无聊以及耗费精力的工作,而且可能存在人为的bias,可重复性较差。
上一篇文章为大家介绍了ImageJ的安装,以后的文章我会以 实际应用 的方式,解释 ImageJ 在科研图像处理中的各种实例。
▲还记得被红血球计数板支配的恐惧吗
这是解放双手篇的第一篇——利用ImageJ实现,基于阈值分割的自动细胞计数。
▲利用ImageJ进行基于阈值的自动细胞计数的工作流程(Workflow)在进行自动细胞计数之前,需要对 ImageJ 进行初始设置:
(Process -> Binary -> Options):
▲勾选Black background
这样可以避免二值化后出现Inverting LUT的情况,避免混淆物体和背景。
(File->Open,或者将图片直接拖动到菜单栏):
▲以一张DAPI免疫荧光染色照片为例
我们的目标是:自动对DAPI染色的细胞核进行计数,得到细胞核的总数。
(Image->Type->8-bit):
RGB格式简介: RGB代表 红、绿、蓝 三个通道,可以通过这 三个通道的叠加 得到各式各样的颜色。
在 ImageJ 中,RGB的每个通道只支持8-bit,即 256级亮度,用数字表示为从0、1、2...直到255。在0时最弱,而在255最亮。
当我们把一个RGB图像,转换为8-bit图像时,其实就是来了一个简单的缩放。使用以下公式转换为灰度:
灰色=(红色+绿色+蓝色)/ 3
当然对于本文的单通道的图像来说,也可以通过Image -> Color -> Split Channels,提取蓝色通道也是可以的。
注意:如果你的图像在保存时,已经保存成单通道了(8-bit,16-bit),不需要进行这一步。这一步是为了后面设置Threshold。
16-bit的图像可以直接进行Threshold,不用转成8-bit,否则会有亮度信息的损失。可参考公众号关于成像注意事项的文章:
(Image->Adjust->Threshold):
首先需要解释一下设定阈值(Threshold)的原理:
阈值的本质就是利用物体和背景的信号强度的差异,通过 只选中pixel value在一定范围内的pixel,来分割出物体。
设定好阈值之后,Apply即可将选中物体进行二值化,可以进行后续的形态学操作或者统计。
注意:设置阈值时建议选择Red来进行表征,变为红色的区域就是已经选中的区域。
注意背景是黑的,所以要勾选Dark Background!
这时候可能需要进行两项操作:
(1)如果图像带有比例尺:拖动调节阈值的上限可以去除比例尺(因为自动计数可能会把比例尺也当做细胞来统计)。
所以建议大家成像的时候不要把比例尺印在图像上。
(2)如果自动阈值效果不好:换拖动调节阈值的下限,可以增加选中区域,但要注意在选中细胞核的同时,尽可能少的减少背景。
拖动完成后点击Apply,图片转为非黑即白的二值化(Binary)图片:
▲这里白色区域是分割出的细胞核(pixel value为255)(Process->Binary->Fill holes):
阈值分割往往并不完美,一些细胞核存在亮度不均匀的部分,这部分可能并不能被阈值选中。
图像转为二值化后,可以进行形态学操作,填补细胞核的空隙,使得细胞核变成实心球形:
▲Fill holes后的结果
(Process->Binary->Watershed):
细胞密度比较大时,通常会有细胞重叠或者贴近的情况。可以利用Watershed自动将重叠的两个细胞核分离开来:
(Analyze->Analyze Particles):
出现Analyze Particles界面,通过不同的情况设置参数,最重要的是红框中的参数。Size:300-Infinity——指分析颗粒面积大于300(这里的单位是pixel),一直到无穷大的颗粒。(根据细胞大小,以及结果好坏来更改)Circularity:0.00-1.00——指圆度,可以根据细胞形状,调整需要的圆度,1.00为标准圆。Exclude on edges——处于边缘的颗粒不计入可以看到最后统计出的细胞核数为141,且每个细胞核的面积也在Results中显示出来。可以放大检查原图中是否有多数或者漏数的细胞。