【问题标题】:No available image handler could decode this transfer syntax JPEG Lossless when read DICOM and ploting using matplotlib读取 DICOM 并使用 matplotlib 绘图时,没有可用的图像处理程序可以解码此传输语法 JPEG Lossless
【发布时间】:2018-06-06 17:00:25
【问题描述】:

当我在python3.6中使用pydicom时,出现了一些问题:

import pydicom
import matplotlib.pyplot as plt
import os
import pylab

filePath = "/Users/zhuangrui/Documents/Python/Dicom/dicoms/zhang_bo/0001.dcm"
dataSet_1 = pydicom.dcmread(filePath)
plt.imshow(dataSet_1.pixel_array)
plt.show()

here is the problem:

这个问题怎么解决?非常感谢!

【问题讨论】:

  • 将您的错误信息直接发布到您的问题中,而不是图片中。

标签: macos python-3.6 pydicom


【解决方案1】:

在对上面建议的链接进行一些研究后,我也遇到了同样的问题。我设法通过更新到最新的 pydicom 模块“1.2.0”并安装 gdcm 来解决它。您可以使用更新 pydicom pip install -U git+https://github.com/pydicom/pydicom.git

您可以找到最新的 gdcm herethis 链接说明安装。


我用anaconda,安装gdcm包更容易解决问题。如果你使用蟒蛇 只需从您的环境中输入: conda install pydicom --channel conda-forge获取pydicom的最新和

conda install -c conda-forge gdcm

获取 gdcm。这解决了问题。希望这些会有所帮助。

【讨论】:

    【解决方案2】:

    使用 pydicom,您还需要安装适当的图像处理程序来处理压缩图像类型。

    对于 JPEG 无损,理论上以下应该可以工作:jpeg_ls、gdcm 或带有 jpeg 插件的 Pillow。所有这些都需要安装 Numpy。请参阅https://github.com/pydicom/pydicom/issues/532 的讨论。

    还有一个pull request 正在进行中,以便为不同图像需要哪些图像处理程序添加更多描述性错误消息。

    【讨论】:

      【解决方案3】:

      问题:

      我试图读取带有 .dcm 扩展名的医学图像。但是在 Windows 和 Ubuntu 上都出现了错误。我找到了一种适用于两种机器的解决方案。

      我在 Ubuntu 上遇到的错误是:NotImplementedError: this transfer syntax JPEG 2000 Image Compression (Lossless Only),无法读取,因为 Pillow 缺少 jpeg 2000 解码器插件

      (注意,对于 Windows,我遇到了不同的错误,但我确信这是因为相同的问题,即 Pillow 不支持 JPEG 2000 格式)

      平台信息:

      1. 我正在使用:Python 3.6、Anaconda 和 Ubuntu,15 GB RAM

      RAM 很重要:

      我应用的方案和上面阿里解释的一样。但我想添加此安装可能需要时间(取决于您使用的 RAM)。在 ubuntu 上,我在云平台上使用 15 GB RAM 花费的时间更少,而在 Windows 上,在本地机器上使用 4 GB RAM 花费了很多时间。

      解决方案

      1. Anaconda 是必要的。为什么? 请查看 pydicom (https://pydicom.github.io/pydicom/dev/getting_started.html) 的官方文档,其中提到“要安装 pydicom 以及压缩像素数据的图像处理程序,我们鼓励您使用 Miniconda 或 Anaconda”(注意 Windows 我遇到了不同的错误)

      2. 如果您使用的是 Ubuntu,请直接打开终端。如果您使用的是 Windows,那么在 Anaconda Navigator 上,从此处启动终端转到 Environment。对其执行以下命令:

        pip install -U git+https://github.com/pydicom/pydicom.git

        conda install pydicom --channel conda-forge

        conda install -c conda-forge gdcm

      交叉检查:

      现在使用我们得到错误的.dcm 文件。尝试在 Python notebook 中使用以下代码

      filename = 'FileName.dcm'
      ds = pydicom.dcmread(filename)
      plt.imshow(ds.pixel_array, cmap=plt.cm.bone) 
      

      它应该打印输出。也试试这个代码:

      ds.pixel_array
      

      这将为您提供包含值的数组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-25
        • 2012-09-10
        • 2018-03-26
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        • 2012-06-29
        相关资源
        最近更新 更多