PET,CT图像融合笔记

该博客详细介绍了在Python环境下使用OpenCV和SimpleITK库进行PET-CT图像的融合过程。首先通过MaxMinNormalizer函数对CT和PET图像进行归一化,然后通过调整不同权重比例实现图像融合。代码实现了从数据读取、归一化到图像融合的完整流程,并保存了融合后的图像。此方法有助于医学影像的分析和诊断。
摘要由CSDN通过智能技术生成

左图:PET图像 中图:CT图像 右图:两图融合之后的图像 

 

 

Reference:

四川大学华西医院PET-CT中心petct数据采集和处理的过程是怎么样的?
PET-CT怎样进行图像融合?
图像融合实现CT与PET图像的融合 OpenCV实现(附实验结果)

医学成像技术简介(CT,MRI等)及相关论坛、技术应用链接

基于深度学习的CT图像肺结节自动检测技术一——数据预处理(归一化,数据增强,数据标记)


实现:

import nibabel as nib
import cv2
import SimpleITK as sitk
import numpy as np

# 归一化
def MaxMinNormalizer(data):
    data_max = np.max(data)
    data_min = np.min(data)
    data_normalize = (data - data_min) / (data_max - data_min)
    return data_normalize

# 融合CT数据与PET数据
def Fusion(path_CT, path_PET):
    image_CT = nib.load(path_CT).get_data()
    image_CT = image_CT.astype(float)
    image_CT_size = np.shape(image_CT)
    # 归一化 CT
    image_CT = MaxMinNormalizer(image_CT)

    # 重采样后的PET全身图像
    image_PET = nib.load(path_PET).get_data()
    image_PET = image_PET.astype(float)
    # 归一化 PET
    image_PET = MaxMinNormalizer(image_PET)


    #  融合比例
    percent_list = []
    for i in range(1, 10):
        percent_list.append(i / 10)
    # fusion CT , PET,
    # percent_list=[0.1] # best performance
    for percent in percent_list:
        ImageFusion = np.zeros(image_CT_size)
        for num in range(image_CT_size[2]):
            image_CT_slice = image_CT[:, :, num]
            image_PET_slice = image_PET[:, :, num]
            # 按照比例融合数据
            img_mix = cv2.addWeighted(image_CT_slice, percent, image_PET_slice, 1 - percent, 0)
            ImageFusion[:, :, num] = img_mix
        ImageFusion = np.transpose(ImageFusion, (2, 1, 0))
        ImageFusionISO = sitk.GetImageFromArray(ImageFusion, isVector=False)

        # 获取图像扫描及空间信息
        input_PET_property = sitk.ReadImage(path_PET)
        spacing = np.array(input_PET_property.GetSpacing())
        direction = np.array(input_PET_property.GetDirection())
        Origin = np.array(input_PET_property.GetOrigin())
        
        # 重新把融合后的数据设置图像信息
        ImageFusionISO.SetSpacing(spacing)
        ImageFusionISO.SetOrigin(Origin)
        ImageFusionISO.SetDirection(direction)

        # 保存重采样后的数据
        soffix_name = path_PET[-7:]
        file_name = path_PET[:-19]
        # savepath_name = file_name + '_modified_fusioin_0.6' + soffix_name
        # savepath_name = file_name + 'CTPETFusioin_LINEAR_'+ str(percent) + soffix_name
        savepath_name = file_name + 'CTPETFusioin_' + str(percent) + soffix_name

        sitk.WriteImage(ImageFusionISO, savepath_name)
    
    pass

def main():
    name_list = ['CT', 'PET_Resample']
    root = '/data/'
    
    # CT全身图像数据路径
    input_CT = root + name_list[0] + '.nii.gz'
    # PET全身图像数据路径
    input_PET = root + name_list[1] + '.nii.gz'
    
    # 融合CT与PET
    Fusion(input_CT, input_PET)



if __name__ == '__main__':
    main()

 Game Over~~~

 

 

 

 

 

 


 

 

  • 3
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
PET/CT图像融合是将正电子发射断层扫描(PET)图像和计算机断层扫描(CT)图像结合起来以提供更全面和准确的医学图像信息。有几种方法可以实现PET/CT图像融合。 一种常用的方法是使用PET/CT Fusion Module,这是一个软件模块,可以将PETCT图像进行配准和融合,以便在同一图像中显示PETCT的信息。 另一种方法是基于Surfacelet变换的PETCT图像融合。这种方法使用Surfacelet-三维超小波工具将CTPET图像进行分解和滤波,然后将它们重新组合成一个融合图像。这种方法可以提供更丰富的图像细节和更准确的图像对比度。 此外,早期版本的3Dslicer软件提供了PET/CT融合模块,用于将PETCT图像进行融合。然而,在4.0以上的版本中,这个模块被替换为PETStandardUptakeValueComputation模块。 综上所述,PET/CT图像融合可以通过软件模块、Surfacelet变换或使用特定软件工具来实现,以提供更全面和准确的医学图像信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Modules:PETCTFusion-Documentation-3.6](https://blog.csdn.net/qimo601/article/details/90904114)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [论文研究-基于Surfacelet变换的PETCT图像融合 .pdf](https://download.csdn.net/download/weixin_39841365/11620109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值