Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

ufris

[파일 전처리] mha 파일 로드 본문

딥러닝/segmentation

[파일 전처리] mha 파일 로드

ufris 2018. 2. 28. 22:59

brats 데이터처럼 CT는 주로 mha 확장자로 저장이 되어 있습니다(다른 확장자의 경우도 있습니다). 이를 이미지로 저장하려면 mha 파일을 불러와서 CT 이미지 한장 한장을 png 나 jpg 로 저장해야 합니다. 


import skimage.io as io
import scipy.misc as sm
import os, cv2
import matplotlib.pyplot as plt

[필요한 패키지]

mha_path = 'D:/BRATS2015'
os.chdir('D:/BRATS2015')

for (path, dir, files) in os.walk(mha_path):

print(path)
for filename in files:
print(filename)

mha 가 들어있는 파일을 찾기 위해서는 가장 상위 폴더를 지정해줘야 합니다. brats 데이터의 경우 하위폴더가 많기 때문에 os.listdir 로 하기에는 많이 번거롭습니다. 

위의 코드를 프린트 하면 


[ print(path) ]


[ print(filename) ]


path는 해당 경로에 있는 모든 하위 디렉토리를 출력합니다. 그리고 file 은 해당 디렉토리에 있는 모든 파일들을 출력합니다

for (path, dir, files) in os.walk(mha_path):
for filename in files:
ext = os.path.splitext(filename)[-1]
print(ext)

os.path.splitext 를 하면 파일 이름의 확장자만 뽑게 됩니다. ( .mha)

for (path, dir, files) in os.walk(mha_path):
for filename in files:
ext = os.path.splitext(filename)[-1]
if ext == '.mha':
load_mha = path + '\\' + filename
path1 = path.replace('2015','')
filename1 = filename.replace('.mha','')
save_path = path1 + '\\' + filename1
img = io.imread(load_mha,plugin='simpleitk')
if not os.path.exists(save_path):
os.makedirs(save_path)
for i in range(len(img)):
sm.imsave(save_path + '\\' + str(i+1) + '.png',img[i])
print(save_path)

설명 이후 코드는 이미지를 저장하기 위해 파일명을 만드는 코드입니다. 이미지 저장을 위한 폴더명은 사용자에 맞게 변경하면 됩니다. 중요한 부분은 io.imread 인데 mha 확장자 안에 있는 155장의 이미지를 다 불러옵니다. 그것을 for문 돌려 이미지 한장 한장을 저장시킵니다.  



해당 폴더에 들어가면 한 mha 파일에 대한 155장의 이미지 파일이 저장된 것을 볼 수 있습니다

'딥러닝 > segmentation' 카테고리의 다른 글

[Segmentation] IOU(Intersection Over Union)  (0) 2018.03.01
[Segmentation] H-DenseUnet 2D  (0) 2018.02.28