
1. 들어가며: 왜 의료 영상은 일반 이미지 파일보다 다루기 까다로울까?
컴퓨터 비전을 공부하는 많은 이들이 JPEG나 PNG 이미지 처리에 익숙해져 있습니다. 하지만 실제 의료 현장에서 쓰이는 CT나 MRI 영상은 **DICOM(Digital Imaging and Communications in Medicine)**이라는 특수 표준 형식을 사용합니다.
단순히 픽셀 값만 담고 있는 일반 이미지와 달리, DICOM 파일에는 환자의 정보부터 장비의 설정값, 그리고 무엇보다 8비트(256단계)를 훌쩍 뛰어넘는 12~16비트의 깊은 픽셀 정보가 담겨 있습니다. 이번 포스팅에서는 Python을 활용해 이 복잡한 의료 데이터를 읽어오고, 진단에 적합한 형태로 가공(전처리)하는 과정에서 제가 겪었던 기술적 해결책들을 공유합니다.
2. 프로젝트 환경 및 필수 라이브러리 구성
의료 영상 분석을 위해 일반적인 OpenCV 외에 전문적인 라이브러리들이 필요합니다.
- Pydicom: DICOM 파일의 메타데이터와 픽셀 데이터를 읽고 수정하는 표준 라이브러리입니다.
- Nibabel: NIfTI(연구용 의료 영상 표준) 형식 처리에 특화되어 있습니다.
- SimpleITK: 복잡한 의료 영상의 필터링, 정합(Registration), 세분화(Segmentation)에 강력한 도구입니다.

3. 핵심 문제 해결: 윈도잉(Windowing) 기법의 실전 적용
CT 영상의 가장 큰 특징은 픽셀 값이 **HU(Hounsfield Unit)**라는 절대 단위로 표현된다는 점입니다. 물은 0, 공기는 -1000, 뼈는 +400 이상의 값을 가집니다. 하지만 우리가 사용하는 모니터는 이 넓은 범위를 한 번에 보여주지 못합니다.
이때 필요한 것이 바로 **윈도잉(Windowing)**입니다. 분석하고자 하는 타겟(뼈, 장기, 폐 등)에 맞춰 특정 범위의 HU 값만 강조하여 시각화하는 과정입니다.
- Window Level (WL): 보고자 하는 중심값
- Window Width (WW): 보여줄 범위의 너비

이 과정에서 저는 단순히 수동으로 값을 입력하는 것을 넘어, 메타데이터에 포함된 WindowCenter와 WindowWidth 태그를 자동으로 읽어와 최적의 초기 화면을 제공하는 파이프라인을 구축했습니다.
4. 실전 트러블슈팅: 리스케일 슬로프(Rescale Slope)의 함정
DICOM 파일을 읽었을 때 값이 이상하게 나오는 경우가 있습니다. 이는 많은 장비가 저장 용량을 줄이기 위해 실제 HU 값을 특정 수식으로 변환하여 저장하기 때문입니다.
- 해결책: pydicom을 통해 읽어온 원본 픽셀 데이터에 반드시 Rescale Slope와 Rescale Intercept 값을 곱하고 더해주어야 실제 HU 값을 얻을 수 있습니다.
- HU = Pixel_Value * Rescale_Slope + Rescale_Intercept
이 간단한 수식 하나를 놓치면 이후의 모든 세분화(Segmentation) 로직이 무너지게 됩니다. 저 역시 초기 프로젝트에서 뼈의 위치를 찾지 못해 고생했으나, 이 메타데이터 처리 로직을 추가하며 정확도를 확보할 수 있었습니다.
5. 데이터 세분화(Segmentation): 특정 장기 추출하기
전처리가 완료된 데이터에서 특정 임계값(Thresholding)을 적용하여 뼈 조직만 추출하거나, 마스크(Mask) 이미지를 생성하는 과정입니다.

최종 결과 화면에서는 터미널에 각 슬라이스별 장기의 부피나 밀도를 계산하여 Slice 142: Bone Volume = 452.1 mm³와 같은 통계 데이터를 출력하도록 구현했습니다.
6. 마치며: AI 기반 의료 진단의 미래
의료 영상 분석은 단순히 코딩 실력만으로 해결되지 않습니다. 해부학적 지식과 의료 장비의 특성을 깊이 이해해야 하죠. 이번 프로젝트를 통해 Python이 단순한 스크립트 언어를 넘어, 생명을 살리는 진단 보조 도구로써 얼마나 강력한 잠재력을 가졌는지 다시 한번 실감했습니다.
다음 포스팅에서는 이 기초 분석 데이터를 기반으로, 딥러닝(U-Net)을 활용한 자동 종양 검출(Tumor Detection) 모델을 구축하고 학습시키는 과정을 상세히 다뤄보겠습니다.
'Computer Vision + Python > 산업 응용 & 비즈니스활용 (전문가)' 카테고리의 다른 글
| 실전 Python 보안 프로젝트: 이미지 속 위험물(흉기/금지물) 탐지 시스템 구축과 오탐(False Positive) 극복기 (0) | 2026.01.03 |
|---|---|
| 이론을 넘어선 실전: Python 차량 번호 인식(LPR) 및 위반 감지 시스템 구축기 (0) | 2026.01.02 |
| 실전 Python DMS 구현: 졸음운전 방지를 위한 눈 깜빡임 감지(EAR) 알고리즘 최적화 (0) | 2026.01.01 |
| 실전 Python 산업용 비전: 공정 라인 결함 검사(Auto-Inspection) 시스템 구축과 '미세 결함' 탐지 노하우 (0) | 2025.12.30 |
| Python으로 의료 영상(Medical Imaging) 처리 – CT/MRI 이미지 분석 기초 (0) | 2025.12.25 |