def __init__(self, orig_file, image_dataset, label_dataset, mask_dataset, mask_bounds=None):
logging.debug('Loading HDF5 file "{}"'.format(orig_file))
self.file = h5py.File(orig_file, 'r')
self.resolution = None
self._mask_bounds = tuple(map(np.asarray, mask_bounds)) if mask_bounds is not None else None
if image_dataset is None and label_dataset is None:
raise ValueError('HDF5 volume must have either an image or label dataset: {}'.format(orig_file))
if image_dataset is not None:
self.image_data = self.file[image_dataset]
if 'resolution' in self.file[image_dataset].attrs:
self.resolution = np.array(self.file[image_dataset].attrs['resolution'])
if label_dataset is not None:
self.label_data = self.file[label_dataset]
if 'resolution' in self.file[label_dataset].attrs:
resolution = np.array(self.file[label_dataset].attrs['resolution'])
if self.resolution is not None and not np.array_equal(self.resolution, resolution):
logging.warning('HDF5 image and label dataset resolutions differ in %s: %s, %s',
orig_file, self.resolution, resolution)
else:
self.resolution = resolution
else:
self.label_data = None
if mask_dataset is not None:
self.mask_data = self.file[mask_dataset]
else:
self.mask_data = None
if image_dataset is None:
self.image_data = np.full_like(self.label_data, np.NaN, dtype=np.float32)
if self.resolution is None:
self.resolution = np.ones(3)
评论列表
文章目录