咨询BRATS2013脑肿瘤MHA文件经medpy读取后的shape维度含义
BRATS2013 Flair序列MHA影像维度含义说明
各维度空间对应关系
medpy.io.load读取MHA影像时会完全保留文件内部的体素存储顺序,不会自动对numpy数组做轴序重排。结合你使用的BRATS2013数据集的内置解剖坐标系,代码输出的shape元组(160, 216, 176)各维度的空间含义如下:
- 第一维度(数组索引0,长度160):上下方向的切面层数维度,对应平行于人体横断面(轴位)的切片堆叠方向——从颅底位置的第一层,逐层向上堆叠到头顶位置的最后一层。
- 第二维度(数组索引1,长度216):前后方向的体素跨度,对应单张横断面切片上,从颅前窝(额头侧)到颅后窝(枕部侧)的像素总长度。
- 第三维度(数组索引2,长度176):左右方向的体素跨度,对应单张横断面切片上,从大脑右半球到左半球的像素总长度。
交互代码适配校验
你编写的滑块交互的切片显示逻辑基本匹配当前数组轴序,但有一处边界问题需要修正:
- 目前滑块的取值范围绑定了
image_data.shape[2](也就是0到175),但代码中取切片用的是image_data[x],这个操作的合法索引范围是第一维度的长度边界(0到159)。当滑块拖动到160以上的位置时,会触发数组越界报错。把滑块范围改成绑定image_data.shape[0],同时补上灰度图的色映射,交互效果就完全正常了。 - 切片的方向修正逻辑是正确的:取出单张轴位切片后做矩阵转置调整纵横比,再沿垂直方向翻转像素,刚好匹配放射科的常规读片视角(患者右侧对应观察者左侧、颅底方向对应图像下方),不会出现影像方向颠倒的问题。
修正后的可直接运行的交互代码参考:
@interact(x=(0, image_data.shape[0]-1)) def update(x): plt.imshow(np.flip(image_data[x].T, 0), cmap='gray')
内容的提问来源于stack exchange,提问作者AMRO
相关产品推荐
相关产品推荐

