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)))

浙公网安备 33010602011771号