Skip to content

Open3D 计算点云的马氏距离

一、算法简介

1、概述

计算每个点到最近邻点的马氏距离,最后根据马氏距离进行颜色渲染。
  马氏距离的详细介绍见:百度百科——马氏距离

2、主要函数

Open3D中compute_mahalanobis_distance函数实现了计算每个点到其最近邻点马氏距离的功能。

python
        def compute\_mahalanobis\_distance(self): # real signature unknown; restored from \_\_doc\_\_
        """
 		compute\_mahalanobis\_distance(self)
 		Function to compute the Mahalanobis distance for points in a point cloud. See: 	
        https://en.wikipedia.org/wiki/Mahalanobis\_distance.
 
 		Returns:
		open3d.utility.DoubleVector
		"""
        pass

二、代码实现

python
import open3d as o3d
import numpy as np
from matplotlib import pyplot as plt

# -------------------------读取点云-----------------------------
pcd = o3d.io.read_point_cloud("horse.pcd")
print(pcd)
# -----------------------计算马氏距离------------------------
madist = pcd.compute_mahalanobis_distance()
madist = np.array(madist)
print(madist)
# ----------------------使用伪颜色显示最近邻点-------------------
density_colors = plt.get_cmap('plasma')(
    (madist - madist.min()) / (madist.max() - madist.min()))
density_colors = density_colors[:, :3]
pcd.colors = o3d.utility.Vector3dVector(density_colors)
o3d.visualization.draw_geometries([pcd], window_name="计算马氏距离",
                                  width=1024, height=768,
                                  left=50, top=50,
                                  mesh_show_back_face=False)

三、结果展示

在这里插入图片描述