失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mhd格式三维图像显示_可视化mhd文件格式的DICOM图像序列

mhd格式三维图像显示_可视化mhd文件格式的DICOM图像序列

时间:2022-09-12 10:51:16

相关推荐

mhd格式三维图像显示_可视化mhd文件格式的DICOM图像序列

因为DICOM图像通常是一个序列,普通的dcm格式的图像序列可以直接使用DICOM图像查看软件打开进行查看;但mhd格式的3D图像却无法方便地查看。但为了研究方便,可视化mhd图像文件是绕不开的一项任务。 具体来说,在Python下可视化图像可以选择使用matplotlib,也可以用OpenCV将其保存查看,都非常方便。不过有些细节问题则需要特别注意。下面对这些进行一下简单记录,以防遗忘。

使用OpenCV保存一个三维的DICOM数据image,并在其上的某个坐标coord处绘制直径为diameter的圆形的代码如下:

import cv2

import SimpleITK as sitk

import numpy as np

image = sitk.ReadImage(mhd_path)

image = sitk.GetArrayFromImage(image)

for i, im in enumerate(image):

im = cv2.cvtColor(im, cv2.COLOR_GRAY2RGB)

cv2.circle(im, coord, diameter, color=(0, 0, 255))

cv2.imwrite(os.path.join(path, ‘{}.png’.format(i)), im)

需要特别注意的是 im = cv2.cvtColor(im, cv2.COLOR_GRAY2RGB)。因为输入图像是灰度图,如果不先将图像转换为彩色的RGB格式,下面绘制的circle将不会以彩色显示,可能会造成误解。

2.使用matplotlib绘制保存图像序列

使用matplotlib.pyplot在Python里进行各种图形的绘制会特别方便,而且我们使用的也更多更顺手。如,绘制一幅二维的image图像,代码如下:

import matplotlib.pyplot as plt

plt.imshow(image, cmap=’gray’)

plt.show()

因为我们绘制的医学影像是灰度图,所以用 cmap='gray' 这个参数。 而在绘制的图像上绘制其他内容也十分方便,比如1中绘制一个圆形,代码如下:

import matplotlib.pyplot as plt

plt.imshow(image, cmap=’gray’)

plt.Circle(coord, diameter, color=’r’, fill=False)

plt.show()

将绘制的图像像OpenCV一样保存为文件,也可以直接使用plt.savefig(path)即可。 不过,你应该能够看到,这样保存的图片边缘会有很大空白,而不能像OpenCV保存的图像那样,紧紧贴边,只保存了图像。 那么,如何使用matplotlib.pyplot像OpenCV的cv2那样保存图像时紧紧贴边,而没有边缘的空白呢?可以使用下面的代码:

def make_image(image, path, diameter, coord):

fig = plt.figure()

fig.set_size_inches(image.shape[0]/100., image.shape[1]/100.)

ax = plt.Axes(fig, [0., 0., 1., 1.])

ax.set_axis_off()

fig.add_axes(ax)

ax.imshow(image, aspect=’normal’, cmap=’gray’)

circle = plt.Circle(coord, diameter, color=’r’, fill=False)

ax.add_artist(circle)

plt.savefig(path)

使用该函数,即可将二维的numpy array格式的image图像数据保存为像OpenCV的cv2那样边缘没有任何空白的图像了。

如果觉得《mhd格式三维图像显示_可视化mhd文件格式的DICOM图像序列》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。