今天将分享脑微出血检测的三个步骤级联分割的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。
一、数据分析与预处理
回顾一下前面数据分析与处理过程:
首先将训练中有效的颅内微出血区域的数据提取出来,有一些数据没有微出血区域,不作为训练数据,在这里只分析标签值1,其他标签都是0。以一共72例数据,有微出血的数据有49例。
1.1、热力图回归检测数据处理
然后根据每个微出血区域的boundingbox的中心和大小,生成该点处的高斯热力图,高斯热力图的中心就是微出血区域的中心点坐标,高斯Sigma的数值是boundingbox的最大值,如果一个图像上有多个微出血,将所有微出血的高斯热力图相加即可。
1.1.1、3d数据准备
为了将整个图像输入到网络中去,需要对原始图像和热力图进行大小缩放,由于显卡是1080TI的11G显存的大小,所以图像缩放到固定大小(128,128,96)。
1.1.2、2d数据准备
将图像首先按照xy方向大小缩放到(512,512)大小,然后按照z方向分析热力图二维图,判断是否有热力图结果,如果有的话就将该二维热力图和二维图像进行保存,其中图像进行(5,95)的均值为0,方差为1的归一化处理。
1.2、二类分割数据处理
可以看到微出血的区域非常小,所以采用spacing缩放方式将原始图像和Mask图像统一到(0.4,0.4,0.4)。针对非微出血区域,在整个图像上随机裁切出200个(64,64,64),针对微出血区域,根据连通域分析Mask得到每个微出血的boundingbox,在该区域内随机获取点,并以此为中心裁切(64,64,64),裁切的个数是200/连通域个数。
1.3、二类分割数据处理
可以看到微出血的区域非常小,所以采用spacing缩放方式将原始图像和Mask图像统一到(0.4,0.4,0.4)。对Mask进行连通域分析得到每个微出血的boundingbox,以boundingbox的中心裁切出(64,64,64)。
二、三个级联网络结构预测流程
2.1、输入原始图像,将图像缩放到(128,128,96)大小,对缩放后图像进行(5,95)像素范围截断并以均值为0,方差为1的归一化处理。
2.2、输入到2d和3d热力图回归网络中预测,对结果进行二值化处理,然后再缩放回到原始图像大小。
2.3、对原始图像和二值化预测热力图结果,分别缩放到spacing分辨率是(0.4,0.4,0.4)大小。
2.4、对采样后的二值热力图进行连通域分析,获得每个连通域边界框范围。
2.5、以步长(32,32,32)来遍历边界框,裁切一系列的(64,64,64)大小的ROI图像区域,进行(5,95)像素范围截断并以均值为0,方差为1的归一化处理。
2.6、输入到二值分类网络中去,如果预测标签值为1,那么就进一步分割,将一系列的分割结果进行求和处理,直到遍历分割完,接着处理下一个连通域。
2.7、对最后分割结果进行二值化处理,非0区域设置成1,得到微出血的区域结果。
2.8、最后再采样到原始图像大小,最后输出成预测的分割结果。
三、预测结果
下图是整个图像上的金标准结果和级联网络的预测结果,可以看到预测结果还是存在一些假阳性结果,左图是金标准,右侧是预测结果。