医学图像处理——DeepDrr工具CT生成DRR
创始人
2024-02-01 22:09:43

医学图像处理——DeepDrr工具CT生成DRR

  • 一、DeepDrr工具介绍
  • 二、DeepDRR工具使用
  • 三、测试DeepDRR工具
    • 3.1 测试数据集
      • 3.1.1 阿里云数据
      • 3.1.2 LIDC-IDRI肺结节dicom数据集
      • 3.1.3 LIDC-IDRI肺结节dicom数据集
    • 3.2 测试代码
  • 四、总结

一、DeepDrr工具介绍

它可以将CT数据模拟X射线投影生成DRR数据。
DeepDRR将3D和2D的材料分解和散射估计的机器学习模型分别与投影、衰减和噪声注入的分析模型相结合,以实现所需的性能,其实现的流程图如下:
在这里插入图片描述1. DeepDRR工具Github链接
2. DeepDRR工具文档说明

二、DeepDRR工具使用

由于实验室的1080ti不支持cuda11,为了节约调试时间就租用了RTX 2080 Ti * 1卡,租用平台AutoDL,按照1. DeepDRR工具Github链接配置环境就行,在这个平台直接跑README.md文件内容。

# 注意把该命令
conda env create -f environment.yaml
# 换成
conda env create -f environment.yml
# 下面是文档生成命令不用管
sphinx-apidoc -f -o docs/source deepdrr

后续就是提示缺啥包就按啥包。

三、测试DeepDRR工具

3.1 测试数据集

它提供了一个最简单的使用例子,从NifTi.nii.gz(nii文件是volume file格式,常见的一种医学图像,可以由MRI软件生成,它可以看成2维,也可以看成三维)文件中加载一个CT数据,并模拟一个X射线投射生成一张DRR。但是我们没有上述CT数据。

3.1.1 阿里云数据

1. 阿里云数据,找了几个数据集,都是PNG格式的,后续使用.png转.nii.gz,其效果不好。

// 多幅png图片转.nii.gz文件
import numpy as np
import nibabel as nib
from glob import glob
from torch.utils.data import Dataset
from torchvision import transforms
from PIL import Imageclass DataSet(Dataset):  # 方便读数据def __init__(self, label_path):self.label_path = label_pathself.transform = transforms.Compose([transforms.ToTensor()],)def __len__(self):return len(self.label_path)def __getitem__(self, idx):label = self.label_path[idx]label = Image.open(label)label = self.transform(label)return labellabel_path = r'C:\Users\tanhui\Downloads\CP\679\3041\*'
label_path = glob(label_path)
dataset = DataSet(label_path)
label = dataset[0]
z, x, y = label.shape
z = len(dataset)  # 通道数
allImage = np.zeros([x, y, z], dtype='uint8')
# print(x, y, z)
for i in range(z):label = dataset[i]singleImage = label.numpy()allImage[:, :, i] = singleImage
# print(allImage.shape)
new_image = nib.Nifti1Image(allImage, np.eye(4))
nib.save(new_image, 'data2.nii.gz')

3.1.2 LIDC-IDRI肺结节dicom数据集

2. LIDC-IDRI肺结节dicom数据集,这个数据集可能要科学上网才下得快且要安装它站里面的一个下载工具(数据集太大,工具帮助我们选择性下载),附上一个简单的下载教程。

// 多张dicm格式文件转.nii.gz文件
#coding=utf-8
import SimpleITK as sitkdef dcm2nii(dcms_path, nii_path):# 1.构建dicom序列文件阅读器,并执行(即将dicom序列文件“打包整合”)reader = sitk.ImageSeriesReader()dicom_names = reader.GetGDCMSeriesFileNames(dcms_path)reader.SetFileNames(dicom_names)image2 = reader.Execute()# 2.将整合后的数据转为array,并获取dicom文件基本信息image_array = sitk.GetArrayFromImage(image2)  # z, y, xorigin = image2.GetOrigin()  # x, y, zspacing = image2.GetSpacing()  # x, y, zdirection = image2.GetDirection()  # x, y, z# 3.将array转为img,并保存为.nii.gzimage3 = sitk.GetImageFromArray(image_array)image3.SetSpacing(spacing)image3.SetDirection(direction)image3.SetOrigin(origin)sitk.WriteImage(image3, nii_path)if __name__ == '__main__':dcms_path = r'D:\data\manifest-1668773888310\LIDC-IDRI\LIDC-IDRI-0002\01-01-2000-NA-NA-98329\3000522.000000-NA-04919'  # dicom序列文件所在路径nii_path = r'.\test.nii.gz'  # 所需.nii.gz文件保存路径dcm2nii(dcms_path, nii_path)

附上dicm格式文件转.nii.gz文件详细教程

3.1.3 LIDC-IDRI肺结节dicom数据集

使用MRIcroGL软件查看合成的CT数据。
在这里插入图片描述

3.2 测试代码

使用下面测试代码,将上面合成的test.nii.gz CT数据生产一张DR。

from deepdrr import geo, Volume, MobileCArm
from deepdrr.projector import Projector # separate import for CUDA initcarm = MobileCArm()
ct = Volume.from_nifti('/path/to/ct_image.nii.gz')# Initialize the Projector object (allocates GPU memory)
with Projector(ct, carm=carm) as projector:# Orient and position the patient model in world space.ct.orient_patient(head_first=True, supine=True)ct.place_center(carm.isocenter_in_world)# Move the C-arm to the desired pose.carm.move_to(alpha=30, beta=10, degrees=True)# Run projectionimage = projector()

效果如下:
在这里插入图片描述

四、总结

简单的将DeepDRR工具运行了一下,初测了它的很小一部分功能,后续期待能基于该工具做出更好的应用。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...