代码篇:对nifity图像的强度进行规范化

import SimpleITK as sitk
import os
def normalize_image(image_path, output_path):
    """对单张MRI图像进行强度归一化到[0, 255],并转换为uint8"""
    try:
        # 读取图像
        image = sitk.ReadImage(image_path)
        # 设置强度归一化的过滤器
        rescale_filter = sitk.RescaleIntensityImageFilter()
        rescale_filter.SetOutputMaximum(1)
        rescale_filter.SetOutputMinimum(0)
        # 执行强度规范化
        normalized_image = rescale_filter.Execute(image)
        # 将图像转换为uint8类型
        normalized_image_uint8 = sitk.Cast(normalized_image, sitk.sitkUInt8)
        # 保存强度规范化后的图像
        sitk.WriteImage(normalized_image_uint8, output_path)
        print(f"图像已保存到:{output_path}")
    except Exception as e:
        print(f"处理图像 {image_path} 时出错: {e}")


def process_directory(file_dir):
    """循环目录,将MR的灰度值归一化到[0,255]"""
    N = 0
    for root, dirs, files in os.walk(file_dir):
        for path in dirs:
            end_dirs = os.path.join(root, path)  # 使用os.path.join避免拼接错误

            # 只处理包含'T'的目录
            if 'T' in end_dirs:
                for img_name in os.listdir(end_dirs):
                    # 只处理文件名中包含"IMG_Resample"的图像
                    if "IMG_Resample" in img_name:
                        image_path = os.path.join(end_dirs, img_name)
                        output_path = os.path.join(end_dirs, img_name.replace('IMG_Resample', 'IMG_Resample_Norm'))
                        # 进行图像归一化
                        normalize_image(image_path, output_path)
                        # 删除原始图像文件
                        os.remove(image_path)
                        N += 1
                        print(f'已完成个数:{N}')
# 调用函数
process_directory( '../xx/D_multicenter_Dicom')

上述代码,文件查询的过程大家需要做适应性修改以适应自己的文件夹。此外,关于MRI文件强度规范化的范围值,可以参考以下:

  1. [0, 1]:最常见,适合一般的处理和机器学习任务。
  2. [-1, 1]:适合神经网络和深度学习任务,有助于加速训练过程。
  3. Z-score标准化:适合需要去除强度偏差或均衡强度分布的情况。
  4. [0, 255]:用于图像显示或与其他图像格式兼容的情况。
  5. 分区规范化:适用于多样本间的强度标准化,尤其用于跨设备或跨患者的数据集成。

选择哪种规范化方法取决于具体的应用场景,特别是在处理多种不同扫描参数、设备或患者数据时,可能需要根据需求选择合适的规范化方法。

一般设置【0,1】规范化区间最为常见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trouville01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值