本文由Markdown语法编辑器编辑完成。

1. DICOM模块

3d Slicer作为医学影像的开源处理软件,当然离不开医学影像数据。
DICOM模块,就是专门负责DICOM影像的查找,获取,发送和接收的模块。

官方文档中关于DICOM的描述,见链接: https://slicer.readthedocs.io/en/latest/user_guide/modules/dicom.html

上述图像介绍了,3d Slicer加载医学影像的流程。
3d Slicer既支持加载DICOM影像数据,也支持加载非dcm数据,如NRRD, STL, JSON等格式的数据。
除了本地加载影像文件外,DICOM协议支持通过网络传输影像。也就是如上图中,红色框内的: DICOM query/retrieve。

2. Query/Retrieve功能介绍

Query/Retrieve功能,对应的是dicom协议中的findscu和movescu/getscu.

功能 dcmtk指令
Query findscu
Retrieve movescu/getscu

在3d Slicer的DICOM页面中,有一个项目是: DICOM networking, 就是提供通过网络来进行DICOM影像传输的功能入口。

点击: "Query and retrieve"按钮,即可以进入如下的弹出页面。
页面中显示了,3d Slicer默认的AE Title为: “CTKSTORE”。
下面则是配置需要连接的PACS服务器的信息。
由于我已经在本地用dcm4chee搭建了一个PACS服务器。PACS服务器的AE Title是: DCM4CHEE,
Address是:192.168.109.83,Port是11112,且支持通过CGET的方式获取数据。

右侧的红框 Search Options, 就是通过一些已知的Patient/Study/Series的信息,来从PACS的服务器检索相关的数据。检索选择框下方的两列,看起来比较明显。一列是日期,另一列是Modality。
但是上方的 Name/Study/Series/ID, 就不是很明显。不知道应该输入什么信息,也不知道应该以什么样的格式来输入。
在Google上检索了很多关于3d Slicer的query/retrieve的文章,但都是关于如何利用下面的日期和Modality来query数据的,对于上面的Name/Study/Series/ID, 却没有介绍。

最后实在没有办法了。只能通过查询3d Slicer的源码来寻找有价值的信息了。
由于3d Slicer是一个持续了20多年的开源项目,因此代码量是相当庞大的。如何在如此庞大的代码量前面迅速地定位相关代码,也没有更好的办法。我只能是通过将代码加载在Visual Studio Code里面,然后利用编辑器自带的搜索功能,来搜索了。

我用的关键字是搜索框上方的"Search Options"。首先是在源码里面搜索,结果没有搜到任何信息。后来想到,3d Slicer在编译的过程中,同时还下载和编译了十几个项目的代码。因此,我又在3d Slicer bulid的目录下查找,结果真的找到了。

