의료 영상 AI 모델을 개발할 때, 가장 먼저 마주하는 문제는 DICOM 데이터의 복잡성과 전처리의 어려움이다.
일반 이미지 데이터와 달리, DICOM은 의료 목적에 최적화된 특수 포맷이며 이미지뿐 아니라 환자 정보, 검사 정보, 촬영 파라미터 등 메타데이터를 함께 포함하고 있다. 또한 영상 구조는 단일 이미지가 아닌 Study, Series, Instance의 계층 구조로 이루어져 있고, 영상 장비에 따라 포맷이나 압축 방식이 달라지는 경우도 많다.
AI 개발자는 모델 설계 이전에 DICOM 데이터를 정제하고 라벨링하며, 익명화하고 필터링하는 작업을 선행해야 한다.
이번 글에서는 AI 개발 관점에서 DICOM 데이터를 어떻게 다뤄야 하는지를 단계별로 정리하고, 필수 도구와 실무 팁까지 함께 소개한다.
1. DICOM 파일의 구조 이해
DICOM은 단순한 이미지 파일이 아니다.
이미지와 함께 환자, 장비, 검사 정보가 포함된 의료 영상의 표준 컨테이너다.
기본 계층 구조
Patient
└── Study
└── Series
└── Instance (이미지 1장)
- 하나의 CT 검사(Study)는 수십~수백 개의 슬라이스 이미지(Instance)로 구성됨
- 각 이미지에는 메타데이터가 포함되어 있음
📌 이러한 계층 구조를 이해하면 모델 학습 시 Study-Level 라벨, Series-Level 라벨을 구분할 수 있다.
2. AI 학습용 데이터로 적합한 DICOM 추출 기준
AI 모델의 입력으로 사용할 이미지를 고르기 위해 다음 기준을 고려해야 한다:
조건 | 설명 |
ModalitiesInStudy = “CT”, “MR”, “CR” 등 | 특정 장비 유형 필터링 |
BodyPartExamined = “CHEST”, “HEAD” 등 | 해부학적 부위 제한 |
SeriesDescription | 동일 조건의 시퀀스만 선택 (예: “Axial T1”) |
InstanceNumber 순서 | 순서가 어긋난 슬라이스 제거 |
Image Orientation | 재구성된 3D 구조 유지 여부 판단 |
📌 pydicom을 활용하여 위 조건을 기준으로 필터링 가능하다.
3. DICOM 익명화(Anonymization)
DICOM 파일에는 민감한 개인정보가 포함되어 있다:
- 환자 이름 (0010,0010)
- 생년월일 (0010,0030)
- 병원 이름, 장비 시리얼 번호 등
AI 모델 개발 또는 공개 데이터셋 구성 전 반드시 익명화 작업이 필요하다.
익명화 도구
도구 | 설명 |
dcmodify (DCMTK) | 태그 삭제 또는 변경 |
pydicom | Python 코드 기반 익명화 처리 |
dicom-anonymizer | 스크립트 기반 자동화 도구 |
Orthanc | 수신 시 자동 익명화 플러그인 지원 |
📌 환자 ID는 연구 목적에서 비식별화된 임의 코드로 대체하는 것이 일반적이다.
4. 이미지 변환 및 정규화
AI 모델은 일반적으로 PNG, JPEG, 또는 NumPy 배열 형태의 입력을 받기 때문에
DICOM을 변환해야 한다.
변환 방식
- pydicom.dcmread() → 픽셀값 추출 → matplotlib.pyplot.imsave()로 저장
- HU 단위 정규화: CT의 경우 RescaleSlope, RescaleIntercept 고려
- 윈도우/레벨 조정: 뇌, 흉부 등 부위별 적절한 contrast 설정 필요
📌 원본 DICOM의 해상도와 depth(예: 12-bit)를 유지하는 방식이 중요하다.
5. 라벨링 방식 정의
라벨은 Classification, Detection, Segmentation 등 AI 모델의 목적에 따라 다르게 정의된다.
라벨 유형 | 예시 |
Classification | 폐렴 유무, 암 진단, COVID-19 여부 등 |
Object Detection | 병변 위치 박스 좌표 |
Segmentation | 병변, 장기 등 영역 마스킹 |
Multi-modal | 영상 + 텍스트 리포트 기반 분석 |
6. 데이터셋 구성 전략
전략 | 설명 |
Study-level 구분 | 동일 환자의 여러 Series → 하나의 샘플로 취급 |
Patient-wise split | 학습/검증/테스트에 동일 환자 포함되지 않도록 분리 |
균형잡힌 클래스 비율 | 질병 유무 클래스의 불균형 보정 |
시각화 기반 QA | 변환 이미지의 품질 확인 필수 |
7. 실무 팁
- DICOM 태그는 (gggg,eeee) 형태의 정식 코드로 식별
- 불필요한 Series 제거 후 용량 최소화
- 다기관 병원 데이터는 SOP Class UID 기준으로 호환성 검사
- 이미지 Slice 순서가 어긋나면 3D 재구성 불가 → InstanceNumber 기준 정렬
- 데이터 증강(Augmentation)은 회전, 플립, 윈도우 조정 등 의료적 의미 고려 필요
결론
DICOM 데이터는 AI 학습에 매우 유용하지만, 그 구조와 메타데이터는 일반 이미지와는 완전히 다르기 때문에 정확한 이해와 사전 준비가 필수다. AI 모델의 성능은 전처리의 수준에 따라 좌우되며, DICOM 데이터의 정제, 익명화, 구조 해석, 라벨링, 변환은 모두 의료 도메인 특화된 접근법이 요구된다.
다음 글에서는 의료영상 디지털화 흐름과 DICOM의 미래 방향성을 살펴본다.
'개발 > DICOM 이야기' 카테고리의 다른 글
26. 실제 병원에서 DICOM이 활용되는 사례 분석 (1) | 2025.07.31 |
---|---|
25. 의료영상 디지털화 흐름과 DICOM의 미래 (1) | 2025.07.31 |
23. 의료 영상 데이터셋 소개 (NIH Chest X-ray, TCIA 등) (2) | 2025.07.30 |
22. PACS와 EHR(HIS) 시스템 연동 이해하기 (3) | 2025.07.29 |
21. Orthanc 서버 설치 및 PACS 구축 실습 (0) | 2025.07.29 |