DICOM 파일은 단순한 의료 이미지가 아니다. 그 안에는 영상, 환자 정보, 검사 정보, 장비 정보 등 수많은 데이터가 함께 저장되어 있다. 이러한 정보는 아무렇게나 저장된 것이 아니라, 객체(Object) 단위로 나뉘고, 각각의 객체는 여러 개의 데이터 요소(Data Element)로 구성되어 있다.
예를 들어, 한 명의 환자에 대한 CT 검사 결과는 하나의 DICOM 객체로 저장되며, 이 객체 안에는 환자 이름, 검사 일시, 영상 해상도, 촬영 장비 정보 등 수십 개의 데이터 요소가 포함된다.
이번 글에서는 DICOM에서 객체와 데이터 요소가 무엇인지, 이들이 어떻게 연결되어 있고, 실무에서 어떻게 사용되는지를 구체적으로 살펴본다. 이를 이해하면 DICOM 파일을 읽고 분석하는 데 큰 도움이 될 것이다.
1. DICOM 객체란 무엇인가
DICOM 객체는 하나의 검사 혹은 영상 단위를 나타내는 논리적 구조다.
다시 말해, **하나의 DICOM 파일은 하나의 객체(Object)**라고 생각할 수 있다.
이 객체는 환자, 검사, 시리즈, 이미지 등 계층적인 구조를 갖는다.
주요 DICOM 객체 계층 구조
계층 | 설명 |
Patient | 환자 정보 (이름, 생년월일, ID 등) |
Study | 한 번의 검사 단위 (예: 복부 CT) |
Series | 동일 조건의 연속된 이미지 묶음 (예: 복부 CT 단면 연속 촬영) |
Instance | 실제 하나의 DICOM 이미지 파일 |
예를 들어, 홍길동이라는 환자가 2024년 3월 1일 복부 CT를 찍었다면:
- 이 전체는 하나의 Study 이다.
- 그 안에서 100장의 단면 이미지가 촬영됐다면 100개의 Instance 가 존재한다.
- 그중 한 장의 DICOM 파일은 하나의 Object로 취급된다.
2. 데이터 요소(Data Element)란?
DICOM 객체를 구성하는 가장 작은 단위는 **데이터 요소(Data Element)**다. 모든 정보는 이 데이터 요소 형태로 저장된다.
예를 들어, 환자 이름은 하나의 데이터 요소이며, 촬영 날짜도 또 하나의 데이터 요소다.
데이터 요소 구성 구조
각 데이터 요소는 다음 4가지 구성 요소로 이루어진다.
구성 요소 | 설명 |
Tag | (그룹 번호, 요소 번호)로 이루어진 고유 식별자 |
VR (Value Representation) | 데이터 타입 (예: PN, DA, UI 등) |
Length | 데이터의 바이트 길이 |
Value | 실제 값 (예: 홍길동, 20240301 등) |
예시:
Tag: (0010,0010)
VR: PN (Person Name)
Length: 8
Value: 홍길동
이 구조는 매우 규칙적이기 때문에, 전문 도구 없이도 Hex 에디터나 Python으로 직접 파싱하는 것이 가능하다.
3. 자주 사용하는 주요 데이터 요소 태그
태그 | 설명 | VR | 예시 |
(0010,0010) | Patient’s Name | PN | 홍길동 |
(0010,0020) | Patient ID | LO | P123456 |
(0008,0020) | Study Date | DA | 20250301 |
(0008,0060) | Modality | CS | CT |
(0020,000D) | Study Instance UID | UI | 1.2.840... |
(7FE0,0010) | Pixel Data | OB/OW | (이미지 데이터) |
이 태그들만 이해하더라도 헬스케어 개발자를 제외한, 관련 직무에 종사하는 이들은 대부분의 실무 분석 및 필터링 작업이 가능하다.
4. VR(Value Representation)의 종류
VR은 해당 데이터 요소가 어떤 형식의 값을 갖는지를 나타낸다.
VR | 의미 | 예시 |
PN | Person Name | 홍길동 |
DA | Date | 20250301 |
TM | Time | 143012.000 |
UI | Unique Identifier | 1.2.840.10008... |
CS | Code String | CT, MR 등 |
LO | Long String | P123456 |
VR은 DICOM 파일을 해석할 때 필수적인 요소이며, Length 값 계산에도 영향을 주는 구조적 핵심이다.
5. 객체와 데이터 요소의 관계
- 객체는 하나의 논리 단위 (환자의 검사 단위)
- 데이터 요소는 그 안의 모든 세부 정보
즉, 객체가 하나의 XML 문서라면, 데이터 요소는 그 안에 있는 태그라고 볼 수 있다.
또한, 각 객체마다 고유한 "UID(Unique Identifier)"가 부여되며, 이 UID를 통해 병원 시스템이나 PACS 서버가 객체를 구분하고 저장하게 된다.
6. 실무에서의 활용 예시
- 환자 이름만 익명화할 때
→ (0010,0010) 태그만 찾아서 Value를 비움 - CT 검사만 추출할 때
→ (0008,0060) Modality 태그가 'CT'인 파일만 필터링 - AI 학습용으로 Pixel Data만 추출할 때
→ (7FE0,0010) 태그만 추출하여 이미지로 변환 - PACS 연동 오류 발생 시 원인 추적
→ UID 누락, VR 불일치 등을 통해 문제 해결 가능
참고를 위해 전용 뷰어를 통해 실제 dicom 파일을 확인할 때의 사진을 하단에 첨부한다.
이미지에서 보이는 바와 같이 Tag와 Value는 물론 VR, Length 등을 보기 쉽게 확인할 수 있다.
결론
DICOM 객체와 데이터 요소는 DICOM 파일 구조의 핵심이다.
객체는 논리적 단위를 나타내고, 그 내부에는 수많은 데이터 요소들이 체계적으로 저장되어 있다.
태그와 VR, UID를 이해하는 것은 단순한 파일 파싱을 넘어서 PACS 연동, AI 학습, 데이터 필터링, 보안 처리 등 모든 의료 영상 실무의 기본이 된다.
다음 편에서는 데이터 요소 중에서도 가장 많이 혼동되는 개념인 DICOM 태그와 VR, Length의 관계를 더 깊이 있게 다룰 예정이다.
'개발 > DICOM 이야기' 카테고리의 다른 글
07. DICOM UID(Unique Identifier)의 종류와 역할 (1) | 2025.07.29 |
---|---|
06. DICOM 태그란 무엇인가 – 태그, VR, Length 이해하기 (0) | 2025.07.28 |
04. DICOM의 기본 구조 – File Format과 Meta Information (0) | 2025.07.28 |
03. DICOM vs HL7 – 의료 정보 표준 비교 (1) | 2025.07.28 |
02. DICOM의 역사와 필요성 – PACS 도입 전후의 변화 (1) | 2025.07.28 |