我在 XYZ 格式的 3d 点云文件上使用 python,我需要计算它们中的每一个到中心的距离,然后根据它标记(和颜色以更好地可视化)它们。到目前为止,我使用以下代码得到了这个云分类:
xyz_coordinates = points[:, 0:3]
xyz_min = np.amin(xyz_coordinates, axis=0) # 3, gets minimum of each axis
xyz_max = np.amax(xyz_coordinates, axis=0) # 3, gets maximum of each axis
xyz_center = (xyz_min + xyz_max) / 2
xyz_max_euclidean=distance.euclidean(xyz_center,xyz_max) # gets euclidean distance, it gives me circles
xyz_cut=xyz_max_euclidean/N_CLASSES
# gets the euclidean distance for all points and assign normalized tagged classes
for i in xrange(xyz_coordinates.shape[0]):
label=int(math.floor(distance.euclidean(xyz_center,xyz_coordinates[i])/xyz_cut))
point_bbox_list.append(np.concatenate([xyz_coordinates[i],g_distance2color[str(label)],np.array([label])],0))
但是正如您所看到的,我正在计算从中心到每个点的欧几里得距离,这是不正确的,在这种情况下,例如墙壁或桌子的限制不正确。我想象了这种图形,但有一个方形的彩色形状。现在我成功地计算了每个对象的边界框,如图所示,但我无法得到我期望的结果。我也尝试过马氏距离,但分类结果是椭圆体,我可以使用其他计算距离度量吗?