三维医学图像resize到固定尺寸

本文深入讲解了图像处理中Resize操作的实现方法,特别是在神经网络输入标准化及资源受限情况下的应用。通过具体代码示例,展示了如何使用SimpleITK库进行图像尺寸调整,包括对mask和CT图像采用不同插值方式的技巧。
Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Resize是图像处理中经常使用的一个操作,就是将图像缩放到一个固定尺寸,比如分类神经网络的输入大小必须保持一致,就要用到resize;比如有的网络训练学习需要整个图像,但计算机显卡资源不足,不能将整幅图像输入网络,这时也可用到resize,废话不多说,直接看代码,用就是了:

import numpy as np
import SimpleITK as sitk
from glob import glob

def resize_image_itk(itkimage, newSize, resamplemethod=sitk.sitkNearestNeighbor):

    resampler = sitk.ResampleImageFilter()
    originSize = itkimage.GetSize()  # 原来的体素块尺寸
    originSpacing = itkimage.GetSpacing()
    newSize = np.array(newSize,float)
    factor = originSize / newSize
    newSpacing = originSpacing * factor
    newSize = newSize.astype(np.int) #spacing肯定不能是整数
    resampler.SetReferenceImage(itkimage)  # 需要重新采样的目标图像
    resampler.SetSize(newSize.tolist())
    resampler.SetOutputSpacing(newSpacing.tolist())
    resampler.SetTransform(sitk.Transform(3, sitk.sitkIdentity))
    resampler.SetInterpolator(resamplemethod)
    itkimgResampled = resampler.Execute(itkimage)  # 得到重新采样后的图像
    return itkimgResampled


image_path = 'F:\lung_lobe\data\data\mask/'
image_file = glob(image_path + '*.nrrd')
for i in range(len(image_file)):
    itkimage = sitk.ReadImage(image_file[i])
    itkimgResampled = resize_image_itk(itkimage, (128,128,64),resamplemethod= sitk.sitkNearestNeighbor) #这里要注意:mask用最近邻插值,CT图像用线性插值
    sitk.WriteImage(itkimgResampled,'F:\lung_lobe\data\data\mask_resize/' + image_file[i][len(image_path):])

这里有两个点需要注意:

(1)图像的Spacing不要设置成整数;

(2)插值过程中,mask图像用最近邻插值,CT图像用线性插值

 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值