从freesurfer分段创建dicom分段图像和结构化报表对象

fs2dicom的Python项目详细描述


#fs2dicom是一个将[freesurfer]输出转换为dicom的工具(https://surfer.nmr.mgh.harvard.edu/)。分别是dicom结构化报表对象。` aseg.stats`to`dicom-sr`使用[dcmqi](https://github.com/qiicr/dcmqi/)。

目前,仅支持和记录[`aseg.mgz`](http://surfer.nmr.mgh.harvard.edu/fswiki/subcorticalsegmentation/)和"aseg.stats"。未来的版本可能支持其他自由曲面分段和分段(例如不同皮质区域的厚度和体积)


必修的。或者,不在本地安装这些程序,可以使用[docker](https://docs.docker.com/install/)来运行必要的命令。默认情况下使用Docker。

注意:将来的更新应该能够删除Freesurfer依赖项,并用基于Python的工具替换其功能。

然后运行:
``
pip install-e.
```
这将安装运行"fs2dicom"所需的所有python需求(列在"requirements.txt"中)。

本地

docker是运行freesurfer的默认方式,dcmqi命令需要
create dicom seg/sr

freesurfer许可证密钥才能运行docker映像。这可以从以下网址下载:https://surfer.nmr.mgh.harvard.edu/registration.html


freesurfer命令用于将ASEG重新采样到本机空间将来
版本可能会删除此依赖项

选项:
--dcmqi type[docker local]使用docker或本地安装
dcmqi的版本(默认值:docker)
--dcmqi_docker_image dcmqi docker image的文本名称(默认值:
qiicr/dcmqi:latest)
--freesurfer_type[docker local]
使用docker或本地安装版本的
freesurfer(默认值:docker)
--freesurfer\u docker\u映像freesurfer docker映像的文本名称。
当前仅支持
corticometrics/fs6 base(默认值:
corticometrics/fs6 base:latest)
--fs_license_key到freesurfer license key文件的文本路径。
(默认值:由环境变量设置的路径
fs_license_key)
-h,--帮助显示此消息并退出。

T1-DICOM文件ASEG-U图像文件
[ASEG-DICOM段输出]

以及
输出到ASEG-DICOM SEG-U输出文件名(默认值:./aseg.dcm)


选项:
--DICOM SEG元数据架构的SEG元数据路径,描述
ASEG(默认值:在包内提供)
-h,--帮助显示此消息并退出。
```
``create sr`子命令选项
```
usagE:fs2dicom create sr[options]t1_dicom_file aseg_stats_file
[aseg_dicom_sr_output]


使用
freesurfer创建的aseg_stats_文件中的值创建dicom结构化报表对象aseg_dicom_sr_output(默认值:
./aseg-sr.dcm)。需要T1\U DICOM文件(使用
freesurfer处理的其中一个T1W DICOM文件)和ASEG\U DICOM段文件(默认值:./aseg.dcm,使用
--aseg\u DICOM段文件指定)来提供此DICOM SR的上下文。
sr元数据输出也被创建(默认值:./fs-aseg-sr.json,使用--sr_metadata_output指定的
,包含用于创建DICOM的值
sr.

例如,由
`fs2dicom create seg`(默认值:./aseg.dcm)创建的
--sr_metadata廑u输出路径json文件输出包含用于创建dicom sr的值(默认值:./fs-aseg-sr.json)
--seg廑u metadata path描述ASEG的DICOM SEG元数据架构的路径(默认值:在包中提供)
--用
aseg.stats值填充的DICOM SR模板的SR模板路径(默认值:在
包装)
-h,--帮助显示此消息并退出。

```

`"aseg.mgz"和"aseg.stats".

"aseg.mgz"到"dicom-seg"
1。从freesurfer调用[`mri\u vol2vol`](https://surfer.nmr.mgh.harvard.edu/fswiki/mri\u vol2vol),将'aseg.mgz'从freesurfer空间重新采样到输入T1 DICOM的本机空间,并转换为nifti。
```
mri卷2vol \
--mov/path/to/aseg.mgz \
--targ/path/to/t1/dicom/file \
--regheader \
--最近的\
--o aseg-native.nii.gz
``
2。使用[dmcqi]中的[itkimage2segimage`](https://qiicr.gitbooks.io/dcmqi-guide/user-guide/itkimage2segimage.html)(https://github.com/qiicr/dcmqi)在本报告中使用[`fs aseg.json`](fs2dicom/templates/fs aseg.json)将"aseg.nii.gz"转换为dicom-seg。
````
itkimage2segimage\
--inputdicomdirectory/path/to/t1/dicom/directory\
--inputmetadata/path/to/fs2dicom/templates/fs-aseg.json\
--inputmagelist aseg-native.nii.gz\
--outputdicom aseg.dcm
--skip
````

[`fs aseg.json`](fs2dicom/templates/fs aseg.json)映射[freesurferASEG标签](https://surfer.nmr.mgh.harvard.edu/fswiki/fstutorial/anatomicalroi/freesurfercolorlut)到[snomed](https://www.snomed.org/)代码并保留freesurfer推荐的颜色方案。

`fs aseg.json'由[emily]提供Lindemer)(https://www.linkedin.com/in/emily-lindemer-87206667/)


有关详细信息,请参阅[dcmqi gitbook](https://qiicr.gitbooks.io/dicom4qi/results/seg/freesurfer.html)。将"aseg.stats"文件读入"pandas"数据框
2。使用以下项填写[`fs aseg sr template.json`](fs2dicom/templates/fs aseg sr template.json)`jinja2`模板:
-T1 DICOM文件列表,
-ASEG'dicom seg'文件的名称,以及
-来自'aseg.stats'数据框的卷值
3。使用"dcmqi"的"tid1500writer"创建"dicom sr"文件:
```
tid1500writer\
--输入图像库目录/path/to/t1/dicom/directory\
--输入合成文本目录/path/to/aseg-dicom-seg/directory\
--输出dicom-aseg-sr.dcm\
--输入元数据fs-aseg-sr.json#在前一步中创建的
```
更多信息可以在以下位置找到:
-[`tid1500writer`用户指南](https://qiicr.gitbooks.io/dcmqi-guide/user\u guide/tid1500writer.html)
-[示例`--inputMetadata`JSON文件](https://github.com/qiicr/dcmqi/blob/master/doc/examples/sr-tid1500-ct-liver-example.json)
-[特定于ASEG的示例`--inputMetadata`JSON文件](示例/fs-aseg-sr.json)
-特定于主题的修改
-`"compositeContext"`需要指向DICOM-SEG对象
-`"imageLibrary"`需要指向源MPrage DICOM列表
-`"measurements"->;"measurementitems"-"value"`需要从"aseg.stats"
-`"measurements"->;"sourceseriesforimagesegmentation"`需要设置为DICOM"系列实例uid属性"(0020000 E)




欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java爬虫获取外部网站搜索结果   java Bluestack未连接到eclipse   java如何从ConstraintViolationException Hibernamte获取数据库字段名   HttpResponse HttpResponse=httpClient引发java运行时错误。执行(httpPost);   Jama中矩阵的java点积和叉积   java有什么方法可以唯一地识别可扩展设备吗?   java我需要用*来写我的名字,但我不断遇到一个错误,我对编码很陌生   java变量是在内部类中访问的。需要被宣布为最终决定。但我不想宣布最终结果   java如何缩短base64图像字符串,Android?   JavaSpringMVC:计划方法不自动触发   图形学习Java 2D API的好资源是什么?   如何在java中对方法进行排队   java JavaFX多行   java Selenium无法在[链接]上找到基于CSS元素的密码字段元素http://www.cartasi.it/gtwpages/index.jsp   Java中的equals()和hashCode()契约   软删除情况下的java Hibernate二级缓存   java为什么这段代码要两次调用这些方法?