基于ImageJ进行自动细胞计数

捣鼓了半天的自动细胞计数,常用程序为ImageJ,本着我干了工作就要有记录的精神,记录一下的全部流程,ImageJ的下载地址为:Downloads (imagej.net) 注意要下载Fiji,因为插件多,我们要用到其中机器学习的插件。
比较全的教程在:ImageJ实用技巧——细胞计数综述 - 知乎 (zhihu.com)
教程做的很好,但是想要准确的辨别需要技巧,要灵活使用imageJ的图片识别算法和机器学习插件,我这里主要写一下我遇见的坑:

图片准备

我只接触到血球计数板的显微镜图片的ImageJ自动细胞计数,首先第一个重点要保证图片的颜色相同,例如下边的3张图,图1和图2就是比较好可通用的例子,图3因为调整了光圈颜色不太一致,在进行机器学习训练的时候不能通用,不太合适。

图1.jpg

图2.jpg
图3.jpg

这里的图3由于显微镜操作时灯设置的太亮了,活细胞(黄色)和背景(深黄色)的区分情况和图1、图2不同,因此通过图1训练的模型适用于图2但不适用图3(不能分辨活细胞,但是绿色的死细胞还是可以分辨的)。

ImageJ机器学习建模

首先打开软件, 通过:File -> Open 打开一张图片,这里可以看到图片(2592*1944)比较大

image.png

使用:Image-scale 设置x轴和y轴都为0.25 缩小图片,这样机器学习训练过程会快很多。
image.png

图片在这个大小就基本合适在个人用的笔记本上运行了(8核,16G内存运行无压力,4核8G也能用),当然有服务器的同学可以考虑省略这一步,但是还是建议运行此步骤的,能节省算力的时候还是要节省一点:
image.png

然后使用: Plugins -> Segmentation -> Trainable Weka Segmentation 对图片进行机器学习训练,具体流程有完整的视频在:ImageJ实用技巧——基于机器学习的自动细胞分割(插件篇) - 知乎 (zhihu.com)
视频做的很详细,我的体会是第一次建模一定要有耐心,认真做好第一张图片的建模,剩下的图片都可以的调用该模型。

建模后通过宏功能进行批处理

上一个连接视频中说清楚了如何通过一张图片的建模进行不同图片细胞计数的流程,我这里主要补充一下宏的功能,使用宏功能的目的是通过一次操作,将流程记录下来,整理成代码,最后可以批量应用在多张图片上。

由于血球计数板可能会生成大量(超过100张)类似示例图片的计数需求,每张单独处理可能太过麻烦,因此才需要批处理。

同样,宏(Plugins -> Macros -> Record)的使用方法也有人进行了记录:【ImageJ】使用批处理功能批量处理图片 - 知乎 (zhihu.com)

注意建模流程我们最好不要用宏处理,我们可以按照博文的方法记录下如下流程:
打开图片 -> 调整图片大小 -> 应用构建好的机器学习模型 -> 图片处理 -> 图片统计 -> 保存结果文件

然后进行批量处理,得到多个结果表格,在使用血球计数板的进行显微镜细胞计数的任务中,此方法应该能解决大部分问题。

另外,在进行宏操作之前,最好认真训练机器学习的模型,以期达到最好的效果,多试几张照片效果好的话,再批处理。

最后,将多个表格文件结果汇总的任务,找个会python或者R的同学搞一下就好了。

本文结束,希望大家实验顺利,处理数据轻轻松松。

你可能感兴趣的:(基于ImageJ进行自动细胞计数)