【3D点群処理】点群データにおける法線とOpen3Dを用いた法線の推定
データ行列を \( X \) とし、\( X \) は \( m \times n \) の行列で、\( m \) はデータ点の数、\( n \) は次元数とします。 平均ベクトルを \( \mu \) とし、\( \mu \) は \( n \) 次元ベクトルで、各成分 \( \mu_i \) は \( X \) の \( i \) 列目の平均値とします。つまり、\( \mu_i = \frac \sum_^ X_ \) となります。 次に、データ行列 \( X \) から平均ベクトル \( \mu \) を引いた行列を \( Y \) とします。これにより、データは平均0となります。 そして、共分散行列 \( C \) は以下のように計算されます。 \[ C = \frac Y^T Y \] ここで、\( Y^T \) は行列 \( Y \) の転置を表します。この計算により、共分散行列 \( C \) は \( n \times n \) の行列となり、\( C \) の \( (i, j) \) 成分はデータの \( i \) 次元と \( j \) 次元の共分散を表します。
④固有値と固有ベクトルの計算
共分散行列の固有値と固有ベクトルを求める方法は以下のようになります。 共分散行列を \( C \) とします。 共分散行列 \( C \) の固有値 \( \lambda \) と固有ベクトル \( v \) は、以下の等式を満たします。 \[ Cv = \lambda v \] つまり、各固有ベクトル \( v \) は、\( C \) によって乗算された結果が \( v \) のスカラー倍となるようなベクトルです。そのスカラーが、\( v \) に対応する固有値 \( \lambda \) です。 固有値は、対応する固有ベクトルによって定義される方向に沿ったデータの分散を表します。
⑤法線の決定
Open3Dで法線推定
import open3d as o3d # numpyの点群データをopen3d に変換。 test_data -> numpy array (n,3) pcd=o3d.geometry.PointCloud() pcd.points = o3d. utility.Vector3dVector(test_data) # 法線ベクトルの推定(KDTreeによる近傍点探索を使用) pcd.estimate_normals( search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30)) # Open3dで可視化 o3d.visualization.draw_geometries([pcd], point_show_normal=True)おすすめ参考書
【書籍】3Dデータ/点群処理について入門から応用までの勉強方法 Next SQLのチートシート② Prev関連記事
Dockerコンテナをアイコン付きでそのままexe化する方法 MLOps入門:#4 データ変換をして使いやすい形に整えよう前回の記事はこちら はじめに データ変換は、データをモデルが扱いやすい形式に加工 .
【3D点群処理】Pythonで点群を3次元プロットして可視化する方法4選はじめに Pythonで3次元点群を表示する方法をいくつか紹介します。 今回使用 .
【論文】Pointview-GCN: 3D Shape Classification With Multi-View Point Clouds※ただの翻訳とポイントを書いたメモです。正確性は保証していません。 アブスト こ .
【Python_3D点群処理】点群のダウンサンプリング:FPSについての解説と実装ディスカッション
コメント一覧 コメントをどうぞ コメントをキャンセル この記事のトラックバックURL カテゴリー アーカイブ よく読まれている記事 新着記事 プロフィールジーノ 点群や画像処理、AIについて学ばさせてください。
目次- 1. 点群における法線とは
- 2. PCAを使った法線の計算
- 3. Open3Dで法線推定
- 4. おすすめ参考書
Copyright © 2026 Deliberate Learning All Rights Reserved.
WordPress Luxeritas Theme is provided by "Thought is free".