如何阅读和可视化DICOM卷
今年早些时候,我学到了一些关于DICOM数据集的知识,这让我很惊讶。我下载了一份头颈CT+PET研究报告,我想在MATLAB中创建一个体积数组。我一开始尝试了很难做到这一点,当然我弄错了。(扰流板:有一个简单的方法。)
我天真地认为DICOM数据集中的文件名顺序有某种意义。下面是我正在查看的文件夹:
您可以看到我的文件格式为00000.dcm,00001.dcm,…,000089.dcm。因此,我按照文件名顺序读取这些文件,并在第三维中连接数据。而且,我弄得一团糟。我假设文件名顺序对应于物理切片顺序,但我错了。
您可以通过查看切片位置返回的字段双康宁. 让我按文件名顺序读取文件,并绘制生成的切片位置。
文件夹=“/Users/eddins/OneDrive-MathWorks/General Reference/D/DICOM头颈PET CT数据集/HN-CHUM-001/08-27-1885-PANC.avec C.A.SPHRE或tte et cou-TP-74220/3-StandardFull-07232”; d=目录(文件夹)+“/*.dcm”);对于k=1:length(d)info=dicominfo(文件夹+"/"+d(k).姓名;切片位置(k)=信息切片位置;终止绘图(切片位置)标题(“切片位置”)
哦,那不好。我想知道这有什么意义吗?这些都是唯一的切片位置吗?让我先把它们排序,然后画出来。
绘图(排序(切片位置))标题(“已排序的切片位置”)
这更像是我所期望的。但这意味着我对文件名的假设完全错了。
但是等等!正如我所说,我做这件事很艰难。简单的方法是使用该函数dicomreadVolume,它使用DICOM元数据自动确定如何在输出卷中排列切片。
[V,sp]=dicomreadVolume(文件夹);
谁v
名称大小字节类属性V 512x512x1x90 47185920 int16
第三维的大小是1(我们称之为a)独生子女标注),因为体素没有多个颜色组件。我们可以使用挤压为了摆脱它。
V=挤压(V);
谁v
名称大小字节类属性V 512x512x90 47185920 int16
第二次输出dicomreadVolume包含有关体素的空间信息。
服务提供商
sp=带字段的结构:PatientPositions:[90×3双精度]像素间距:[90×2双精度]PatientEntation:[2×3×90双精度]
我喜欢使用卷查看器(容量测试器)找出可视化卷的最佳方法。
容积温度表(V)
使用返回的空间信息很有帮助dicomreadVolume对于卷查看器.
切片位置=排序(切片位置);比例因子=[像素间距(1,:)切片位置(2)-切片位置(1)];体积查看器(V、‘比例因子’、比例因子)
这里有一个卷查看器此数据的屏幕截图:
从卷查看器,可以将渲染和相机配置信息保存到可以传递给的结构伏尔肖,在普通地物窗口中显示体积可视化。您仍然必须将比例因子作为单独的参数传入。
volshow(V,config,“缩放因子”量表因子);
您是否在MATLAB中使用DICOM体积数据?请在评论中告诉我们您希望看到什么。
数据信用
- 癌症影像档案馆:克拉克K,文特B,史密斯K等。癌症影像档案馆(TCIA):维护和运行公共信息库。数字成像杂志。2013; 26(6): 1045-1057. 内政部:10.1007/s10278-013-9622-7。
- 头颈PET CT收集:Vallières,M.等人。头颈癌肿瘤失败风险评估的放射组学策略。Sci Rep 7,10117(2017)。doi:10.1038/s41598-017-10371-5
- 受试者ID:HN-CHUM-001
评论
如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。