python 点云normalize(归一化)

点云归一化的步骤(参照 pointnet++ 的归一化处理, 源码出处忘记了...):

1. 将点云的中心置于原点(0, 0, 0)

2. 根据xyz轴中的最长轴缩放至 [-1, 1]

注意: 此时点云的 数值范围是 [-1, 1]

import numpy as np
def normalize_point_cloud(pc):
    centroid = np.mean(pc, axis=0) # 求取点云的中心
    pc = pc - centroid # 将点云中心置于原点 (0, 0, 0)
    m = np.max(np.sqrt(np.sum(pc ** 2, axis=1))) # 求取长轴的的长度
    pc_normalized = pc / m # 依据长轴将点云归一化到 (-1, 1)
    return pc_normalized, centroid, m  # centroid: 点云中心, m: 长轴长度, centroid和m可用于keypoints的计算

if __name__ == '__main__':
    
    pc = np.random.rand(2000, 3)
    pc_normalized, centroid, m = normalize_point_cloud(pc)
    keypoints = np.random.rand(2, 3)
    keypoints_normalized = (keypoints - centroid) / m

你可能感兴趣的:(python,机器学习,深度学习)