개발/DICOM 이야기

15. DCMTK 사용법 – 명령어 기반 DICOM 도구 활용하기

devbake 2025. 7. 29. 08:50

DICOM 파일을 다루는 작업은 단순히 뷰어로 이미지를 확인하는 것을 넘어, 태그를 읽고, 수정하고, 서버로 전송하거나 구조를 분석하는 작업이 포함된다. 이때 가장 널리 사용되는 오픈소스 도구가 바로 DCMTK(DICOM ToolKit)이다.
DCMTK는 독일 OFFIS 연구소에서 개발한 C++ 기반의 명령어 도구 모음으로,
Windows, Linux, macOS에서 모두 동작하며, 파일 읽기, 전송, 익명화, 서버 테스트 등 실무에 필요한 거의 모든 기능을 제공한다.
이번 글에서는 DCMTK에서 가장 자주 사용하는 명령어들과 그 활용법을 실제 예시와 함께 정리한다.

 

DCMTK 사용법 – 명령어 기반 DICOM 도구 활용하기

 

1. DCMTK 설치 방법 (요약)

  • 공식 사이트: https://dicom.offis.de/dcmtk.php.en
  • Windows 사용자: 설치형 .exe 제공 (환경변수 등록 권장)
  • Linux/macOS: apt install dcmtk 또는 brew install dcmtk로 설치 가능
  • 설치 후 dcmdump, storescu, movescu 등의 명령어 사용 가능

 

2. 주요 명령어와 기능

명령어 기능
dcmdump DICOM 태그 구조 확인 (파일 구조 해석)
dcmodify DICOM 파일 태그 수정
dcmdjpeg JPEG 압축 해제 / 적용
storescu PACS 서버로 파일 전송
movescu PACS 서버로부터 영상 요청 (C-MOVE)
findscu PACS 서버 검색 요청 (C-FIND)
dcmsend 여러 파일 일괄 전송 (storescu보다 고급 기능)

 

3. dcmdump – DICOM 구조 확인

 
dcmdump sample.dcm

// 출력 예시
(0008,0016) UI [1.2.840.10008.5.1.4.1.1.2] #  26, 1 SOP Class UID
(0010,0010) PN [KIM^JISOO]                   #  10, 1 Patient's Name
(7fe0,0010) OB (Pixel Data, not printed)    # image data

📌 실제 태그를 하나하나 확인하며 UID, 이름, 날짜, 압축 상태 등 확인 가능

 

 

4. dcmodify – 태그 수정

// 환자 이름 변경 예시:
dcmodify -i "(0010,0010)=ANONYMOUS" sample.dcm

// 환자 ID 삭제:
dcmodify -e "(0010,0020)" sample.dcm

📌 환자명 변경, 환자 ID 삭제 등의 태그 수정 행위는 익명화 작업에 필수적이다. (-i는 입력/수정, -e는 삭제)

 

 

5. dcmdjpeg – JPEG 압축 해제

압축된 JPEG DICOM → 비압축 변환:

dcmdjpeg compressed.dcm uncompressed.dcm

 

압축 적용:

dcmdjpeg +e uncompressed.dcm compressed.dcm

📌 JPEG 압축이 포함된 파일은 일부 뷰어, AI 라이브러리에서 읽지 못하는 경우가 많으므로,
AI 전처리 시 비압축으로 변환하는 것이 안정적이다.

 

 

6. storescu – DICOM 파일 서버 전송

storescu -aec ORTHANC -aet CLIENT 127.0.0.1 4242 sample.dcm
옵션 설명
-aec 서버 AE Title (예: ORTHANC)
-aet 클라이언트 AE Title
127.0.0.1 서버 IP 주소
4242 서버 포트 번호

📌 서버(PACS 또는 Orthanc 등)에 파일을 업로드할 때 사용

 

 

7. movescu / findscu – 서버 검색 및 다운로드

C-FIND 예시:

findscu -k 0010,0010="JISOO" 127.0.0.1 4242

C-MOVE 예시:

movescu -aec ORTHANC -aet CLIENT -k 0010,0020="P12345" 127.0.0.1 4242
📌 서버로부터 환자 ID나 이름 기준으로 검색하거나 영상 파일을 다운로드할 수 있음

 

 

8. 실무에서 유용한 조합 예시

익명화 + 업로드 자동화 스크립트 (Bash)

for file in *.dcm
do
  dcmodify -e "(0010,0010)" -e "(0010,0020)" "$file"
  dcmdjpeg "$file" "uncompressed_$file"
  storescu -aec ORTHANC 127.0.0.1 4242 "uncompressed_$file"
done

📌 ① 이름/ID 제거 → ② 비압축 변환 → ③ 서버 전송까지 자동 처리

 

 

9. DCMTK의 장단점 요약

장점 단점
무료, 오픈소스 GUI 없음 (CLI만 지원)
PACS 테스트에 필수적 명령어 숙련도 필요
서버 전송/수신 기능 완비 에러 메시지가 친절하지 않음
익명화, 변환 등 유연한 처리 일부 기능은 복잡한 옵션 구성 필요

 


결론

DCMTK는 단순한 DICOM 뷰어와 달리, 파일 구조 분석, 태그 수정, PACS 연동, 익명화, 압축 해제 등 다양한 실무 작업을 명령어 수준에서 정밀하게 제어할 수 있는 도구다. 비록 GUI는 없지만, 익숙해지면 반복적인 작업을 자동화하거나 복잡한 PACS 시스템과의 연동 테스트를 효율적으로 수행할 수 있다. 특히 AI 학습용 데이터셋을 구성하거나 서버 업로드 전 사전 점검을 할 때 매우 유용하다.
다음 글에서는 Python을 활용한 pydicom 입문을 다룰 예정이다.