本笔记来源于B站Up主: 有Li 的影像组学系列教学视频
本节(33)主要介绍: 使用SimpleITK实现医学影像差值
背景知识
在图像几何变换时,无法给有些像素点直接赋值。例如,将图像放大两倍,必然会多出一些无法被直接映射的像素点,对于这些像素点,通过插值决定它们的值,于是,产生了图像插值算法。(来源知乎@Rocky X)
插值算法分类
Python代码实现
import SimpleITK as sitk
import numpy as np
imagePath = "/Users/**/RadiomicsWorld/data/featureExtraction/brain1/brain1_image.nrrd"
image = sitk.ReadImage(imagePath)
resample = sitk.ResampleImageFilter()
resample.SetInterpolator(sitk.sitkLinear)
resample.SetOutputDirection(image.GetDirection())
resample.SetOutputOrigin(image.GetOrigin())
newSpacing = [0.5, 0.5, 0.5]
newSpacing = np.array(newSpacing, float)
newSize = image.GetSize() / newSpacing * image.GetSpacing()
newSize = newSize.astype(np.int)
resample.SetSize(newSize.tolist())
resample.SetOutputSpacing(newSpacing)
newimage = resample.Execute(image)
sitk.WriteImage(newimage, "/Users/**/RadiomicsWorld/data/featureExtraction/brain1/brain1_resampled.nii.gz")
print(image.GetSize())
print(resample.GetSize())
# Output:
# (256, 256, 25)
# (399, 399, 324)
查看结果:
参考资料
知乎用户@Rocky X:来聊聊图像插值算法(线性插值与非线性插值)
CSDN用户@想做无忧无虑的咸鱼: SimpleITK 对与Dicom 文件的矩阵的插值