Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 出现空白图像_Python_Matplotlib_Itk_Medical - Fatal编程技术网

Python 出现空白图像

Python 出现空白图像,python,matplotlib,itk,medical,Python,Matplotlib,Itk,Medical,我正在使用SimpleTk处理.mha格式的MRI图像。我随后将其转换为numpy数组。我可以使用matplotlib可视化图像。但是,如果我执行任何预处理或将图像乘以其二进制掩码,我得到的只是一个空白图像。有什么我不知道的吗。我的简化代码如下所示 import SimpleITK as sitk import numpy as np from matplotlib import pyplot as plt input_image = sitk.ReadImage('MRI.mha') inpu

我正在使用SimpleTk处理.mha格式的MRI图像。我随后将其转换为numpy数组。我可以使用matplotlib可视化图像。但是,如果我执行任何预处理或将图像乘以其二进制掩码,我得到的只是一个空白图像。有什么我不知道的吗。我的简化代码如下所示

import SimpleITK as sitk
import numpy as np
from matplotlib import pyplot as plt
input_image = sitk.ReadImage('MRI.mha')
input_array = sitk.GetArrayFromImage(input_image)
plt.imshow(input_array[0,:,:],cmap = 'gray') # I get an image for this. No preprocessing has been performed.
plt.show()
# However, if I replace input_array after preprocessing, I get a black square.

我认为这和数据的范围有关,但我无法确定数据在哪里。预处理前可视化的图像最大值为744。在预处理之后,这个值下降到4,这就是问题出现的时候。是否有任何指向我可能出错的地方的指针?

在进行任何处理之前,您应该检查图像像素类型。您正在测试的MRI图像卷具有sitkInt32(有符号32位整数)像素类型。因此,您的处理(例如,除法操作)很可能会使像素值为零,从而得到黑色图像。 您可以使用SimpleTk将图像强制转换为浮动:

input_image = sitk.ReadImage('MRI.mha')
print(input_image.GetPixelIDTypeAsString())
input_image = sitk.Cast(input_image,sitk.sitkFloat32)
input_array = sitk.GetArrayFromImage(input_image)
或在处理之前更改numpy数组数据类型:

input_image = sitk.ReadImage('MRI.mha')
input_array = sitk.GetArrayFromImage(input_image)
input_array = input_array.astype(np.float32)

阅读有关像素类型的更多信息。

在预处理后,尝试检查数据的最小值和最大值。另外,请确保您没有创建NaN或任何会被屏蔽的值。这是为了确保问题不在于你的数据,而在于绘图本身。如果可能的话,你能提供一个随机的例子让其他人自己测试吗?预处理后的数据在0到4之间。数据中没有NAN。这是包含标签的图像(),我用它来预处理MRI图像。这个链接()是MRI图像。因此,RF分类图像有7个标签。标签1是白质。标签4、5、6和7是肿瘤区域。您采取的预处理步骤是什么?两个图像都存储为整数。也许转换成浮点将解决您的问题-在不知道您对数据做了什么的情况下很难说!我首先找到了白质的平均强度。然后我把整个图像除以这个强度。