对2D或者3D的医疗影像mask进行膨胀和腐蚀处理。
参考使用库scipy.ndimage
要完成的事
对3D的脑mask进行膨胀和腐蚀操作。
数据初探
对脑影像——已去脑壳并配准到标准模版上,可自己下载实验,卡阈值0得到脑mask:
index 116
index 80
对数据进行膨胀操作
将脑mask中的空洞进行填补。
brain_mask2 = ndimage.binary_closing(brain_mask, structure=np.ones((5,5,5)))
其中brain_mask : 3D脑mask array。可以使用simpleITK或者antspy读取矩阵信息。
膨胀之后的效果:
中间的孔洞被填补了,然后我们再进行腐蚀操作,减小脑的mask。
对数据进行腐蚀操作
brain_mask3 = ndimage.binary_erosion(brain_mask2, structure=np.ones((10,10,10)))
brain_mask2为上一个填补孔洞之后的脑mask。
膨胀之后再腐蚀的效果:
红色为被腐蚀掉的边界。
我们获得了比脑mask更小的mask。
有关erosion的操作
参考:https://en.wikipedia.org/wiki/Erosion_%28morphology%29
矩阵A需要被腐蚀,使用B矩阵,两个矩阵分别如下:
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
(1)
\begin{matrix} 1 &1 &1 &1 &1 &1 &1& 1&1 &1& 1 &1 &1 \\ 1& 1 &1 &1&1&1 &0 &1 &1 &1& 1& 1 &1 \\ 1 &1& 1& 1 &1& 1 &1 &1& 1 &1 &1 &1 &1 \\ 1 &1 &1& 1 &1 &1 &1& 1 &1 &1 &1 &1 &1 \\ 1 &1 &1& 1 &1& 1 &1 &1 &1 &1& 1 &1& 1 \\ 1 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &1 \\ 1 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &1 \\ 1 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &1 \\ 1 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &1 \\ 1 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &1 \\ 1 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &1 \\ 1 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &1 \\ 1 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &1 \\ \end{matrix} \tag{1}
1111111111111111111111111111111111111111111111111111111111111111111111111111111011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111(1)
矩阵B:
1
1
1
1
1
1
1
1
1
(2)
\begin{matrix} 1 &1 &1 \\ 1& 1 &1 \\ 1 &1& 1 \\ \end{matrix} \tag{2}
111111111(2)
使用矩阵B对A进行腐蚀:
B的原点依次经过矩阵的每一个像素值,当此像素值为1并且在B覆盖的所有像素值都是1的时候,保存此像素值,否则,此像素值置为0.
因此,A被B侵蚀的情况由这个13x13矩阵给出。
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
1
1
1
1
0
0
0
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
(3)
\begin{matrix} 0 &0 &0 &0&0 &0 &0& 0&0&0& 0 &0 &0 \\ 0& 1 &1 &1&1&0 &0 &0 &1 &1& 1& 1 &0 \\ 0 &1& 1& 1 &1& 0 &0 &0& 1 &1 &1 &1 &0 \\ 0 &1 &1& 1 &1 &1 &1& 1 &1 &1 &1 &1 &0 \\ 0 &1 &1& 1 &1& 1 &1 &1 &1 &1& 1 &1&0 \\ 0 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &0 \\ 0 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &0 \\ 0&1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &0 \\ 0 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &0 \\ 0 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &0 \\ 0 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &0 \\ 0 &1 &1 &1 &1 &1&1 &1& 1& 1 &1 &1 &0 \\ 0 &0 &0 &0&0 &0 &0& 0&0&0& 0 &0 &0 \\ \end{matrix} \tag{3}
0000000000000011111111111001111111111100111111111110011111111111000011111111100001111111110000111111111001111111111100111111111110011111111111001111111111100000000000000(3)
有关Dilation的操作
参考: https://en.wikipedia.org/wiki/Dilation_(morphology)