程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python 點雲normalize(歸一化)

編輯:Python

點雲歸一化的步驟(參照 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

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved