목 차
📂 1. DICOM 파일 구조 (Header vs Pixel Data)
🧩 2. 3D/4D 의료 영상의 데이터 처리 방식
🖥️ 3. PACS (Picture Archiving and Communication System)
Digital Imaging and Communications in Medicine
의료 영상 표준 포맷 : 전 세계 모든 병원/장비/AI 연구에서 사용.
특징 :
DICOM 파일은 크게 두 부분으로 구성됩니다.
Header(메타데이터)
👉 마치 "영상 설명서" 역할.
DICOM Tag (0010,0010) → Patient Name = 홍길동
DICOM Tag (0028,0010) → Rows = 512
DICOM Tag (0028,0011) → Columns = 512
Pixel Data → 512×512 행렬(숫자값: 조직 밀도).
2D : 단일 슬라이스 ( ex: 한 장의 X-ray)
3D : 다수의 슬라이스를 모아 '볼륨 데이터' 생성 (ex : CT/MRI)
- 픽셀(pixel)이 2D 한 점이라면, 복셀(voxel)은 3D 한 점.
4D : 시간축까지 포함된 데이터(ex: 심장 MRI 시퀸스, 초음파 동영상)
👉 쉽게 말해,
2D = 사진
3D = 입체 모형
4D = 움직이는 입체 모형(영상)
3D 의료 영상은 'Voxel(Volume + Pixel)' 단위로 저장됨.
시간(Time)을 포함하는 3D 시퀸스.
Ex:
AI 과제.
Spatio-temporal Analysis (시공간 분석).
예: 심장 운동 기능 추적, 암 성장률 예측.
의료 영상 데이터를 저장, 검색, 공유하는 시스템.
모든 병원 영상 센터의 핵심 인프라.
CT/MRI 촬영 → PACS 서버 저장 → 의사/AI 시스템에서 조회.
Image Acquisition (획득)
PACS Server (저장/관리)
DICOM 파일 저장소.
Database + Storage System.
Workstation (조회/분석)
의사가 영상 확인.
AI 모듈이 접속해 분석 수행.
Network/Integration(네트워크 연결)
전처리-모델 학습 및 검증-배포 및 평가 까지의 전체 요약.
데이터 수집 → 익명화/검증(QC) → 물리단위·해상도 정리(Resample/Registration)
→ 강도 표준화(Intensity normalization / windowing / stain normalization) → 메모리 친화적 분할(Patch/Tiling)
→ 균형 잡힌 샘플링 + 고품질 레이블 처리 → 모델 설계(2D/3D/Transformer 등) → 학습(optimizer, LR, AMP, DDP)
→ 검증(lesion-level / patient-level) → 불확실성/해석/모니터링 → 배포(경량화, 규제준수).
데이터 파이프라인의 맨 앞단.
- 잘못 수집되거나 품질 낮은 데이터가 들어오면 후속 전처리 * 학습이 모두 무용지물.
- 의료영상에서는 특히 장비 & 프로토콜이 다양해 '데이터 불일치(domain shift)'가 흔함.
무결성 체크.
기본 QC 파이프라인 실행.
라이브러리: pydicom, SimpleITK, nibabel, dicom-numpy
익명화 툴: pydicom으로 태그 삭제, DICOMCleaner 등
QC 자동화: custom script + pandas로 메타데이터 테이블 관리
Burned-in text: 헤더 익명화만 하면 안 됨—이미지에 환자명이 찍혀있을 수 있음.
장비별 표기 차이: 동일 태그가 없거나 다른 위치에 저장되는 경우가 많음—태그 맵핑이 필요.
로그 남기기: 어떤 파일를 왜 제외했는지 기록해두지 않으면 나중에 문제 원인 규명이 어려움.
DICOM 헤더에서 PixelSpacing, SliceThickness, ImageOrientationPatient, PatientPosition, RescaleIntercept/RescaleSlope 등 필수 파라미터를 뽑아 둡니다.
CT의 경우 픽셀값 → HU 변환(RescaleSlope/Intercept 적용) 확인 필수.
DICOM 태그(PatientName 등) 제거 + burned-in text(이미지에 찍힌 환자명) 탐지/마스킹.
연구·배포시 로그에 익명화 버전·해시 남기기.
결측 슬라이스, 이상 해상도, 이미지 방향(좌우/상하 뒤바뀜), 너무 큰 결손영역(비어있는 이미지) 탐지.
통계적 이상치 탐지: 픽셀값 분포(히스토그램), 평균/표준편차, 영상 대비비(contrast) 확인.
서로 다른 장비/프로토콜에서 온 영상들을 "공통의 물리 좌표계와 해상도"로 맞추는 작업.
- 3D 볼륨의 종류나 슬라이스 두께가 다르면, 모델이 학습하기 어려움.
Voxel spacing: 픽셀이 실제 물리공간에서 차지하는 거리(mm).
Resampling: voxel spacing을 표준화(예: 1×1×1 mm)하는 보간(interpolation).
Registration: 한 영상(또는 시점)을 다른 영상과 정렬(위치·회전 보정).
라벨 보간 주의: label을 float 보간하면 레이블 값이 깨짐 → 반드시 nearest 사용.
Resample 성능저하: 너무 작은 spacing으로 다운샘플링 하면 정보 소실, 너무 촘촘하면 메모리 폭증.
Registration 실패 탐지: 유사성 지표(NCC, MI)로 체크.
SimpleITK.Resample() 등 사용.
주의: CT는 HU 기반 → 보간(method)에 따라 값 왜곡 주의
(선형보간 권장 for intensities; nearest for labels).
동일한 조직이라도 장비/설정에 따라 픽셀값(강도)이 달라집니다.
모델이 이런 차이를 “노이즈”로 인식하지 않게 강도 분포를 표준화해야 합니다.
HU 단위 그대로 사용하거나, 'task-specific windowing 사용'
이후 min-max (e.g. -1000..400 → 0..1) 또는
z-score(normalize by mean/std of lung region).
여기서 Hounsfield unit은 앞서 설명한 선형 감쇠 계수를 위와 같은 수식에 근거하여 선형적 변환을 적용한 값이며,
표준 대기압 및 온도(STP)에서 증류된 물(Distilled Water)을 기준(HU=0)으로 삼아 여러가지 물질들에 대해 상대적인 값을 정의해 놓은 것.
임상에서의 CT 영상은 HU의 범위가 -1024 ~ +3071까지이며, 512x512 = 262,144개의 픽셀로 구성.
CT 영상의 정확도는 환자선량과 픽셀의 크기에 지배적인 영향을 받으며, CT 장치에 따른 영향은 거의 받지 않는다.
쉽게 설명하면, X-ray beam이 물체를 통과할 때, beam이 물체에 얼마나 흡수되는지를 나타낸다.
주로 사람의 몸에 대한 X-ray 영상을 취득할 때,
각 조직(tissue)의 밀도(density)를 표현하는 단위로 사용된다.
"같은 스케일/분포"로 맞춰라 → batch 간 차이 완화.
다수 의사 레이블이 상이할 때:
Inter-rater variability 측정(일반적으로 Cohen’s Kappa, Fleiss’ kappa).
기초 레이블 → 2) 리뷰(2nd reader) → 3) Adjudication(논쟁 샘플에 대해 전문가 패널).
라벨 메타데이터(annotator id, timestamp, confidence)를 반드시 보관.
Multiple Instance Learning (MIL)
— WSI 같은 경우 image-level label만 있을 때 patch-level MIL 모델 사용.
Pseudo-labeling & self-training: 모델이 예측한 강한 확신 예측을 라벨로 추가.
Positive patch oversampling:
Hard-negative mining:
rotation
flip(주의:좌우 반전은 좌/우 정보가 중요한 경우 사용 금지)
scaling
elastic deformation(특히 병리 조직).
brightness
contrast jitter
gausian noise
gamma transform
CT: realistic noise modeling (Poisson), random windowing.
MRI: simulate bias field, k-space augmentations (고급).
WSI: stain perturbation (H&E color jitter), stain augmentation.
MixUp / CutMix (classification), RandAugment / AutoAugment 자동탐색.
GAN / Diffusion 로 synthetic data 생성(단, 임상 신뢰성 검증 필요).
ResNet family, EfficientNet, DenseNet, SWIN/Vit (빠르게 뜸)
Transfer learning(Imagenet) 초기화 후 fine-tune 추천(특히 데이터 적을 때).
2D: U-Net, Attention U-Net, DeepLabV3+
3D: 3D U-Net, V-Net, nnU-Net(자동설정의 강력한 baseline)
Transformer 계열: UNETR, Swin-UNET/TransUNet (멀티스케일 학습에 강함)
메모리·연산 비용 큼 → 작은 batch size → BN 문제
대안: patch-based 3D training, gradient accumulation, GroupNorm / InstanceNorm 사용.
장점: 경량, pretraining(Imagenet 사용) 쉬움.
단점: 단편적 맥락 손실 → post-processing으로 3D 연결 필요.
작은 병변(예: 폐 결절): 3D 패치 학습(+sliding-window inference)
전역/전신 구조 문제: 2D 큰 field-of-view approaches or hybrid (2.5D stacks).
Patch size: 256×256
Batch size: 8~32 (GPU 메모리에 맞게)
Optimizer: AdamW lr=1e-4 weight_decay=1e-5
Scheduler: CosineAnnealingWarmRestarts or ReduceLROnPlateau
Epochs: 200~400 (early stopping on val Dice)
Augmentation: geometric + intensity + elastic.
Classification: AUC-ROC, AUPRC(불균형일 때 중요), Accuracy, F1
Segmentation: Dice coefficient, IoU, Hausdorff distance(경계 품질)
Detection: mAP, FROC (lesion-level sensitivity at specific FP per image)
모델 확률의 해석 가능성: Calibration curve, Expected Calibration Error(EC).
온도 스케일링(Temperature scaling)으로 보정.
부트스트랩(bootstrap)으로 CI(신뢰구간) 계산.
모델 비교 시 paired tests (DeLong test for ROC 등).
Epistemic(모델 불확실): Deep Ensembles, MC-Dropout
Aleatoric(데이터 불확실): Predictive variance (heteroscedastic loss)