最后定位到的文件是位于3d Slicer的编译目录: Slicer-SuperBuild-Debug下的:
CTK/Libs/DICOM/Core/ctkDICOMQuery.cpp的函数: ctkDICOMQuery:query()中的Line 324 ~ 380.

  /* Now, for all keys that the user provided for filtering on STUDY level,* overwrite empty keys with value. For now, only Patient's Name, Patient ID,* Study Description, Modalities in Study, and Study Date are used.*/QString seriesDescription;foreach( QString key, d->Filters.keys() ){if ( key == QString("Name") && !d->Filters[key].toString().isEmpty()){// make the filter a wildcard in dicom styled->Query->putAndInsertString( DCM_PatientName,(QString("*") + d->Filters[key].toString() + QString("*")).toLatin1().data());}else if ( key == QString("Study") && !d->Filters[key].toString().isEmpty()){// make the filter a wildcard in dicom styled->Query->putAndInsertString( DCM_StudyDescription,(QString("*") + d->Filters[key].toString() + QString("*")).toLatin1().data());}else if ( key == QString("ID") && !d->Filters[key].toString().isEmpty()){// make the filter a wildcard in dicom styled->Query->putAndInsertString( DCM_PatientID,(QString("*") + d->Filters[key].toString() + QString("*")).toLatin1().data());}else if ( key == QString("Modalities") && !d->Filters[key].toString().isEmpty()){// make the filter be an "OR" of modalities using backslash (dicom-style)QString modalitySearch("");foreach (const QString& modality, d->Filters[key].toStringList()){modalitySearch += modality + QString("\\");}modalitySearch.chop(1); // remove final backslashlogger.debug("modalityInStudySearch " + modalitySearch);d->Query->putAndInsertString( DCM_ModalitiesInStudy, modalitySearch.toLatin1().data() );}// Rememer Series Description for later series query if we go through the keys nowelse if ( key == QString("Series") && !d->Filters[key].toString().isEmpty()){// make the filter a wildcard in dicom styleseriesDescription = "*" + d->Filters[key].toString() + "*";}else{logger.debug("Ignoring unknown search key: " + key);}}if ( d->Filters.keys().contains("StartDate") && d->Filters.keys().contains("EndDate") ){QString dateRange = d->Filters["StartDate"].toString() +QString("-") +d->Filters["EndDate"].toString();d->Query->putAndInsertString ( DCM_StudyDate, dateRange.toLatin1().data() );logger.debug("Query on study date " + dateRange);}

正如这段代码的注释部分所描述的,3d Slicer的Search Options,目前的对应关系是:

Search Options DICOM TAG
Name Patient’s Name
Study Study Description
Series Series Description
ID Patient ID
Date Study Date
Modality Modalities in Study

根据以上的对应关系,便可以在Search Options的对应的Tab页输入相应的查询条件,来进行数据的检索。

完。

3d Slicer-DICOM模块之Query/Retrieve功能介绍相关推荐

  1. BIM建模助手【土建模块】主要亮点功能介绍(上)

    BIM建模助手[土建模块]主要亮点功能介绍(上) 之前出过很多文章介绍过土建模块的功能,都是一个一个功能介绍,今天和大家分享土建模块的亮点功能,根据用户反馈使用较多的功能,除了传统的土建构件快速翻模功 ...

  2. BIM建模助手【土建模块】主要亮点功能介绍(下)

    昨天介绍了土建模块的亮点功能,都是用户使用较多的功能.今天也是如此,下面介绍的三个功能用户反馈比较好用的功能.希望有你喜欢的. 一.[生成过梁]一键按设计规范生成过梁. 需求场景:过梁是管线协调中比较 ...

  3. python中sys模块有什么用_Python中模块之sys的功能介绍

    argv 命令行参数 方法:sys.argv 返回值:list 例如:test1.py文件中有两句语句1.import sys 2.print(sys.argv) python test1.py 2 ...

  4. slicer安装_对3D Slicer软件安装离线扩展包

    王奎重 有时候由于网络原因,已经安装好的3D Slicer软件不能安装扩展功能,导致Slicer功能受限.下面介绍如何安装离线扩展包. 1.打开3D Slicer软件,点击①右上角的扩展模块图标,再点 ...

  5. 3D Slicer Volume Rendering模块使用简单说明

    这个模块还是比较好用的,打开Volume的小眼睛就可以看到渲染的结果 还有一个要选的就是渲染什么模式,在Present那里 其他的简单试试就可以知道作用 官方网站 Volume rendering - ...

  6. python 命令行打开3d slicer模块

    python 命令行打开3d slicer模块 1.打开data模块 1.打开data模块 >>> slicer.modules.data.widgetRepresentation( ...

  7. 3d slicer读取html图像,利用3DSlicer对JPG、BMP、TIF等格式图像三维重建

    济南军区总医院神经外科 王奎重 3D Slicer医学重建软件对图像有强大的三维重建功能,以前曹主任介绍过利用原始DICOM数据导入的方法有很多,我也介绍过对于不同机器及软件导出标准格式的DICOM ...

  8. 3D Slicer实现纤维追踪(大脑纤维束成像)+核磁共振影像数据处理

    3D Slicer实现纤维追踪(大脑纤维束成像)+核磁共振影像数据处理 讲解视频内容请移步Bilibili: https://space.bilibili.com/542601735 入群讨论请加v ...

  9. 3d slicer matlab,使用3D Slicer进行颅骨去除

    关于3D Slicer的下载.安装及模块安装在上一篇博客中以及介绍过,以下将专注于使用3D Slicer进行颅骨去除 准备 此次,我们需要安装SwissSkullStripper模块,安装后需要重启软 ...

最新文章

  1. 题解 UVA11354 【Bond】
  2. 简单的安卓app小程序代码_开发一款APP大概需要多少钱?
  3. 05-配置数据库的远程连接 创建hive数据库的时候要选择latin1
  4. 51nod 1127 最短的包含字符串(尺取法)
  5. 论文浅尝 | 一种可解释的语义匹配复值网络
  6. Docker基础入门总结
  7. 《Python核心编程》第二版第308页第十一章练习 续一 -Python核心编程答案-自己做的-...
  8. SQLyog 安装教程
  9. 04 捷联式惯导系统概要
  10. 使用Python搭建人脸识别考勤系统
  11. 03系统服务器下安装WMP10实际经验分析
  12. Python | pynlpir库 | pynlpir.LicenseError:Your license appears to have expired. Try running “pynlpir“
  13. PowerDesigner清理注册表
  14. JAVA高级应用课程设计(网上书城系统——会员登陆模块的设计与实现)
  15. JAVA-初步认识-第五章-数组-常见操作-进制转换(查表法)
  16. html导出excel合并单元格,JS导出EXCEL,动态设置单元格格式,合并单元格(横向或纵向)等操作...
  17. java导出excel自动计算公式
  18. 「备忘录」MacOS终端获取电脑硬件信息序列号UUID
  19. matlab滤波器滤除低频直流信号,对低频信号的滤波的方法
  20. 群晖nas部署python项目

热门文章

  1. 计算机专业 常用网站
  2. javascript 要点概要
  3. 【Spring】Spring Security介绍及其入门案例
  4. 都2021年了,还在问网络安全怎么入门,气得我当场脑血栓发作
  5. 燃尽图——项目经理的必备工具
  6. 2018年高职组——信息评估与管理赛题(解析)
  7. 实现网易云视频直播播放器功能
  8. 双指针,二分,模拟,贪心经典题目
  9. 单片机黑屏怎么回事儿_电脑为什么总是黑屏
  10. Oracle BBED单个数据文件跳过所有归档恢复