作者:北欧森林
链接:https://www.jianshu.com/p/afcd06221ea4
来源:简书,已获转载授权

 
本笔记来源于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 文件的矩阵的插值
 
 

    1 年 后

    如果要批量处理图像的话,该怎么些循环啊?

      说点什么吧...