MATLAB在图像处理中的应用

图像处理概念、算法和MATLAB

如何阅读和可视化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




与MATLAB®R2019b一起发布

|
  • 打印
  • 发送电子邮件

评论

如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。