在《利用Python打开DICOM CT文件》一文中,我们利用pydicom.dcmread()读取了CT图像。本文中我们将修改load_scan()函数来读取RTstructure文件并获取勾画列表

1. 打开Jupyter notebook,导入需要的科学包

import numpy as npimport mathimport pydicomimport osimport matplotlib.pyplot as pltimport scipy.ndimagefrom skimage import measure, draw

2. 在load_scan()加入t.Modality == 'RTSTRUCT'作为判断读取RTstructure文件

def load_scan(path):    temp = [pydicom.dcmread(path + f) for f in os.listdir(path)]    RT = [t for t in temp if t.Modality == 'RTSTRUCT']    slices = [t for t in temp if t.Modality == 'CT']    slices.sort(key = lambda x: int(x.InstanceNumber))    try:        slice_thickness = np.abs(slices[0].ImagePositionPatient[2] - slices[1].ImagePositionPatient[2])    except:        slice_thickness = np.abs(slices[0].SliceLocation - slices[1].SliceLocation)            for s in slices:        s.SliceThickness = slice_thickness            return slices, RT

3. 对RTstructure文件下的ROI名称进行逐个读取。

def get_roi_list(RTcontour):    name = []    for s in RTcontour.StructureSetROISequence:        name.append(s.ROIName)

StructureSetROISequence下的ROIName存储了该勾画的名称信息

4. 以HNSCC_01文件夹下的CT和RTstructure文件为例。后台回复“HNSCC01”获取相关文件

# open CT_lung datasetdir_path_ct = './Data/HNSCC_01/'patient_ct, rtStructure = load_scan(dir_path_ct)

5. 利用get_roi_list()获取勾画列表

get_roi_list(rtStructure[0])>> ['Marked Isocenter', 'Final Isocenter', 'SCV Calc Pt', 'LAO MNB Isocenter', 'CTV 57', 'CTV 57 Sub', 'PTV 57', 'CTV 60', 'CTV 60 Sub', 'PTV 60', 'CTV 70', 'CTV 70 Sub', 'PTV 70', 'GTV', 'GTV Nodes', 'Cord', 'Cord_EXPANDED', 'Brainstem', 'Brainstem_EXPANDED', 'Rt Parotid', 'Lt Parotid', 'Mandible', 'Auditory <50', 'External', 'Contract', 'Ring', 'Bridge', 'Total', 'Avoid', 'Oral Avoid', 'C5C6']

看完本文有收获?请分享给更多人

推荐阅读

未经授权不得转载如有需要请添加助手微信PI3_141592653

关注「质子重离子放疗」公众号

与中国物理师一同成长

python获取window共享目录列表_利用Python获取DICOM RTstructure勾画列表相关推荐

  1. python获取股票逐笔交易数据_利用python下载股票交易数据

    前段时间玩Python时无意看到了获取股票交易数据的tushare模块,由于自己对股票交易挺有兴趣,加上现在又在做数据挖掘工作,故想先将股票数据下载到数据库中,以便日后分析: # 导入需要用到的模块 ...

  2. python搜索pdf内容所在页码_利用Python在pdf文档中寻找某些词出现的页码

    要研究pdf文件的页码,首先要考虑这个文件的种类.pdf可能是一本书的电子版,可能是一份简历.可能是由Word.PPT或其他文档导出的--如果不是一本书,通常页面内容里是没有页码的:如果是一本书,虽然 ...

  3. python 替换array中的值_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  4. python数据库操作批量sql执行_利用Python如何批量修改数据库执行Sql文件

    利用Python如何批量修改数据库执行Sql文件 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用Python如何批量修改数据库执行Sql文件.txt ] (友 ...

  5. python定时开关机的代码_利用Python实现Windows定时关机功能

    是最初的几个爬虫,让我认识了Python这个新朋友,虽然才刚认识了几天,但感觉有种莫名的默契感.每当在别的地方找不到思路,总能在Python找到解决的办法.自动关机,在平时下载大文件,以及跑程序的时候 ...

  6. python匹配excel相同的数据_利用Python实现Excel的文件间的数据匹配功能

    我们知道Excel有一个match函数,可以做数据匹配. 比如要根据人名获取成绩 而参考表sheet1的内容如下: 要根据sheet1匹配每人的成绩,用Excel是这么写 index(Sheet1!B ...

  7. python实现app自动签到器_利用Python实现App自动签到领取积分

    要自动签到,最简单的是打开页面分析请求,然后我们用脚本实现请求的自动化.但是发现食行没有页面,只有 APP,这不是一个好消息,这意味着需要抓包处理了. 有需要Python学习资料的小伙伴吗?小编整理[ ...

  8. python怎么使用别人的代码_利用Python查看微信共同好友功能的实现代码

    总有思路清奇的朋友存在,想实现查看微信共同好友: 由于之前分享的代码有获取过微信好友头像,所以当时第一反应是通过itchat微信接口获取好友信息,比对两个人的好友信息列表就可以实现了.按理说这么简单的 ...

  9. python如何实现共享报表系统_使用python来实现报表自动化-阿里云开发者社区

    xlwt 常用功能 xlrd 常用功能 xlutils 常用功能 xlwt写Excel时公式的应用 xlwt写入特定目录(路径设置) xlwt Python语言中,写入Excel文件的扩展工具.可以实 ...

最新文章

  1. tomcat结合nginx使用小结
  2. 【STM32】FreeRTOS 时间管理
  3. halcon初学者知识【16】如何将Image图象的区域拷贝出来?
  4. python爬虫简单的添加代理进行访问
  5. winrm service
  6. 前端学习(679):switch语句
  7. 磁盘及文件系统的管理
  8. 深入浅出网络编程与Swoole内核
  9. x11转发:通过ssh远程使用GUI程序
  10. React子组件怎么改变父组件的state
  11. 金融用户画像的数据合规法律问题
  12. 如何从uboot中推算路由器flash烧写地址
  13. 如何更改ElementUI组件的图标大小以及标签属性
  14. wav格式怎么转换成mp3?
  15. 独立服务器和云服务器的分类以及是如何区分的?
  16. 【计算机组成原理】中央处理器总结——基本知识要点汇总
  17. 笔记本电脑上的触摸板怎样关闭(神州战神)
  18. 芝诺数据高校产学研用成果展示|携程酒店(北京)数据分析报告
  19. Nginx是什么,为什么使用Nginx
  20. Windows 错误码整理

热门文章

  1. java -web html5学习1
  2. 安卓布局位置,dp与px的区别
  3. 谈判学:三招了解对方底线
  4. 中国智慧VS西方智慧-看中国IT风云与IT产业怪状
  5. SpringBoot 之集成 Spring AOP
  6. 定时任务 cron 表达式详解
  7. 安装Ubunutu音频视频库
  8. C++主要操作符重载的定义和总结
  9. .NET:如何让线程支持超时?
  10. biztalk BLogs