QMAKABAKA 2024-03-22 18:17 采纳率: 0%
浏览 4

关于#python#的问题:分割大小和spacing同时修改

#我在做分割影像组学实验
分割出来的mask大小为128×128×128,spacing为1×1×1,但是我训练验证的图像标签大小是128×128×128,spacing不是统一的,我想做影像组学实验的时候,是不是要把图像和分割出来的mask,他俩的size和spacing统一?
或者帮我改一下下面这段代码,我写的代码虽说是能把size和spacing改成128×128×128和1×1×1,但是内容被剪裁了很多
附:我写的代码

import os
import SimpleITK as sitk

def resize_nii_files(input_directory, output_directory, new_size=(128, 128, 128)):
    for filename in os.listdir(input_directory):
        if filename.endswith('.nii.gz'):
            input_filepath = os.path.join(input_directory, filename)
            output_filepath = os.path.join(output_directory, filename)
            image = sitk.ReadImage(input_filepath)
            
            # 获取当前尺寸和间距
            current_size = image.GetSize()
            current_spacing = image.GetSpacing()
            
            # 调整图像大小
            resampler = sitk.ResampleImageFilter()
            resampler.SetSize(new_size)
            resampled_image = resampler.Execute(image)
            
            # 插值调整间距
            resampled_spacing = [current_spacing[i] * current_size[i] / new_size[i] for i in range(3)]
            resampled_image.SetSpacing(resampled_spacing)
            
            # 更新为1x1x1
            resampled_spacing = [1.0, 1.0, 1.0]
            resampled_image = sitk.Resample(resampled_image, new_size, sitk.Transform(), sitk.sitkLinear, resampled_image.GetOrigin(), resampled_spacing, resampled_image.GetDirection(), 0.0, resampled_image.GetPixelID())
            
            # 保存调整后的图像
            sitk.WriteImage(resampled_image, output_filepath)

# 指定输入和输出目录
input_directory = 'xxx'
output_directory = 'yyy'

# 创建输出目录
if not os.path.exists(output_directory):
    os.makedirs(output_directory)

# 调整所有.nii.gz文件
resize_nii_files(input_directory, output_directory)


  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-22 18:18
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:分割出来的mask大小为128×128×128,spacing为1×1×1,但是训练验证的图像标签大小是128×128×128,spacing不是统一的,需要把图像和分割出来的mask,他俩的size和spacing统一吗?如果需要,怎么处理? 回答: 在影像组学实验中,为了保证模型的准确性和一致性,需要将训练和验证的图像标签(即分割出来的mask)与原始图像的size和spacing统一。这是因为模型训练的过程中需要使用同一尺寸和间距的图像,否则可能会导致模型训练出现错误,降低模型的准确度。 针对上述问题,可以通过调整分割出来的mask的size和spacing,使其和训练验证的图像标签保持一致。具体步骤如下:
    1. 获取分割出来的mask的当前尺寸和间距;
    2. 调整分割出来的mask的大小为128×128×128;
    3. 根据原始图像的间距,插值计算得到新的间距;
    4. 将分割出来的mask的间距调整为新的间距(1×1×1);
    5. 根据新的间距,插值得到新的分割出来的mask;
    6. 保存调整后的分割出来的mask。 下面是修改后的代码:
    import os
    import SimpleITK as sitk
    def resize_nii_files(input_directory, output_directory, new_size=(128, 128, 128)):
        for filename in os.listdir(input_directory):
            if filename.endswith('.nii.gz'):
                input_filepath = os.path.join(input_directory, filename)
                output_filepath = os.path.join(output_directory, filename)
                image = sitk.ReadImage(input_filepath)
                # 获取当前尺寸和间距
                current_size = image.GetSize()
                current_spacing = image.GetSpacing()
                # 调整图像大小
                resampler = sitk.ResampleImageFilter()
                resampler.SetSize(new_size)
                resampled_image = resampler.Execute(image)
                # 插值计算得到新的间距
                resampled_spacing = [current_spacing[i] * current_size[i] / new_size[i] for i in range(3)]
                # 将间距调整为1x1x1
                resampled_spacing = [1.0, 1.0, 1.0]
                # 根据新的间距,插值得到新的图像
                resampled_image = sitk.Resample(resampled_image, new_size, sitk.Transform(), sitk.sitkLinear,
                                                 resampled_image.GetOrigin(), resampled_spacing, resampled_image.GetDirection(), 0.0, resampled_image.GetPixelID())
                # 保存调整后的图像
                sitk.WriteImage(resampled_image, output_filepath)
    # 指定输入和输出目录
    input_directory = 'path/to/input/directory'
    output_directory = 'path/to/output/directory'
    # 创建输出目录
    if not os.path.exists(output_directory):
        os.makedirs(output_directory)
    # 调整所有.nii.gz文件
    resize_nii_files(input_directory, output_directory)
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月22日

悬赏问题

  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡
  • ¥20 基于MATLAB的TDOA
  • ¥15 为啥输入字体突然变了
  • ¥20 已知坐标,换成MATLAB可以用的数据
  • ¥15 这个python五子棋代码的每一句意思是什么啊
  • ¥15 求一段隐藏代码,隐藏一些内容