def segs_to_raveler(sps, bodies, **kwargs): import morpho min_sp_size = kwargs.get('min_sp_size', 16) sps_out = [] sps_per_plane = [] sp_to_segment = [] segment_to_body = [array([[0,0]])] total_nsegs = 0 for i, (sp_map, body_map) in enumerate(zip(sps, bodies)): sp_map, nsps = label( morpho.remove_small_connected_components(sp_map, min_sp_size, True) ) segment_map, nsegs = label(body_map) segment_map += total_nsegs segment_map *= sp_map.astype(bool) total_nsegs += nsegs sps_out.append(sp_map[newaxis,...]) sps_per_plane.append(nsps) valid = (sp_map != 0) + (segment_map == 0) sp_to_segment.append(unique( zip(it.repeat(i), sp_map[valid], segment_map[valid]))) valid = segment_map != 0 logging.debug('plane %i done'%i) segment_to_body.append(unique( zip(segment_map[valid], body_map[valid]))) logging.info('total superpixels before: ' + str(len(unique(sps))) + 'total superpixels after: ' + str(sum(sps_per_plane))) sps_out = concatenate(sps_out, axis=0) sp_to_segment = concatenate(sp_to_segment, axis=0) segment_to_body = concatenate(segment_to_body, axis=0) return sps_out, sp_to_segment, segment_to_body
def segs_to_raveler(sps, bodies, **kwargs): import morpho min_sp_size = kwargs.get('min_sp_size', 16) sps_out = [] sps_per_plane = [] sp_to_segment = [] segment_to_body = [array([[0, 0]])] total_nsegs = 0 for i, (sp_map, body_map) in enumerate(zip(sps, bodies)): sp_map, nsps = label( morpho.remove_small_connected_components(sp_map, min_sp_size, True)) segment_map, nsegs = label(body_map) segment_map += total_nsegs segment_map *= sp_map.astype(bool) total_nsegs += nsegs sps_out.append(sp_map[newaxis, ...]) sps_per_plane.append(nsps) valid = (sp_map != 0) + (segment_map == 0) sp_to_segment.append( unique(zip(it.repeat(i), sp_map[valid], segment_map[valid]))) valid = segment_map != 0 logging.debug('plane %i done' % i) segment_to_body.append(unique(zip(segment_map[valid], body_map[valid]))) logging.info('total superpixels before: ' + str(len(unique(sps))) + 'total superpixels after: ' + str(sum(sps_per_plane))) sps_out = concatenate(sps_out, axis=0) sp_to_segment = concatenate(sp_to_segment, axis=0) segment_to_body = concatenate(segment_to_body, axis=0) return sps_out, sp_to_segment, segment_to_body
def remove_small(a): return morpho.remove_small_connected_components(a, min_size, False)