반응형
pydicom에서 JPEG 압축된 DICOM 파일을 읽을 때 발생하는 오류 해결법입니다.
문제 상황
엑셀 파일을 불러오기 위해 아래와 같은 코드를 실행했을 때:
dcm = pydicom.dcmread(img_path)
img = dcm.pixel_array
다음과 같은 에러가 발생합니다:
RuntimeError Traceback (most recent call last)
...
RuntimeError: Unable to decompress 'JPEG Lossless, Non-Hierarchical, First-Order Prediction (Process 14 [Selection Value 1])' pixel data because all plugins are missing dependencies:
gdcm - requires gdcm>=3.0.10
pylibjpeg - requires pylibjpeg>=2.0 and pylibjpeg-libjpeg>=2.1
원인
이 에러는 DICOM 파일이 JPEG Lossless 방식으로 압축되어 있을 때, 이를 해제(decompress)할 수 있는 디코더가 시스템에 설치되어 있지 않기 때문에 발생합니다.
pydicom 자체로는 압축 해제를 지원하지 않기 때문에 외부 라이브러리가 필요합니다. 대표적으로:
- GDCM (Grassroots DICOM)
- pylibjpeg + pylibjpeg-libjpeg
이 중 하나라도 설치되어 있어야 압축된 이미지 데이터를 .pixel_array로 불러올 수 있습니다.
해결 방법
방법 1: pylibjpeg 기반 설치 (권장)
pip install pylibjpeg pylibjpeg-libjpeg pylibjpeg-openjpeg
이렇게 설치하면 JPEG Lossless, JPEG 2000, JPEG Baseline 등 대부분의 압축 방식이 지원됩니다.
설치 이후 코드를 restart 하면 정상적으로 동작하는 것을 확인할 수 있습니다.
방법 2: GDCM 설치
conda install -c conda-forge gdcm
python-gdcm은 pip로 설치가 어렵기 때문에 conda 환경을 추천합니다.
설치 후 코드를 실행하면 압축된 DICOM도 정상적으로 불러올 수 있습니다.
반응형