def filter_depth(xyz, seg, regions): plane_info = { 'label': [], 'coeff': [], 'support': [], 'rot': [], 'area': [] } for idx, l in enumerate(regions['label']): mask = seg == l pt_sample = TextRegions.sample_grid_neighbours( mask, TextRegions.ransac_fit_trials, step=3) if pt_sample is None: continue # not enough points for RANSAC # get-depths pt = xyz[mask] plane_model = su.isplanar(pt, pt_sample, TextRegions.dist_thresh, TextRegions.num_inlier, TextRegions.min_z_projection) if plane_model is not None: plane_coeff = plane_model[0] if np.abs(plane_coeff[2]) > TextRegions.min_z_projection: plane_info['label'].append(l) plane_info['coeff'].append(plane_model[0]) plane_info['support'].append(plane_model[1]) plane_info['rot'].append(regions['rot'][idx]) plane_info['area'].append(regions['area'][idx]) return plane_info
def filter_depth(xyz,seg,regions): plane_info = {'label':[], 'coeff':[], 'support':[], 'rot':[], 'area':[]} for idx,l in enumerate(regions['label']): mask = seg==l pt_sample = TextRegions.sample_grid_neighbours(mask,TextRegions.ransac_fit_trials,step=3) if pt_sample is None: continue #not enough points for RANSAC # get-depths pt = xyz[mask] plane_model = su.isplanar(pt, pt_sample, TextRegions.dist_thresh, TextRegions.num_inlier, TextRegions.min_z_projection) if plane_model is not None: plane_coeff = plane_model[0] if np.abs(plane_coeff[2])>TextRegions.min_z_projection: plane_info['label'].append(l) plane_info['coeff'].append(plane_model[0]) plane_info['support'].append(plane_model[1]) plane_info['rot'].append(regions['rot'][idx]) plane_info['area'].append(regions['area'][idx]) return plane_info