我有来自BrainWeb的10个灰度脑MRI扫描。它们被存储为4D numpy数组
所有的脑都是
首先,我将像素强度归一化为
绘制的结果看起来正确:
brains
,形状为(10, 181, 217, 181)
。每个脑由181个z平面沿着z轴(通过头顶到颈部)组成,其中每个切片在x(耳朵到耳朵)和y(眼睛到后脑)平面分别为181个像素和217个像素。所有的脑都是
dtype('float64')
类型。所有脑中的最大像素强度为~1328
,最小值为~0
。例如,对于第一个脑,我通过brains[0].max()
计算得到1328.338086605072
,brains[0].min()
计算得到0.0003886114541273855
。下面是brain[0]
切片的绘图:
我希望将所有这些脑部图像二值化,通过重新调整像素强度从[0, 1328]
到{0, 1}
。我的方法正确吗?首先,我将像素强度归一化为
[0, 1]
:normalized_brains = brains/1328
然后通过使用二项分布将每个像素二值化:
binarized_brains = np.random.binomial(1, (normalized_brains))
绘制的结果看起来正确:
0像素强度代表黑色(背景),1像素强度代表白色(脑组织)。
我尝试了另一种从this post正常化图像的方法,但结果只是一张黑色图片。这是因为np.finfo(np.float64)
等于1.7976931348623157e+308
,所以无法正常化。
normalized_brains = brains/1.7976931348623157e+308
我刚刚返回了一个零数组,这在二值化步骤中也导致了一个零数组。
我使用的方法正确吗?