首页 > 解决方案 > 在 HDF5 文件中存储大量 RGB 图像的更有效方式

问题描述

我有几百张大图像(超过100K x 200K像素)。我将这些图像中的每一个分割成 256 x 256 的补丁,并将它们全部存储在具有以下结构的 HDF5 文件中:
在此处输入图像描述

这是我重新创建此 HDF5 结构的代码:

def save_to_hdf5(slide_name, patches, coords, labels, db_name , db_location):
    with h5py.File(db_location + f'training{db_name}.h5' ,'a') as hf:
        patient_index = "_".join(os.path.basename(slide_name).split('.')[0].split('_')[:2])
        slide_index = "_".join(os.path.basename(slide_name).split('.')[0].split('_')[3])
        slide_label = labels[os.path.basename(slide_name)]
    
        grp = hf.require_group(patient_index)
        subgrp = grp.require_group('wsi_{}'.format(slide_index))
        for i, patch in enumerate(patches):
        subsubgrp = subgrp.require_group('patch_{}'.format(i))
        subsubgrp.create_dataset('image', np.shape(patch), data=patch, compression="gzip", compression_opts=7)#, chunks=True)
        subsubgrp.create_dataset('label', np.shape(slide_label), data=slide_label)
        subsubgrp.attrs["patch_coords"] = (coords[i][0], coords[i][1])

现在一些大图像的 HDF5 文件的大小甚至比原始图像本身还要大。我想知道我在代码中的数据集创建步骤是否有问题?

标签: pythonhdf5tiffh5pymedical-imaging

解决方案


推荐阅读