目录
序言
虽然我们能通过基于神经网络的体素分割工具快速获取感兴趣区域和白质病灶,但是仅凭白质病灶的总体积并不足以用来判断病患的残疾严重程度。这里简单介绍一个2D/3D图像连通域标记的C++开源工具包connected-components-3d
。这个工具包在二次扫描的基础上,加入了两次遍历提取临时标记数量和前景像素位置的预估,减少二次扫描的开销,还采用了并查集来存储标记信息,能快速处理3D二进制图像。
安装
pip install connected-components-3d
测试
#!/usr/bin/env python
import cc3d
import nibabel as nib
import numpy as np
import sys
def nii_load(path):
img = nib.load(path)
img = np.array(img.dataobj)
return img
def nii_save(img, path):
img = nib.Nifti1Image(img, np.eye(4))
nib.save(img, path)
if __name__ == "__main__":
labels_in = nii_load(sys.argv[1]).astype("int32")
labels_out, N = cc3d.connected_components(labels_in, connectivity = 26, return_N = True)
nii_save(labels_out, sys.argv[2])
技术总结
白质病灶不可能凭空消失,但是通过cc3d确实能观察到数量上的减少,究其原因,便是白质病灶的缓慢增长会使早期一些并不明显,看似分裂的白质病灶区区域融合在一起,造成整体数量上的减少。显然,我们需要进一步通过结合更多的大脑地形作为判断的基础。
参考资料
cc3d的源码https://github.com/seung-lab/connected-components-3d