def compute_color_histograms(cloud, using_hsv=True): # Compute histograms for the clusters point_colors_list = [] # Step through each point in the point cloud for point in pc2.read_points(cloud, skip_nans=True): rgb_list = float_to_rgb(point[3]) # rgb_list is [r,g,b] if using_hsv: point_colors_list.append(rgb_to_hsv(rgb_list) * 255) else: point_colors_list.append(rgb_list) # Populate lists with color values channel_1_vals = [] channel_2_vals = [] channel_3_vals = [] for color in point_colors_list: channel_1_vals.append(color[0]) channel_2_vals.append(color[1]) channel_3_vals.append(color[2]) a = Histogram(channel_1_vals, channel_2_vals, channel_3_vals) normed_features = a.generate_normalised_concatenated_histogram() return normed_features
def compute_normal_histograms(normal_cloud): norm_x_vals = [] norm_y_vals = [] norm_z_vals = [] for norm_component in pc2.read_points(normal_cloud, field_names=('normal_x', 'normal_y', 'normal_z'), skip_nans=True): norm_x_vals.append(norm_component[0]) norm_y_vals.append(norm_component[1]) norm_z_vals.append(norm_component[2]) a = Histogram(norm_x_vals, norm_y_vals, norm_z_vals) a.bins_range = (-1, 1) normed_features = a.generate_normalised_concatenated_histogram() return normed_features