2017-08-09 116 views
2

我正在使用3D MR图像数据。为了计算直方图,我将sitk.Image转换为3维的numpy arrray。虽然我能够使用matplotlib显示每个轴向切片,但numpy数组在所有三维中都是完全空的。 有人可以解释发生了什么事吗?sitk.GetArrayFromImage返回空numpy数组?

import numpy as np 
import SimpleITK as sitk 
from myshow import myshow 

img = sitk.ReadImage("mri.hdr") 
nda = sitk.GetArrayFromImage(img) 
myshow(img) 
print nda 

输出:

[[[ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    ..., 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.]] 

[[ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    ..., 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.]] 

[[ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    ..., 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.]] 

..., 
[[ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    ..., 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.]] 

[[ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    ..., 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.]] 

[[ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    ..., 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.] 
    [ 0. 0. 0. ..., 0. 0. 0.]]] 

NOTES:

+0

您可以发表您的代码样本,以便我们可以按照您的逻辑 – DJK

+0

编辑!我相当新的编码和计算器。如果我不清楚我的问题,请原谅。 – DottedGlass

回答

1

你很好。数据就在那里,只是打印函数显示数组从头开始的数据(很大)。如果打印数据具有内容你会看到一个有效的值的特定像素:

print nda[200,56,87]

该指数被认为是在有效范围内。