개발/DICOM 이야기

13. DICOM 이미지 형식(Pixel Data)과 압축 방식

devbake 2025. 7. 29. 06:50

DICOM 파일의 진짜 핵심은 결국 “영상”이다.
이 영상은 DICOM 구조상에서 Pixel Data 태그(7FE0,0010)에 저장된다.
하지만 단순한 이미지 파일과 달리, DICOM에서는 픽셀 데이터의 구조, 압축 방식, 색상 표현 방식 등이 전송 문법(Transfer Syntax)에 따라 달라지며,
그 결과 동일한 영상이라도 압축 방식에 따라 파일 크기, 뷰어 호환성, AI 파싱 성공 여부가 달라진다.
이번 글에서는 Pixel Data가 실제로 어떻게 구성되는지, DICOM에서 사용되는 주요 압축 방식과 그 특징, 그리고 실무에서 주의할 점들을 예제와 함께 설명한다.

DICOM 이미지 형식(Pixel Data)과 압축 방식

 

1. Pixel Data 태그 구조

Pixel Data는 DICOM 파일의 끝부분에 위치하며, 태그 번호는 다음과 같다:

  • (7FE0,0010) → Pixel Data
  • VR: OB (Other Byte), OW (Other Word)
  • Value: 실제 이미지 바이너리 (압축 또는 비압축)

Pixel Data는 기본적으로 다음 구조를 따른다:

[Tag: 7FE0,0010] [VR] [Length] [Value]

 

예를 들어, 압축되지 않은 512×512 CT 이미지의 픽셀 값이 그대로 들어갈 수도 있고,
JPEG 또는 JPEG2000으로 압축된 바이너리 데이터가 들어갈 수도 있다.

 

2. 전송 문법(Transfer Syntax)과 압축 방식

Pixel Data의 해석 방식은 **Transfer Syntax UID (0002,0010)**에 의해 결정된다.
이 UID 값에 따라 압축 방식 및 바이트 순서 등이 달라진다.

주요 Transfer Syntax 예시

UID 이름 압축 여부
1.2.840.10008.1.2 Implicit VR Little Endian 비압축
1.2.840.10008.1.2.1 Explicit VR Little Endian 비압축
1.2.840.10008.1.2.4.50 JPEG Baseline (Lossy) 압축
1.2.840.10008.1.2.4.70 JPEG Lossless 압축
1.2.840.10008.1.2.4.90 JPEG2000 Lossless 압축
1.2.840.10008.1.2.5 RLE Lossless 압축
📌 이 UID는 DICOM 파일의 File Meta Information 영역에 존재하며, 압축 여부뿐 아니라 Pixel Data를 해석할 수 있는지 여부를 결정한다.

 

3. 압축 방식별 특징

DICOM 송수신 시에는 장비/시스템 간 다양한 압축 방식을 사용할 수 있다. 주요 방식 몇 가지를 정리하면 다음과 같다.  

압축 형식 특징 실무 사용 예시
Uncompressed 픽셀값 그대로 저장, 해석 쉬움 PACS, AI 학습, 연구 데이터
JPEG Baseline 손실 압축, 파일 용량 작음 저장 공간이 중요한 장비
JPEG Lossless 원본 손실 없음, 빠른 디코딩 영상 보존 필요성 높을 때
JPEG2000 고효율 압축, 느린 디코딩 최신 PACS 시스템
RLE 비트맵 유사 압축, 호환성 낮음 특정 장비에서만 사용

 

4. 실무에서 흔한 문제 상황

1) AI 모델이 압축된 DICOM을 읽지 못함

Python pydicom은 JPEG 압축을 기본적으로 해석하지 못함
➤ 추가 라이브러리(gdcm, pylibjpeg) 설치 필요

# 압축된 DICOM에서 픽셀 데이터를 불러오려면
import pydicom
from pydicom.pixel_data_handlers.util import apply_voi_lut

ds = pydicom.dcmread("compressed.dcm", force=True)

if 'PixelData' in ds:
    arr = ds.pixel_array

 

2) PACS 업로드 오류

장비가 JPEG 압축을 지원하지 않거나
UID가 잘못 지정되어 있음 → 전송 실패

🔧 해결법: 압축 해제 후 다시 저장
도구 예시:

gdcmconv --raw compressed.dcm uncompressed.dcm

 

3) 이미지가 비정상적으로 보임

  • JPEG 압축인데 뷰어가 압축 해제 기능을 지원하지 않음
  • Transfer Syntax UID와 실제 압축 방식이 일치하지 않음
    → 이 경우 Pixel Data가 깨져 보이거나 영상이 로딩되지 않음

 

5. 비압축 vs 압축 비교 예시

항목 비압축 JPEG 압축
파일 크기 500 KB ~ 1 MB 100 KB 내외
디코딩 속도 빠름 느림
AI 파싱 안정적 추가 설정 필요
이미지 품질 원본 그대로 손실 가능성 있음

 

6. 실무에서의 권장 방침

목적 권장 압축 방식
PACS 저장 JPEG Lossless 또는 Uncompressed
AI 학습 Uncompressed
외부 전송 JPEG2000 (압축률 + 보존성)
연구 데이터셋 공개 JPEG Lossless 또는 RLE 변환 필요

📌 특히 AI 데이터셋을 구축할 경우에는 비압축 또는 JPEG Lossless 형식으로 변환하는 것을 권장한다.

 

 


결론

DICOM 파일의 Pixel Data는 단순한 이미지가 아니라 전송 문법(Transfer Syntax)에 따라 압축 방식과 해석 방식이 달라진다.
압축 여부는 AI 학습, PACS 호환성, 뷰어 안정성 등과 직결되며, 파일 내부의 Transfer Syntax UID를 통해 정확히 파악하고 관리해야 한다.
실무에서는 압축된 파일을 해석할 수 있는지 여부를 사전에 확인하고, 필요 시 압축 해제 후 재저장을 통해 문제를 해결할 수 있다.
다음 글에서는 실제로 사용되는 DICOM 뷰어 및 도구 소개로 이어질 예정이다.