설명은 코드로 대체합니다.
import os
import pydicom
# 파일리스트 추출 가장 짧은 코드 (현재폴더안의 파일/폴더명 추출)
# 파일은 image 폴더 내에 넣어야 됨
rootdir = './image/'
# 해당 폴더 내에 파일/폴더 리스팅
files = os.listdir(rootdir)
# 처리 함수
def Fn_di_di(temp_img):
# 메타 비식별화 (변경할 내용들 참고)
temp_img.SeriesDate='Anonimized'
temp_img.StudyDate='Anonimized'
temp_img.ContentDate ='Anonimized'
temp_img.AccessionNumber='Anonimized'
temp_img.PatientName='Anonimized'
temp_img.PatientID='Anonimized'
temp_img.PatientBirthDate='Anonimized'
# 픽셀 array 상태로 핸들링
temp_img.pixel_array[0:20] = 0 #위 삭제
temp_img.pixel_array[460:480] = 0 #아래 삭제
temp_img.pixel_array[0:480,:100] = 0 #왼쪽 삭제
temp_img.pixel_array[0:480,610:640] = 0 #오른쪽 삭제
# bytes로 전환하여 저장
temp_img.PixelData = temp_img.pixel_array.tobytes()
#작업중 이미지 확인용
#plt.imshow(temp_img.pixel_array, cmap=plt.cm.bone)
return temp_img
# 파일 결과물 확인용
target_files = []
# 개별 파일에 대해 작동
for i in files:
if i[-3:] == 'dcm': # dcm 파일에만 작동
#결과 확인용. 작동에 불필요
target_files.append(rootdir + 'edited_' + i)
# 파일 불러오기
filename = rootdir + i
dataset = pydicom.dcmread(filename)
# 파일 저장용 파일명
edited_filename = rootdir + 'edited_' + i
# 처리 (Fn_di_di)
temp_img = Fn_di_di(dataset)
# 저장
temp_img.save_as(edited_filename)#,write_like_original=False)
################### 끝 ####################
# 결과물 확인용 코드
# 시각화용. 작동시 불필요
import matplotlib.pyplot as plt
temp_file = target_files[1]
test_data = pydicom.dcmread(temp_file)
print('file name : ' , temp_file)
print()
#test_data = pydicom.dcmread('./image/edited_11990007.dcm')
plt.imshow(test_data.pixel_array, cmap=plt.cm.bone)
print(test_data)
'반치용 > 기타 및 저장' 카테고리의 다른 글
[펌]3080 세팅 (0) | 2021.07.22 |
---|---|
[저장]선형회귀 한 방 정리 (0) | 2020.11.09 |
[저장]pdf에 이미지 넣기 (파이썬) (0) | 2020.11.06 |
[저장]Yolo 모바일 적용 관련 (0) | 2020.08.31 |
[저장]network analysis / community detection (0) | 2020.07.17 |
댓글