DICOM 多平面图像重建
DICOM multiplanar image reconstruction
我的问题是,我必须开发一个程序,可以在 C# 中打开 DICOM CT 图像(没有任何库),我还应该处理轴向、冠状和矢状图像。我已经弄明白了,但是冠状和矢状图像分辨率不对。我查看了一百万个论坛和问题,但我只是没有找到正确的方法来找到冠状、矢状分辨率。如果有人能给我一个公式什么的我会很高兴。
据我所知,这些是获得决议所需的信息:
- 宽度和高度:512x512
- 图片数量:518
- (0018, 0050) 切片厚度:1.25
- (0018, 0080) 切片间距:0.625
- (0028, 0030) 像素间距:0.845703 / 0.845703
但我从 (0020, 0032) 图像位置(患者)计算切片间距,即 0.625
而且我真的不知道这些信息之间有什么联系,获得正确分辨率的公式是什么。
我的确切问题是:冠状和矢状图像的分辨率是多少?
如果你们需要有关切片的更多信息,请告诉我。
提前谢谢你:)
编辑:
我用 RadiAnt DICOM Viewer 检查 coronal/sagittal 分辨率应该是 512x383。如果有人知道为什么结果是 383 的公式。请告诉我。与此同时,我会努力弄清楚自己。
我假设:
- "Number of series": 518 应该读作 "Number of images": 518?
- 切片之间的间距=两个相邻切片之间图像位置患者的差向量长度(DICOM中的值header应该与计算值相同。如果不一致,我建议使用计算值) .
在这种情况下:
矢状切片的分辨率 = 冠状切片的分辨率 = 512 个切片,每个切片具有 512x518 像素(矢状:高度 * 切片数,冠状:宽度 * 切片数)
矢状像素间距 = 冠状像素间距 = 0.845703 * 0.625。
矢状切面距离 = 冠状切面距离 = 0.845703 mm
旁注:强烈建议使用 DICOM 工具包读取切片。您可以阅读此特定考试的事实并不表示您有能力阅读 任何 考试。 DICOM的低级编码规则有很多陷阱。
我想我已经找到了一个接近的解决方案。与 RadiAnt 版本相差 1-2 像素,但这是我能得到的最好的:
冠状图像height/Sagittal图像宽度:图像数量*切片间距/像素间距
例如:518 * 0.625 / 0.845703 = 382
RadiAnt 图像分辨率:512x383。我的图像分辨率:512x382
此解决方案适用于我测试过的一些研究,但不适用于互联网上的一两个研究。正如 kritzel_sw 所说,它可能会有所不同。希望这篇文章也能对其他人有所帮助。
没有明确的解决方案。你不应该忘记,在 DICOM 中你有 PixelSpacing,而你在 "normal images".
中没有
典型图像必须始终具有等距网格才能在屏幕上正确显示。但在 dicom 中,您可以拥有 100x100 像素和像素间距 1.0.0 的图像,也可以拥有 100x200 像素和像素间距 1.0[=41=].5 的图像。有效的 DICOM 查看器将以相同的方式显示两个图像。第二张图片有更多的像素,但它们更小。结果显示与第一张图片相同。
很明显,图像堆栈的高度是 518*0,625 = 323,75 mm。所以你有很多可能性:
- 您可以创建一个 512x324 图像,将像素间距设置为 0.845703.0 并计算(插值) z 值。
- 最好的解决方案是,按原样获取像素数据,不进行任何插值,因此不会丢失任何数据。然后你有一个 512x518 像素的网格。像素间距为 0.845703[=43=].625。这是因为 x 方向的间距来自原始数据中像素的间距,而 y 方向的间距是切片之间的距离。
- 但是:有些 DICOM 查看器无法正确处理非等距像素。如果您将图像导出为 jpeg 并让 window/browser 显示图像,那么您需要等距像素。因此,您必须选择多个像素,这样当像素间距为 0.845703mm 时,总高度为 323,75mm。这是 323,75 / 0.845703 = 382,817 ~ 383 像素。因此,如果您生成 512x383 像素图像,您必须在其中对切片进行插值,则可以创建等距像素间距为 0.845703[=43=] 的图像.845703.
我的问题是,我必须开发一个程序,可以在 C# 中打开 DICOM CT 图像(没有任何库),我还应该处理轴向、冠状和矢状图像。我已经弄明白了,但是冠状和矢状图像分辨率不对。我查看了一百万个论坛和问题,但我只是没有找到正确的方法来找到冠状、矢状分辨率。如果有人能给我一个公式什么的我会很高兴。
据我所知,这些是获得决议所需的信息:
- 宽度和高度:512x512
- 图片数量:518
- (0018, 0050) 切片厚度:1.25
- (0018, 0080) 切片间距:0.625
- (0028, 0030) 像素间距:0.845703 / 0.845703
但我从 (0020, 0032) 图像位置(患者)计算切片间距,即 0.625 而且我真的不知道这些信息之间有什么联系,获得正确分辨率的公式是什么。 我的确切问题是:冠状和矢状图像的分辨率是多少?
如果你们需要有关切片的更多信息,请告诉我。 提前谢谢你:)
编辑: 我用 RadiAnt DICOM Viewer 检查 coronal/sagittal 分辨率应该是 512x383。如果有人知道为什么结果是 383 的公式。请告诉我。与此同时,我会努力弄清楚自己。
我假设:
- "Number of series": 518 应该读作 "Number of images": 518?
- 切片之间的间距=两个相邻切片之间图像位置患者的差向量长度(DICOM中的值header应该与计算值相同。如果不一致,我建议使用计算值) .
在这种情况下:
矢状切片的分辨率 = 冠状切片的分辨率 = 512 个切片,每个切片具有 512x518 像素(矢状:高度 * 切片数,冠状:宽度 * 切片数)
矢状像素间距 = 冠状像素间距 = 0.845703 * 0.625。
矢状切面距离 = 冠状切面距离 = 0.845703 mm
旁注:强烈建议使用 DICOM 工具包读取切片。您可以阅读此特定考试的事实并不表示您有能力阅读 任何 考试。 DICOM的低级编码规则有很多陷阱。
我想我已经找到了一个接近的解决方案。与 RadiAnt 版本相差 1-2 像素,但这是我能得到的最好的:
冠状图像height/Sagittal图像宽度:图像数量*切片间距/像素间距
例如:518 * 0.625 / 0.845703 = 382
RadiAnt 图像分辨率:512x383。我的图像分辨率:512x382
此解决方案适用于我测试过的一些研究,但不适用于互联网上的一两个研究。正如 kritzel_sw 所说,它可能会有所不同。希望这篇文章也能对其他人有所帮助。
没有明确的解决方案。你不应该忘记,在 DICOM 中你有 PixelSpacing,而你在 "normal images".
中没有典型图像必须始终具有等距网格才能在屏幕上正确显示。但在 dicom 中,您可以拥有 100x100 像素和像素间距 1.0.0 的图像,也可以拥有 100x200 像素和像素间距 1.0[=41=].5 的图像。有效的 DICOM 查看器将以相同的方式显示两个图像。第二张图片有更多的像素,但它们更小。结果显示与第一张图片相同。
很明显,图像堆栈的高度是 518*0,625 = 323,75 mm。所以你有很多可能性:
- 您可以创建一个 512x324 图像,将像素间距设置为 0.845703.0 并计算(插值) z 值。
- 最好的解决方案是,按原样获取像素数据,不进行任何插值,因此不会丢失任何数据。然后你有一个 512x518 像素的网格。像素间距为 0.845703[=43=].625。这是因为 x 方向的间距来自原始数据中像素的间距,而 y 方向的间距是切片之间的距离。
- 但是:有些 DICOM 查看器无法正确处理非等距像素。如果您将图像导出为 jpeg 并让 window/browser 显示图像,那么您需要等距像素。因此,您必须选择多个像素,这样当像素间距为 0.845703mm 时,总高度为 323,75mm。这是 323,75 / 0.845703 = 382,817 ~ 383 像素。因此,如果您生成 512x383 像素图像,您必须在其中对切片进行插值,则可以创建等距像素间距为 0.845703[=43=] 的图像.845703.