mha 脑肿瘤文件中的图像数据
Image data in mha brain tumor file
我有一个 MHA 文件,当我写入时
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,加载(图像)“加载图像和 returns 具有图像像素内容的 ndarray
以及 header object."
在 medpy.io.load
的更下方,它说 image_data 是“图像数据作为 numpy 数组,顺序为 x、y、z、c”。
编辑:因为我有点想知道这个文件中到底有什么,所以我整理了一个快速脚本(主要基于 slider demo)来看一看。我会把它留在这里,以防它对某人有用。 (点击“图层”滑块select要绘制的z-coordinate。)
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 体素图像。)
只是为了在接受的答案之上添加,我们也可以用 subplots
和 animation
可视化切片:
from medpy.io import load
image_data, image_header = load("VSD.Brain.XX.O.MR_Flair.684.mha")
image_data = image_data / image_data.max()
plt.figure(figsize=(20,32))
plt.gray()
plt.subplots_adjust(0,0,1,0.95,0.01,0.01)
for i in range(ct.shape[0]):
plt.subplot(16,10,i+1), plt.imshow(image_data[i]), plt.axis('off')
plt.suptitle('Brain-Tumor CT-scan mha (raw) files', size=15)
plt.show()
我有一个 MHA 文件,当我写入时
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,加载(图像)“加载图像和 returns 具有图像像素内容的 ndarray
以及 header object."
在 medpy.io.load
的更下方,它说 image_data 是“图像数据作为 numpy 数组,顺序为 x、y、z、c”。
编辑:因为我有点想知道这个文件中到底有什么,所以我整理了一个快速脚本(主要基于 slider demo)来看一看。我会把它留在这里,以防它对某人有用。 (点击“图层”滑块select要绘制的z-coordinate。)
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 体素图像。)
只是为了在接受的答案之上添加,我们也可以用 subplots
和 animation
可视化切片:
from medpy.io import load
image_data, image_header = load("VSD.Brain.XX.O.MR_Flair.684.mha")
image_data = image_data / image_data.max()
plt.figure(figsize=(20,32))
plt.gray()
plt.subplots_adjust(0,0,1,0.95,0.01,0.01)
for i in range(ct.shape[0]):
plt.subplot(16,10,i+1), plt.imshow(image_data[i]), plt.axis('off')
plt.suptitle('Brain-Tumor CT-scan mha (raw) files', size=15)
plt.show()