Python-读写nii.gz, mhd图像

SimpleITK读写nii.gz, mhd图像

图像维度是[z, y, x]

import os
import SimpleITK as sitk

filename = os.path.join(input_path, imagefile, "origin.nii.gz")
saved_name = filename.replace("nii.gz", "mhd")

# 读取图像
ct = sitk.ReadImage(filename)
ct_array = sitk.GetArrayFromImage(ct)
print(ct_array.shape)  # [z,y,x]

origin = ct.GetOrigin()
direction = ct.GetDirection()
space = ct.GetSpacing()

# 保存图像
savedImg = sitk.GetImageFromArray(ct_array)
savedImg.SetOrigin(origin)
savedImg.SetDirection(direction)
savedImg.SetSpacing(space)
sitk.WriteImage(savedImg, saved_name)

nibabel读写nii.gz, mhd图像

图像维度是[x, y, z]

import os
import nibabel

filename = os.path.join(input_path, imagefile, "origin.nii.gz")
saved_name = filename.replace("nii.gz", "mhd")

# 读取图像
img = nibabel.load(file)
img_data = img.get_fdata()
img_meta = img.affine

# 保存图像
new_image = nibabel.Nifti1Image(img_data, img_meta)
nibabel.save(new_image, saved_name)

VTK读取.vtk文件

import vtk

def read_vtk(path):
    reader = vtk.vtkPolyDataReader()
    reader.SetFileName(path)
    reader.ReadAllScalarsOn()
    reader.ReadAllVectorsOn()
    reader.ReadAllTensorsOn()
    reader.Update()
    vtkdata = reader.GetOutput()
    num = vtkdata.GetNumberOfPoints()
    x = []
    y = []
    for i in range(num):
        points = vtkdata.GetPoint(i)
        x.append(points[0])
        y.append(points[1])
    x = np.array(x)
    y = np.array(y)
    return x, y

x, y = read_vtk(vtk_path)
plt.plot(x, y)
plt.show()

三维图像resize操作

from skimage import transform
image = transform.resize(image, (new_size))

三维图像形态学操作

from scipy.ndimage import binary_closing, 
                          binary_dilation, 
                          binary_erosion, 
                          binary_opening
# 闭操作
binary = binary_closing(binary, structure=np.ones((5,5,5)))
# 开操作
binary = binary_opening(binary, structure=np.ones((5,5,5)))
# 膨胀操作
binary = binary_dilation(binary, structure=np.ones((5,5,5)))
# 腐蚀操作
binary = binary_erosion(binary, structure=np.ones((5,5,5)))

posted @ 2022-03-30 11:13  小吕同学吖  阅读(844)  评论(0)    收藏  举报