개발/DICOM 이야기

09. DICOM 헤더 정보 해석하기 – 주요 태그 설명

devbake 2025. 7. 29. 02:50

DICOM 파일을 열어보면, 겉으로는 이미지 한 장처럼 보일 수 있지만, 그 안에는 단순한 픽셀 데이터만 들어 있는 것이 아니다.
파일의 상단부에는 환자 정보, 검사 정보, 장비 정보, 촬영 일시 등 다양한 메타데이터가 구조적으로 저장되어 있으며,
이 영역을 우리는 일반적으로 DICOM 헤더(Header)라고 부른다.
실무에서는 이 헤더 정보만으로도 영상의 진위, 검사 일자, 검사 종류, 환자 ID 등을 빠르게 파악할 수 있다.
하지만 태그 번호와 데이터 구조가 익숙하지 않다면, 헤더를 해석하는 것 자체가 큰 진입장벽이 될 수 있다.
이번 글에서는 DICOM 헤더의 개념과 그 안에 포함된 주요 태그들의 의미와 용도를 실제 예시 중심으로 설명한다.

 

1. DICOM 헤더란?

DICOM 헤더는 파일의 앞부분에 위치한 메타데이터 영역으로, 이미지 자체(Pixel Data)를 제외한 모든 정보를 포함하는 구조를 의미한다.

DICOM 파일의 구조는 보통 아래와 같다.

구성 영역 설명
Preamble 128바이트, 일반적으로 비어 있음
DICM Prefix ‘DICM’ 문자로 파일 식별
File Meta Information 파일 자체 정보 (Transfer Syntax 등)
Data Set (Header 포함) 환자/검사/장비/영상 정보 등
Pixel Data 실제 이미지 정보
 

📌 일반적으로 “DICOM 헤더”는 File Meta + Data Set 중에서 Pixel Data를 제외한 부분을 통칭한다.

DICOM 헤더 정보 해석하기 – 주요 태그 설명

 

위와 같은 모듈형 구조로 dicom의 파일 구조에 접근할 때에, "Image > Image Pixel > Pixel Data"를 제외한 모든 부분이 DICOM 헤더에 해당한다고 볼 수 있다. 

 

2. 헤더 정보가 왜 중요한가?

  • 영상이 어떤 장비로 언제 촬영되었는지 알 수 있다.
  • 환자 식별 정보(Patient ID, Name 등)를 확인할 수 있다.
  • PACS 업로드 오류 시 원인을 추적할 수 있다.
  • AI 학습을 위한 전처리에서 필요한 정보를 추출할 수 있다.

실제로 병원에서는 PACS 서버에 업로드된 영상의 헤더를 먼저 열어 검사 일자, 환자 정보, UID 값 등을 확인하는 것이 일반적이다.

 

3. 자주 사용되는 주요 DICOM 헤더 태그

태그 이름 설명 VR
(0010,0010) Patient’s Name 환자 이름 PN
(0010,0020) Patient ID 환자 고유 식별 번호 LO
(0008,0020) Study Date 검사 날짜 DA
(0008,0030) Study Time 검사 시간 TM
(0008,0060) Modality 영상 모달리티 (CT, MR 등) CS
(0020,000D) Study Instance UID 검사 단위 고유 식별자 UI
(0020,000E) Series Instance UID 시리즈 단위 식별자 UI
(0008,0070) Manufacturer 장비 제조사 LO
(0028,0010) Rows 이미지 세로 픽셀 수 US
(0028,0011) Columns 이미지 가로 픽셀 수 US
 

이 태그들만 해석할 수 있어도, 의료 영상 파일의 기본 정보와 구조를 파악하는 데 문제가 없다.

 

4. 예시: DICOM 헤더 정보 실제 출력 결과

(0010,0010) PN [홍길동]       # Patient Name  
(0010,0020) LO [P123456]      # Patient ID  
(0008,0020) DA [20250728]     # Study Date  
(0008,0030) TM [103212.000]   # Study Time  
(0008,0060) CS [CT]           # Modality  
(0028,0010) US [512]          # Rows  
(0028,0011) US [512]          # Columns

📌 이 정보는 실제 병원에서 촬영한 CT 파일의 일부 헤더를 출력할 때의 예시다.
환자 이름, ID, 검사 일자, 영상 크기 등 핵심 정보가 포함되어 있음을 확인할 수 있다.

 

5. Python으로 DICOM 헤더 불러오기 (예제)

import pydicom

ds = pydicom.dcmread("sample.dcm")

print("환자 이름:", ds.PatientName)
print("환자 ID:", ds.PatientID)
print("검사 일자:", ds.StudyDate)
print("장비 제조사:", ds.Manufacturer)
print("영상 크기:", ds.Rows, "x", ds.Columns)

→ 이처럼 간단한 코드로도 헤더 정보만 빠르게 추출할 수 있다.

 

6. 실무 활용 시나리오

  1. 환자 정보 익명화 전 확인
    → 익명화 전에 (0010,0010), (0010,0020) 등의 태그에서 민감 정보를 제거해야 함
  2. PACS 오류 원인 확인
    → UID 누락, 날짜 형식 오류 등은 헤더에서 바로 확인 가능
  3. 영상 품질 확인
    → 해상도(Columns, Rows), 제조사, 장비 모델 등 태그 기반으로 품질 검토 가능
  4. AI 전처리 조건 필터링
    → 특정 날짜, 장비, 해상도 기준으로 파일을 자동 필터링할 수 있음

 

7. 주의해야 할 점

  • 일부 태그는 의무 항목이 아니기 때문에 없을 수 있음
  • 제조사마다 커스텀 태그(Private Tag)를 추가하는 경우도 있음
    예: (0019,xxxx) 영역 등
  • VR(Value Representation)이 잘못된 경우, 뷰어에서 정보가 깨지거나 표시되지 않을 수 있음

결론

DICOM 헤더는 의료 영상의 핵심 정보를 담고 있는 구조이며, 환자 이름부터 영상 해상도까지 다양한 데이터를 손쉽게 확인할 수 있다.
특히 실무에서는 AI 전처리, PACS 연동, 영상 분석, 데이터 필터링 등의 모든 단계에서 헤더 정보를 해석하고 활용하는 능력이 필요하다.
이번 글에서 소개한 주요 태그들을 숙지하면, 대부분의 DICOM 파일에 대해 정확한 정보 추출이 가능해진다.
다음 글에서는 DICOM 파일의 내부 구조를 더 깊이 들여다보는 DICOM 파일 내부 구조 분석 예제를 다룰 예정이다.