科 / 研 / 图 / 像 / 处 / 理
对不形状规则、粘连重叠的细胞进行分割,是一类较为困难的图像分割问题。
传统的图像处理方法,例如阈值、watershed,并不能很好地处理这种情况。
Cellpose,是一种 通用的、基于深度学习的细胞分割方法。它可以从各种图像类型中精确地分割细胞,并且不需要模型重新训练或参数调整:
Example Cellpose segmentations
利用 cellpose,我们可以对不规则、重叠严重的细胞进行较为准确的细胞分割。Cellpose 本身是 Python 的一个库,可以参考之前的文章:
点击跳转《Cellpose | 细胞分割神器》
Cellpose 同时也推出了网页版,可以在线进行细胞分割操作:
https://www.cellpose.org/www.cellpose.org/
这篇文章会以这幅图为例,介绍怎样利用 cellpose,配合 ImageJ 的操作,无需编程来实现准确的细胞分割:
一、利用cellpose进行细胞分割
(1)打开cellpose官网(cellpose):
网页版的 cellpose 只支持 PNG 或者 JPG 格式,所以首先需要把要分割的图片在 ImageJ 保存为 PNG 或者 JPG 格式 (File -> Save as -> jpeg)
点击绿色的虚线框,就可以上传图像了。
(2)设定参数
上传图像之后,需要设定分割参数:
这里需要注意红框中的参数;
如果你染的是细胞质,需要做细胞质的分割,What to segment 选择 cytoplasm;
这里我上次的是单通道的图像,没有细胞核通道所以 Channel to segment 选择 gray,Nuclear channel 选择 None。
当然也可以上传多通道的图像,选择你想分割的那个 channel 即可,如果有染细胞核,需要设置 Nuclear channel。
这里最重要的是设置细胞的 平均直径(pixel为单位),可以根据图像上的标尺,大概估算一下,这里估算细胞直径大概在 50 个 pixel。
设置完参数后点击 submit,即可得到分割结果:
(3)结果导出
点击 Download masks as PNG,下载分割好的 Mask:
如果想直接得到统计结果,不需要得到每个细胞的 ROI,可以直接借助 MorphoLibJ 这个插件。
之前这篇文章提到过插件的安装:
点击跳转《ImageJ | 细胞膜荧光强度检测》
打开下载好的 Mask(Mask 应该是 16-bit)后,打开 MorphoLibJ 中的分析功能(Plugins -> MorphoLibJ -> Analyze Regions):
点击 OK 后即可得到结果:
二、获取分割 Mask 的 ROI
分割好的每一个细胞的 Mask 都有一个特定的灰度值,通过 MATLAB 或者 Python 脚本,可以得到每个细胞的 ROI。
但这种方法需要安装 cellpose 或者写一些代码,参考之前的文章:
点击跳转《细胞分割神器 Cellpose(自动计数篇)》
这里提供一种不需要写 code,直接用 ImageJ 获取细胞的 ROI 的方法。
(1)获取 Mask 边界 (Process -> Find Edges)
(2)二值化边界(Image -> Adjust -> Threshold)
调整阈值,使得边界都被选中,然后 Apply 转成二值化图像。
(3)二值化原图(Image -> Adjust -> Threshold)
二值化后,Process -> BInary -> Fill holes
(4)原图和边界相减(Process - Image calculator)
这样就把原本粘连的 Mask 分割开来。
(5)获得分割结果(Analyze -> Analyze Particles)
设置 Size 的下限以过滤掉一些小的 noise:
最后结果:
END
往期回顾