ufris
[파일 전처리] mha 파일 로드 본문
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 |