monai.visualize.utils.matshow3d
函数是 MONAI 包中用于可视化 3D 图像数据的一个实用工具函数。它可以在平面中显示一个或多个3D图像,并提供一些参数来控制显示的方式和外观。
先导入需要的包
import numpy as np
import matplotlib.pyplot as plt
from monai.visualize import matshow3d
例如我们显示1个大小为10x10x10的图像
# create a figure of a 3D volume
volume = np.random.rand(10, 10, 10)
fig = plt.figure()
matshow3d(volume, fig=fig, title="3D Volume")
plt.show()
再比如我们显示2个大小为10x10x10的图像
# create a figure of a list of channel-first 3D volumes
volumes = [np.random.rand(1, 10, 10, 10), np.random.rand(1, 10, 10, 10)]
fig = plt.figure()
matshow3d(volumes, fig=fig, title="List of Volumes")
plt.show()
接下来,我们再以真实的CT腹部图像案例,来学习一些更高阶的用法
filename = '/Users/Downloads/WORD-V0.1.0/imagesTr/word_0002.nii.gz'
data = LoadImage(image_only=True, ensure_channel_first=True, simple_keys=True)(filename)
data1 = monai.transforms.Orientation("IPL")(data)
# (Left, Right), (Posterior, Anterior), (Inferior, Superior).
fig = monai.visualize.matshow3d(volume=data1,
title='abdomen CT',
figsize=(20,20),
frames_per_row=6,
frame_dim=-3,
channel_dim=0,
every_n=5,
vmin=-300, vmax=600,
cmap='gray',
fill_value=255)
注意
显示最需要注意的是frame_dim
参数,它的值取决于你图像的方向,这里我把data的方向从原本的RAS
转换为IPL
后,它的shape是会发生改变的。shape改变了frame_dim
也要跟着变才能按照你想要的方向进行展示。
假设我现在data按RAS
方向,frame_dim改为-1
,其余代码不变,结果如下
因此,要是你的图像显示方向不对,通过改变data的方向和frame_dim
参数可以解决。
文章持续更新,可以关注微公【医学图像人工智能实战营】获取最新动态,一个关注于医学图像处理领域前沿科技的公众号。坚持以实践为主,手把手带你做项目,打比赛,写论文。凡原创文章皆提供理论讲解,实验代码,实验数据。只有实践才能成长的更快,关注我们,一起学习进步~
我是Tina, 我们下篇博客见~
白天工作晚上写文,呕心沥血
觉得写的不错的话最后,求点赞,评论,收藏。或者一键三连