根据截断面的dicom文件生成三种视图的dicom文件

由于给出的dicom文件只有阶段面的展示,而我们需要完成横断面、矢状面、冠状面三种视图的展示。在js方面缺少对dicom文件进行处理的库,因此需要借助python 的SimpleITK库来生成三种视图的dicom文件,以此来在前端网页进行展示。

网上教程质量都比较低下,为此花费一些时间查看了SimpleITK的官方文档和例子,完成了三种视图的dicom文件的生成。

以下是python代码:

import SimpleITK as sitk
import os# 输出某一切片dicom文件
# new_img是三维数据
# out_dir是输出到的文件夹
def writeSlices(new_img, targetPath):if os.path.exists(os.path.join(targetPath, 'hengduanmian')) == False:os.mkdir(os.path.join(targetPath, 'hengduanmian'))if os.path.exists(os.path.join(targetPath, 'shizhuangmian')) == False:os.mkdir(os.path.join(targetPath, 'shizhuangmian'))if os.path.exists(os.path.join(targetPath, 'guanzhuangmian')) == False:os.mkdir(os.path.join(targetPath, 'guanzhuangmian'))shape = new_img.GetSize()for i in range(shape[2]):image_slice = new_img[:, :, i]sitk.WriteImage(image_slice, os.path.join(os.path.join(targetPath, 'hengduanmian', str(i) + '.dcm')))for i in range(shape[1]):image_slice = new_img[:, i, :]sitk.WriteImage(image_slice, os.path.join(os.path.join(targetPath, 'guanzhuangmian', str(i) + '.dcm')))for i in range(shape[0]):image_slice = new_img[i, :, :]sitk.WriteImage(image_slice, os.path.join(os.path.join(targetPath, 'shizhuangmian', str(i) + '.dcm')))if __name__ =='__main__':dicomsPath = './CBCT'targetPath = './dcmOutPut'reader = sitk.ImageSeriesReader()dicom_names = reader.GetGDCMSeriesFileNames(dicomsPath)reader.SetFileNames(dicom_names)image = reader.Execute()writeSlices(image, targetPath)

2021-07-18 三种视图的dicom文件的生成相关推荐

  1. 华为设备接口视图_华为交换机的三种视图

    华为交换机的三种视图 : 用户视图 , 系统视图 , 接口 视图 用户视图 : 刚开始登入交换机时的视图 , 一般看到的是尖括号 <> . save // 配置完交换机后保存当前配置的命令 ...

  2. adb 重命名_Linux操作系统:三种最基本的文件重命名方法

    在我们的工作生活中,不管是程序员还是非程序员,我们都会遇到过一个需求,那就是对一堆的文件进行重命名.在Windows下有很多优秀的软件可以帮助我们完成这个需求,而在Linux环境下,我们可以简单敲一些 ...

  3. 【Doris Weekly FAQ】2021.07.05~2021.07.18

    观众朋友们: 晚上好! 欢迎收看[ Doris 近日要闻]~本次为您带来的是 2021年07月15日 - 2021年07月18日 的双周总结. Doris 社区周报每期会包含 FAQ 环节.我们会在社 ...

  4. 读取Java文件到byte数组的三种方式及Java文件操作大全(包括文件加密,String加密)

    读取Java文件到byte数组的三种方式 package zs;import java.io.BufferedInputStream; import java.io.ByteArrayOutputSt ...

  5. 安卓版kindle电子书位置_安卓手机APP如何打开三种格式的电子书文件

    首先登陆网站,在电脑端下载三种格式的<手把手教你玩脱口秀>,分别是epub ./mobi./pdf.格式. 一.epub.格式 1.在电脑端下载好后,直接把文件(电子书)发到手机上,在手机 ...

  6. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取

    创建连接对象的三种方式 //第一种方式Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/m ...

  7. C#蓝牙连接及传输数据的三种方式(蓝牙传输文件、二进制数据)

    先下载InTheHand.Net.Personal.dll并在C#中引用,这个需要在网上下载 第一种.通过ObexWebRequest传输文件 先看界面 using InTheHand.Net; us ...

  8. 三种C/C++创建文件夹的方法

    第一种: 调用MFC封装好的接口函数,主要会用到 PathIsDirectory //判断是否存在 ::CreateDirectory //创建 例如: #include "shlwapi. ...

  9. springMVC的三种视图解析器ViewResolver

    1.URLBasedViewResolver 提供了一种拼接 URL 的方式来解析视图.通过 prefix 属性指定前缀,suffix 属性指定后缀.当 ModelAndView 对象返回具体的 Vi ...

最新文章

  1. Oracle CDC (Change Data Capture)更新数据捕获——概述
  2. 前端人员如何模拟慢网速环境
  3. Java学习笔记之[ 利用扫描仪Scanner进行数据输入 ]
  4. vuex实践之路——笔记本应用(三)
  5. BitMEX将于3月份分批推出DOT、YFI、UNI等六个币种的双币种永续合约
  6. 使用ExposedObject对Asp.net MVC中匿名类型的JsonResult做单元测试
  7. 闲来无事,画个佩奇可好?
  8. Vs code 通用插件
  9. keras中TimeDistributed的用法
  10. c++ List、Vector、Stack、Queue使用
  11. python中的颜色及其编码
  12. SpringBoot项目防止Sql注入
  13. NSIS安装或卸载时检查程序是否正在运行
  14. 利用NXlog采集Windows系统日志
  15. 硬件笔记1:80508550三极管对管驱动电机电路(已经实测可用)
  16. 【爬虫】哔哩哔哩校园招聘信息
  17. 大饱眼福,52个数据可视化图表鉴赏
  18. $(window).height()和$(document).height()返回值尽然出现了一样的情况
  19. IntelliJ IDEA)中弹出“IntelliJ IDEA License Activation”时怎么办
  20. word2010 论文引用/文献插入 保姆级图解

热门文章

  1. 【Lesson 1】 和弦 Chord
  2. 计算机滴滴响重启,电脑发出滴滴声是什么原因(常见的4个故障和解决方法)...
  3. 小心啦!水上有“天眼”,查你没商量!
  4. css筋斗云,CSS3 七龙珠筋斗云动画
  5. U-boot2022.07 imx6q 移植 - SPL-DTC-DCD
  6. 2022年国庆节水篇
  7. c++怎么判断系统是64位还是32位
  8. 阿里巴巴有哪些好玩的分布式开源框架?
  9. 微带线和带状线的SIEMC分析以及对DDR等长设置的影响
  10. 全网最全java Springboot对接微信公众号开发平台(可能是最全)!