问题描述
from medpy.io import load
image_data,image_header = load("HG/0001/VSD.Brain.XX.O.MR_Flair/VSD.Brain.XX.O.MR_Flair.684.mha")
print(image_data.shape)
我得到一个元组 (160,216,176)。这些尺寸代表什么(作为参考,这些是来自 BRATS 2013 的脑肿瘤图像)?感谢您的帮助。
编辑:在 Jupyter 上,我所做的滑块工作
import matplotlib.pyplot as plt
from ipywidgets import interact
import numpy as np
%matplotlib inline
@interact(x=(0,image_data.shape[2]))
def update(x):
plt.imshow(np.flip(image_data[x].T,0))
当然你的代码可能适用于其他编辑器
解决方法
根据 documentation,load(image)“加载图像并返回带有图像像素内容和标题对象的 ndarray
。”
再往下在 medpy.io.load
中,它说 image_data 是“图像数据作为 numpy 数组,顺序为 x,y,z,c。”。
编辑:因为我很想知道这个文件中的实际内容,所以我整理了一个快速脚本(主要基于 slider demo)来查看。我会把它留在这里以防万一它可能对某人有用。 (点击“图层”滑块选择要绘制的 z 坐标。)
from medpy.io import load
image_data,image_header = load("/tmp/VSD.Brain.XX.O.MR_Flair.684.mha")
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider,Button,RadioButtons
fig,ax = plt.subplots()
plt.subplots_adjust(bottom=0.25)
axlayer = plt.axes([0.25,0.1,0.65,0.03])
slider_layer = Slider(axlayer,'Layer',1,image_data.shape[2],valinit=1,valstep=1)
def update(val):
layer = slider_layer.val
ax.imshow(image_data[:,:,layer])
fig.canvas.draw_idle()
slider_layer.on_changed(update)
ax.imshow(image_data[:,0])
plt.show()
(这间接证实了 image_data
拥有 3-D 体素图像。)