繁体   English   中英

如何提取/查看多帧DICOM文件的所有帧?

[英]How to extract/view all frames of a multi-frame DICOM file?

我知道我可以使用以下代码查看dicom文件:

import dicom
from dicom.contrib.pydicom_PIL import show_PIL

f = "CT-MONO2-8-abdo.dcm"
ds = dicom.read_file(f, force=True)
show_PIL(ds)

但是,如何从多帧DICOM文件中提取和查看所有帧? 我尝试使用上面的代码,但得到以下错误:

File "/home/auser/.local/lib/python3.5/site-packages/dicom/dataset.py", line 399, in _get_pixel_array
  raise NotImplementedError("Pixel Data is compressed in a format pydicom does not yet handle. Cannot return array")
NotImplementedError: Pixel Data is compressed in a format pydicom does not yet handle. Cannot return array

我尝试过一些位于http://www.barre.nom.fr/medical/samples/的多帧文件。 像素大小等可用于这些文件。

如何提取和/或查看多帧DICOM文件的不同帧?


编辑:使用gdcm的以下命令在Linux上工作以将这些转换为未压缩的文件:

$ gdcmconv --raw compressed.dcm uncompressed.dcm

(我在提取后使用了http://www.barre.nom.fr/medical/samples/files/US-PAL-8-10x-echo.gz文件)。

然后由上面的python代码读取,但只显示第一帧。 如何提取和查看其他框架?

pydicom支持读取像素数据。 请参阅文档。

pydicom在解释DICOM数据时倾向于“懒惰”。 例如,默认情况下它不会对像素数据执行任何操作,除非在原始字节中读取:

 import dicom ds=dicom.read_file("MR_small.dcm") ds.PixelData '\\x89\\x03\\xfb\\x03\\xcb\\x04\\xeb\\x04\\xf9\\x02\\x94\\x01\\x7f ... ... 

关于pixel_array

Dataset的一个名为pixel_array的属性为未压缩的图像提供了更有用的像素数据。 必须在系统上安装NumPy数字包才能使用此属性,因为pixel_array返回NumPy数组:

 import dicom ds=dicom.read_file("MR_small.dcm") ds.pixel_array array([[ 905, 1019, 1227, ..., 302, 304, 328], [ 628, 770, 907, ..., 298, 331, 355], [ 498, 566, 706, ..., 280, 285, 320], ..., [ 334, 400, 431, ..., 1094, 1068, 1083], [ 339, 377, 413, ..., 1318, 1346, 1336], [ 378, 374, 422, ..., 1369, 1129, 862]], dtype=int16) ds.pixel_array.shape (64, 64) 

文档还解释了如何在http://pydicom.readthedocs.io/en/stable/viewing_images.html查看图像。

正如错误消息(以及评论中的@kritzel_sw)中所解释的那样,pydicom还不支持源图像的传输语法。 在尝试提取帧之前,使用其他工具更改传输语法。

Rony的另一个有用的博客http://dicomiseasy.blogspot.in/2012/08/chapter-12-pixel-data.html

另请查看 Stack Overflow问题; 它是关于旧版本,但可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM