Pydicom
Pydicom은 Python 언어로 Dicom 파일(.dcm)을 다룰 때 사용되는 가장 유명한 패키지이며 DICOM에 대한 비식별정보를 익명화 처리할수 있고 DICOM TAG에 원하는 익명화하여 재저장할 수 있도록 지원해 줄수 있다.
PYDICOM 설치 및 유용한 라이브러리
1
2
3
4
|
pip install pydicom
pip install tqdm
pip install multiprocessing
|
cs |
DICOM 불러오기
1
2
3
4
5
6
7
8
9
10
11
|
import pydicom as dcm
# 1. 모든 데이터 불러오기 (둘 다 가능)
raw_file = dcm.dcmread('filename.dcm')
raw_file = dcm.read_file('filename.dcm')
# 2. Header 정보 불러오기 (원하는 헤더명 띄어쓰기 없이 적으면 됨)
date = raw_file.StudyDate
# 3. Image Array 불러오기
image = raw_file.pixel_array
|
cs |
PyDICOM 익명화 - 식별정보처리
DICOM 파일을 사용할떄 익명화 부분에 대해 많이 고려하고 처리해야하는 부분이 많다. 개인적으로 익명화 데이터는 아래와같이 11개정도 Tag정보를 기준으로 했는데 사용하는사람의 기준에 따라 익명화 처리해도 무방하다
1
2
3
4
5
6
7
8
9
10
11
|
Metadata.PatientName = 'Anonymized'
Metadata.PatientBirthDate = 'Anonymized'
Metadata.PatientSex = 'Anonymized'
Metadata.OtherPatientIDs = 'Anonymized'
Metadata.PatientAge = 'Anonymized'
Metadata.RequestingPhysician = 'Anonymized'
Metadata.InstitutionName = 'Anonymized'
Metadata.InstitutionAddress = 'Anonymized'
Metadata.ReferringPhysicianName = 'Anonymized'
Metadata.StationName = 'Anonymized'
Metadata.PhysiciansofRecord = 'Anonymized'
|
cs |
폴더기준 익명화 처리 예시 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import os
import pydicom
from tqdm import tqdm
import time
# get dcm_file_list
def get_file_list() :
try :
list_path = []
list_file = []
list_full = []
for (path, _, file) in os.walk('.\\'):
for each_file in file:
if each_file[-4:] == '.dcm':
list_path.append(path)
list_file.append(each_file)
list_full.append(os.path.join(os.getcwd(),path,each_file).replace('.\\',''))
return list_full
except :
return 'get_file_list error.'
# de-identifier for multi
def de_identifier_for_multi(filename):
try:
Metadata = pydicom.filereader.dcmread(str(filename))
except: return 'de_identifier // file reading error. '
try:
# de-identify
Metadata.PatientName = 'Anonymized'
Metadata.PatientBirthDate = 'Anonymized'
Metadata.PatientSex = 'Anonymized'
Metadata.OtherPatientIDs = 'Anonymized'
Metadata.PatientAge = 'Anonymized'
Metadata.RequestingPhysician = 'Anonymized'
Metadata.InstitutionName = 'Anonymized'
Metadata.InstitutionAddress = 'Anonymized'
Metadata.ReferringPhysicianName = 'Anonymized'
Metadata.StationName = 'Anonymized'
Metadata.PhysiciansofRecord = 'Anonymized'
Metadata.save_as(str(filename))
# TODO - revive
# sql_query(True)
except:
# TODO - revive
# sql_query(False)
return 'de_identifier error'
|
cs |
'Programming > Medical Imaging Process' 카테고리의 다른 글
[Python] 의료인공지능 개요 (0) | 2023.03.17 |
---|---|
[VTK] Error 'vtkPolyDataMapper' (0) | 2019.06.26 |
[DCMTK] DCMTK Install & Complile - Part 2 (3) | 2018.02.12 |
[DCMTK] DCMTK Install & Complile - Part 1 (0) | 2018.02.10 |