首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取CT扫描dicom文件

读取CT扫描dicom文件
EN

Stack Overflow用户
提问于 2021-09-07 10:30:33
回答 2查看 263关注 0票数 1

我正在尝试使用pydicom python库读取CT扫描Dicom文件,但即使安装gdcm和pylibjpeg,我也无法摆脱下面的错误

代码语言:javascript
复制
RuntimeError: The following handlers are available to decode the pixel data however they are missing required dependencies: GDCM (req. ), pylibjpeg (req. )

以下是我的代码

代码语言:javascript
复制
!pip install pylibjpeg pylibjpeg-libjpeg pylibjpeg-openjpeg
!pip install python-gdcm

import gdcm
import pylibjpeg

import numpy as np
import pydicom
from pydicom.pixel_data_handlers.util import apply_voi_lut

import matplotlib.pyplot as plt
%matplotlib inline


def read_xray(path, voi_lut = True, fix_monochrome = True):
    dicom = pydicom.read_file(path)
    
    # VOI LUT (if available by DICOM device) is used to transform raw DICOM data to "human-friendly" view
    if voi_lut:
        data = apply_voi_lut(dicom.pixel_array, dicom)
    else:
        data = dicom.pixel_array
               
    # depending on this value, X-ray may look inverted - fix that:
    if fix_monochrome and dicom.PhotometricInterpretation == "MONOCHROME1":
        data = np.amax(data) - data
        
    data = data - np.min(data)
    data = data / np.max(data)
    data = (data * 255).astype(np.uint8)
        
    return data

img = read_xray('/content/ActiveTB/2018/09/17/1.2.392.200036.9116.2.6.1.44063.1797735841.1537157438.869027/1.2.392.200036.9116.2.6.1.44063.1797735841.1537157440.863887/1.2.392.200036.9116.2.6.1.44063.1797735841.1537154539.142332.dcm')
plt.figure(figsize = (12,12))
plt.imshow(img)

下面是我尝试运行此代码的图像链接

代码语言:javascript
复制
https://drive.google.com/file/d/1-xuryA5VlglaumU2HHV7-p6Yhgd6AaCC/view?usp=sharing
EN

回答 2

Stack Overflow用户

发布于 2021-09-07 10:38:08

尝试运行以下命令:

代码语言:javascript
复制
!pip install pylibjpeg
!pip install gdcm
票数 1
EN

Stack Overflow用户

发布于 2021-10-12 12:55:33

在像您这样的similar problem中,我们可以看到问题仍然存在于像素数据级别。您需要install one or more optional libraries,以便您可以处理各种压缩。

首先,你应该这样做:

代码语言:javascript
复制
$ pip uninstall pycocotools
$ pip install pycocotools --no-binary :all: --no-build-isolation

从这里开始,您应该执行以下操作:

代码语言:javascript
复制
$ pip install pylibjpeg pylibjpeg-libjpeg pydicom

然后,您的代码应该如下所示:

代码语言:javascript
复制
from pydicom import dcmread
import pylibjpeg
import gdcm

import numpy as np
import pydicom
from pydicom.pixel_data_handlers.util import apply_voi_lut

import matplotlib.pyplot as plt
%matplotlib inline


def read_xray(path, voi_lut = True, fix_monochrome = True):
    dicom = dcmread(path)
    
    # VOI LUT (if available by DICOM device) is used to transform raw DICOM data to "human-friendly" view
    if voi_lut:
        data = apply_voi_lut(dicom.pixel_array, dicom)
    else:
        data = dicom.pixel_array
               
    # depending on this value, X-ray may look inverted - fix that:
    if fix_monochrome and dicom.PhotometricInterpretation == "MONOCHROME1":
        data = np.amax(data) - data
        
    data = data - np.min(data)
    data = data / np.max(data)
    data = (data * 255).astype(np.uint8)
        
    return data

img = read_xray('/content/ActiveTB/2018/09/17/1.2.392.200036.9116.2.6.1.44063.1797735841.1537157438.869027/1.2.392.200036.9116.2.6.1.44063.1797735841.1537157440.863887/1.2.392.200036.9116.2.6.1.44063.1797735841.1537154539.142332.dcm')
plt.figure(figsize = (12,12))
plt.imshow(img)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69086563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档