SimpleITK 图像预处理——resize改变图像的尺寸

 变成

注意是针对nii图像,普通的图像用opencv就能做。

相当于是图像缩放的操作,并不是图像裁剪 。这是为了将数据集统一裁剪至同一尺寸,便于网络设计。

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 = r"D:/Datasets/Lung/Ieee8023/Lung_Mask/coronacases_001.nii.gz"

itkimage = sitk.ReadImage(image_path)
# 这里要注意:mask用最近邻插值,CT图像用线性插值
itkimgResampled = resize_image_itk(itkimage, (160, 224, 192), resamplemethod = sitk.sitkLinear)  # 线性插值
# itkimgResampled = resize_image_itk(itkimage, (128,128,64),resamplemethod= sitk.sitkNearestNeighbor)

sitk.WriteImage(itkimgResampled, r"D:/Datasets/Lung/Ieee8023/resize_label/coronacases_001.nii.gz")'''

#带循环的部分
image_path = r"D:/Datasets/LIVER/RCN/nii/val_image/"
image_file = glob(image_path + '*.nii')
for i in range(len(image_file)):
    itkimage = sitk.ReadImage(image_file[i])
    print(image_file[i])
    itkimgResampled = resize_image_itk(itkimage, (160, 192, 224), resamplemethod = sitk.sitkLinear) #这里要注意:mask用最近邻插值,CT图像用线性插值
    sitk.WriteImage(itkimgResampled,'D:/Datasets/LIVER/RCN/nii/resize_image/' + image_file[i][len(image_path):])

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
图像预处理是指在进行机器学习或计算机视觉任务之前,对图像进行一系列的处理和转换,以提取有用的特征并减少噪声的影响。Python提供了多种库和工具来进行图像预处理,其中包括Scikit-learn和OpenCV。 在Scikit-learn中,可以使用preprocessing模块来进行图像预处理。该模块提供了一系列的函数和类,用于对图像进行缩放、平滑、二值化、去噪等操作。下面是一个示例代码,展示了如何使用Scikit-learn进行图像预处理: ```python from sklearn import preprocessing # 加载图像数据 image_data = ... # 缩放图像 scaled_image = preprocessing.scale(image_data) # 平滑图像 smoothed_image = preprocessing.smooth(image_data) # 二值化图像 binarized_image = preprocessing.binarize(image_data, threshold=0.5) # 去噪图像 denoised_image = preprocessing.denoise(image_data) # 其他图像预处理操作... ``` 另外,OpenCV也是一个强大的图像处理库,提供了丰富的图像处理函数和算法。可以使用OpenCV进行图像的读取、缩放、旋转、滤波、边缘检测等操作。下面是一个示例代码,展示了如何使用OpenCV进行图像预处理: ```python import cv2 # 读取图像 image = cv2.imread('image.jpg') # 缩放图像 resized_image = cv2.resize(image, (new_width, new_height)) # 旋转图像 rotated_image = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE) # 滤波图像 blurred_image = cv2.blur(image, (5, 5)) # 边缘检测 edges = cv2.Canny(image, threshold1, threshold2) # 其他图像预处理操作... ``` 通过使用Scikit-learn和OpenCV,你可以根据具体的需求对图像进行预处理,以便更好地应用于机器学习或计算机视觉任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值