def __call__(self, sample): """Affinity label processing.""" seg = sample[self.source] msk = get_mask(sample, self.source) affs = list() msks = list() # Affinitize. for dst in self.dst: affs.append(tf.affinitize1(seg, dst=dst)) msks.append(tf.affinitize1_mask(msk, dst=dst)) aff = np.concatenate(affs, axis=0) msk = np.concatenate(msks, axis=0) # Rebalancing. if self.rebalance: for c in xrange(aff.shape[0]): msk[c, ...] *= tf.rebalance_binary_class(aff[c, ...], msk=msk[c, ...]) # Update sample. sample[self.target] = aff sample[self.target + '_mask'] = msk # Crop. if self.crop is not None: for k, v in sample.iteritems(): sample[k] = tf.crop(v, offset=self.crop) return sample
def __call__(self, sample): """Synapse label processing.""" syn = sample[self.source] # Binarize. lbl = tf.binarize(syn) msk = get_mask(sample, self.source) # Rebalancing. if self.rebalance: msk = tf.rebalance_binary_class(lbl, msk, base_w=self.base_w) # Update sample. sample[self.target] = lbl sample[self.target + '_mask'] = msk return sample
def __call__(self, sample): """Semantic label processing.""" sem = sample[self.source] # Semantic class expansion. lbl, msk = tf.multiclass_expansion(sem, ids=self.ids) # Combine with a given mask. msk *= get_mask(sample, self.source) # Rebalancing. if self.rebalance: for i, _ in enumerate(self.ids): msk[i, ...] = tf.rebalance_binary_class(lbl[i, ...], msk[i, ...]) # Update sample. sample[self.target] = lbl sample[self.target + '_mask'] = msk return sample