nii.gz转h5数据集
一个h5文件对应一个数据的image和label,可以通过train.txt、test.txt、val.txt划分训练集、测试集、验证集
import numpy as np
import h5py
import nibabel as nib
from tqdm import tqdm
""""
获取文件夹下全部文件名,后缀为str
"""
def get_files(dir, str):
files = []
for file in os.listdir(dir):
if file.__contains__(str):
print(file[:-len(str)])
files.append(file)
return files
"""
获取nii_file数据
"""
def get_nii(image_path):
img = nib.load(image_path)
image = img.get_fdata(dtype=np.float64)
return image
"""
写入data.h5文件
"""
def save_h5(save_path, image_path, label_path):
if os.path.exists(save_path):
print(f'{save_path} has exist')
return
if os.path.exists(image_path) == False:
print(f'{image_path} has not exist')
return
if os.path.exists(label_path) == False:
print(f'{label_path} has not exist')
return
image = get_nii(image_path)
label = get_nii(label_path)
f = h5py.File(save_path, 'w')
f.create_dataset('image', data=image)
f.create_dataset('label', data=label)
f.close()
def make_h5():
img_parent = '/Users/menglian.gan/Documents/segment/dataset/aiteeth/img/'
label_parent = '/Users/menglian.gan/Documents/segment/dataset/aiteeth/label1/'
save_parent = '/Users/menglian.gan/Documents/projects/pythonProjects/SSL4MIS/data/Aiteeth/data/'
img_list = get_files(img_parent)
print(len(img_list))
for case in tqdm(img_list):
save_h5(save_parent + case[:-7] + '.h5', img_parent + case, label_parent + case)
################test
# f = h5py.File(save_parent+'1001152328_20180910.h5', 'r')
# image = f['image'][:]
# # print(image)
# image2 = nib.load(img_parent+'1001152328_20180910.nii.gz')
# image2 = image2.get_fdata(dtype = np.float64)
# print(type(image.shape))
# print(type(image2.shape))
# train_set_x_orig = np.array(train_dataset['X_train'][:])
def check():
save_parent = '/Users/menglian.gan/Documents/projects/pythonProjects/SSL4MIS/data/Aiteeth/data/'
get_files(save_parent, '.h5')
if __name__ == '__main__':
make_h5()