了解DICOM图像属性以获得轴向/冠状/矢状切口

Cha*_*tte 0 dicom

我必须在c#中编写一个程序,能够解析DICOM并显示轴向,冠状和矢状切口.

好像这是很多工作,但我必须这样做!

我想,第一步就是理解DICOM文件.

我一直在阅读本教程http://dicomiseasy.blogspot.ru/,但他正在使用我不允许购买的这个RZDCX库.

关于DICOM属性还有一些很好的解释,我也一直在阅读标准的某些部分(首先是第3部分)

但是我很难理解它们.有那些图像属性:像素表示,像素数据,平面配置...我想理解它们是非常重要的是能够显示图像,我想我应该更多地了解像素实际如何工作以更好地理解.

但还有一件事我真的无法弄清楚:

我怎么或在哪里有三个不同的削减?(轴向/冠状/矢状).我一直在寻找标准中关于它们的属性,但我没有找到任何属性.所以我们可能会通过某种计算找到它们,但我不知道哪个变量应该用哪个公式?

kri*_*_sw 7

你是对的,这是一项相当大的任务!你可能不会在这里找到能为你提供分步教程的人,但有些提示:

  1. DICOM标准很笨拙,一开始就需要陡峭的学习曲线.该DICOM食谱帮了我很多熟悉的术语和文档的结构.
  2. 还有很多其他工具包,其中一些是免费的,并附带非常自由的许可证,如DCMTK.这些消除了学习如何以各种二进制格式编码信息的负担,这些格式略有不同,并提供了一个统一的API来轻松访问信息.我强烈建议不要从头开始编写自己的DICOM实现.
  3. 定义切片或帧的3D位置和取向的DICOM属性是ImagePositionPatient(0020,0032),ImageOrientationPatient(0020,0037)和PixelSpacing(0028,0030).这些可用于正确排序切片并计算插值交叉切片.
  4. 确保查看增强型CT/MR信息对象定义.通常,有两种方法可以在DICOM中存储图像堆栈:单帧(每个图像一个文件)和多帧(一个文件用于一个或多个图像堆栈).它们在获取上述信息方面有所不同.

HTH,祝你好运!


Fab*_*abi 6

这个问题已经3岁了,但也许我的回答会对某人有所帮助。

@user6867490 已经引用了 Roni Zaharia的漂亮文章

我唯一想补充的是:您可以通过写入简单地访问图像方向(患者),标签(0020,0037)

f = dicom.read_file(dicom_file_name)
f.ImageOrientationPatient
Run Code Online (Sandbox Code Playgroud)

如果您将获得:

['1', '0', '0', '0', '0', '-1'] 你正在处理冠状平面视图

['0', '1', '0', '0', '0', '-1'] 你正在处理矢状面视图

['1', '0', '0', '0', '1', '0'] 你正在处理轴向平面视图

就我而言,有一个数据集包含一些矢状面图像和许多轴向视图(我实际上需要)。所以,我简单地遍历整个数据集并进行简单的逻辑比较以过滤掉所有的矢状线。