medical image常用工具

python

R

  • AntsR
  • fslr

matlab

  • NIfTI
  • stisuite

shell


ANTspy, Nibabel, SimpleITK使用心得

ANTspy

  • I/O, 基础操作
import numpy as np
import ants

# test the shape change between ants and numpy
_data = np.random.randn(30, 40, 50)
_img = ants.from_numpy(_data)
print(_img.dimension) #3
print(_data.shape) #(30, 40, 50)
print(_img.shape) #(30, 40, 50)

Nibabel

  • I/O, 基础操作
import numpy as np
import nibabel as nib

# load image(assume image shape (x, y, z) in itk-snap)
nib_img = nib.load(filename_image)
# return image shape, (x, y, z) 
nib_img.shape
# convert to ndarry, shape(x, y, z)
nib_data = nib_img.get_fdata()
# convert to nifti image, (x, y, z)
nib_img = nib.Nifti1Image(nib_data, np.eye(4))# LPI
# save image
nib.save(nib_img, save_path)

SimpleITK

  • I/O, 基础操作

在进行读入图像(shape: (x, y,z))后,ants, sitk和nib的图像对象维度均为(x, y,z),但将图像转为ndarray后,sitk对应的ndarray变为(z,y,x),ants和nib对应的ndarray为(x, y,z)

import numpy as np
import SimpleITK as sitk

# load image(assume image shape (x, y, z) in itk-snap)
itk_img = sitk.ReadImage(filename_image)
# return image shape, (x, y, z) 
itk_img.GetSize()
# return image orientation
itk_img.GetDirection()
# set image orientation to LPI
itk_img.SetDirection((-1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 1.0))
# convert to ndarry, shape(z, y, x)
itk_data = sitk.GetArrayFromImage(itk_img)



# create image with shape(2, 4, 8, 5) , vecotr mean multi-channel image 
itk_img = sitk.Image([2,4,8], sitk.sitkVectorFloat32, 5)
# convert to ndarry which shape is (8, 4, 2, 5)
itk_data = sitk.GetArrayFromImage(itk_img)

# Get a SimpleITK Image from a numpy array. If isVector is True, then the Image will have a Vector pixel type(multi channel image), and the last dimension of the ndarray will be considered the component index(channel index). By default when isVector is None, 4D images are automatically considered 3D vector images
itk_img = sitk.GetImageFromArray(itk_data, isVector=False)

# save image
sitk.WriteImage(itk_img, save_path)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。