【问题标题】:Converting .nrrd Segmentation to Nifti Volume with reference volume使用参考卷将 .nrrd 分段转换为 Nifti 卷
【发布时间】:2021-06-26 09:14:43
【问题描述】:

我有 200 多个具有匹配分段的 CT 卷文件。卷采用 .nrrd 格式,分段采用 seg.nrrd 格式。我需要将这两种格式都设为 .nii.gz 格式,并且我想编写从一种格式到另一种格式的转换脚本。

关于卷,一切都很简单,使用sitk:

将 SimpleITK 导入为 sitk

img = sitk.ReadImage(“your_image.nrrd”) sitk.WriteImage(img, “your_image.nii.gz”)

我也对分段做了同样的事情,乍一看效果很好。但现在的问题是分段不再注册到卷中。图像尺寸和图像来源不再相同,因此我无法处理转换后的图像。

当我使用 3D-Slicer 执行以下手动步骤时,也会发生同样的情况: 1. 将 .seg.nrrd 文件加载到 Slicer 作为分割 2. 将分割保存为 .nrrd 文件而不是 seg.nrrd 3. 导入.nrrd 文件为 Volume 并将分段保​​存为 .nii.gz

但我想出了一种在保留所有维度的同时手动转换数据类型的方法:1. 导入卷以及相应的分段 (.seg.nrrd) 2. 将分段导出到标签图,参考卷设置为我对应的卷 3. 将 Labelmap 保存为 nii.gz(4. 不确定我的项目是否需要该步骤:将 Labelmap 转换为标量卷并安全保存为 nii.gz)

在 3. 和 4 两种情况下,我都有一个尺寸匹配的 nii.gz 文件。但是因为我有 200 多个卷,所以我需要编写脚本。但到目前为止我还没有发现任何东西。你有什么想法?谢谢!

【问题讨论】:

    标签: python data-conversion dataformat nifti medical-imaging


    【解决方案1】:

    我相信您可以为此使用TorchIO 中的Resample 转换:

    import torchio as tio
    
    # Fill these two lists
    ct_paths = []
    seg_paths = []
    
    for ct_path, seg_path in zip(ct_paths, seg_paths):
        image = tio.LabelMap(seg_path)
        transform = tio.Resample(ct_path)
        transformed = transform(image)
        out_path = seg_path.replace('.seg', '_registered')
        transformed.save(out_path)
    

    如果您的配对具有相同的间距和方向,这将简单地填充您的分段,使原点和形状保持一致。

    免责声明:我是 TorchIO 的主要开发者。

    【讨论】:

      【解决方案2】:

      我认为我们必须将 label.nrrd 转换为参考图像,例如具有 FTITI 或 nrrd 格式的 CT 或 MRI 图像。关键词是使用 SimpleITK 函数 TransformPhysicalPointToIndex 将 label.nrrd 的原点转换为图像空间中的相关索引。希望下面的demo可以帮到你

      roi_data = sitk.GetArrayFromImage(roi_image)
      start_point = ref_image.TransformPhysicalPointToIndex(roi_image.GetOrigin())
        
      new_roi_array = np.zeros(ref_image.GetSize())
      new_roi_array[start_point[0]: start_point[0] + roi_image.GetSize()[0], 
                    start_point[1]: start_point[1] + roi_image.GetSize()[1], 
                    start_point[2]: start_point[2] + roi_image.GetSize()[2]
                    ] = roi_data
        
      new_roi_image = sitk.GetImageFromArray(new_roi_array)
      new_roi_image.CopyInformation(ref_image)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-11
        • 1970-01-01
        • 2022-10-05
        • 2019-06-09
        • 1970-01-01
        • 2019-08-18
        • 2021-09-24
        • 2023-03-05
        相关资源
        最近更新 更多