問題タブ [point-clouds]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
geometry - 点群ライブラリの手動三角形分割
点群があり、平面検出を実行しました。次に、シーンを三角測量したいと思います。
私はすでに次のように見える各平面の三角測量を持っています:
Point Cloud Library
GreedyProjectionTriangulation
シーンを再構築するために使いたい。そのため、再構築に介入するさまざまな機能を適応させたいと考えています。
gp3.h
andのコードgp3.hpp
( にあります)を掘り下げpcl/surface/include/pcl/surface
、関連する出版物を読みました。これまでのところ、私はこれに来ました:
- 平面のすべてのポイントは、最初にフリンジとしてマークする必要があります。ベクトルを使用すると簡単に行うことができ
state_
ます。 - 関数 で平面の三角形を追加しますが
addTriangles
、これで問題ありません。 - エッジを強制する方法がわかりません。ベクトルはありますが、
doubleEdges
それがどのように機能するのかよくわかりませんでした。ポイントの反復ごとにリセットされるようです。 - 平面のポイントを
fringe_queue_
ベクトルにプッシュする必要がありaddFringe
ますが、2 つの引数を要求し、その理由が理解できないため、関数は奇妙です。 - ベクトルの意味がわかりませんでし
part_
た。
私の現在の結果はこれです:
画像ではあまり明確ではありませんが、エッジを強制する方法がわからないため、三角形が重なるという問題があります。
編集
コードを掘り続けます。重要な部分が何であるかを特定しました。コードの壁を避けるために、ここで興味深い部分を見つけることができます。これは、gp3.hpp のおよそ 180 行目と 285 行目の間にあります。
sfn_
とが何のためにあるのか理解できませんffn_
。私の直感ではsfn_[R_]
、 の2 番目のフリンジ ネイバーが返され、 のR_
最初のフリンジ ネイバーが返されます。だからこのようなもの:
ffn_[R_]
R_
私が正しければ、平面の輪郭が正しい順序でソートされているので、これを簡単に行うことができます。
平面に属する三角形のエッジを強制する方法がまだわかりません。コードを見ると、キーはdoubleEdges
ベクトルにあると思いますが、この部分を変更して問題に関連させる方法がわかりません。
algorithm - 整理された 3D 点群データ内の接続されたコンポーネント
ハイ!
Kinect センサーから点群を整理しました。テーブルが前にあるソファの点群が整理されているとします。私が手に入れたいのは、ソファーとテーブルの 2 つの雲です。
接続されたコンポーネントを取得するためのアルゴリズムを探しています。疑似コードや論文を持っている人はいますか? または多分いくつかのコード(Matlab)
現時点での私の考え: 2D 情報を使用して、ポイントの隣接ピクセルを取得できます。次に、隣接するピクセルまでのユークリッド距離を確認できます。距離がしきい値を下回る場合、ピクセルは同じクラスターに属します。...
ありがとう
python - MayaVi で 3D ポイントの絶対色を指定する
クラスを使用して、MayaVi Python ライブラリを使用して 3D ポイントをプロットしていpoints3d
ます。ドキュメントでは、各ポイントの色が 4 番目の引数で指定されることが指定されていますs
。
さらに、x、y、および z と同じ形状の 4 番目の配列 s を渡して、各点に関連付けられたスカラー値を与えるか、スカラー値を返す関数 f(x, y, z) を渡すことができます。このスカラー値を使用して、ポイントの色とサイズを調整できます。
これは、各ポイントのスカラー値を指定し、ポイントをcopper
、jet
またはなどのカラーマップにマップしますhsv
。たとえば、ドキュメントから:
与えます:
代わりに、各ポイントの実際の値を (r, g, b) タプルとして指定したいと思います。これは MayaVi で可能ですか? をタプルの配列に置き換えようとしましたs
が、エラーがスローされます。
python - 点群の法線を外側に向けるために、点群を複製して拡大し、元の雲の中心に配置します。
点群削減に関する学部論文を書いています。
法線を外側に向ける必要があります。私はしばらくの間これに苦労してきました。
これが私がやろうとしている方法です。オブジェクト、特にスタンフォードバニーの点群があります。このオブジェクトの拡大版を作成し、その中に縮小版を配置します。次に、法線を外側の「大きい」オブジェクトの方向に向けます。
大きなオブジェクトを小さなオブジェクトの上に配置すると、それらが接触せずに配置できません。つまり、ウサギの耳が重なっています。小さなオブジェクトを大きなオブジェクトの中に収める方法を知っている人はいますか。
これまでの私のコードは次のとおりです。
python - オブジェクトの点群をスケーリングし、交差しないように元のオブジェクトの中心に配置する
私はウサギの点群を持っていますが、どんなオブジェクトでもかまいません。
小さいウサギの上に大きいウサギを直接乗せたいです。さまざまな層を持つマトリョーシカ ドルを考えてみてください。問題は、外側のレイヤーを内側のレイヤーの周りに完全にフィットさせることです。本体は重ならないかもしれませんが、耳は重なります。
これが私のコードです:
numpy - 面を点に合わせる - それが正しいかどうかはどうすればわかりますか?
点群単純化アルゴリズムの作業で忙しいです。
以下は、ポイントの近傍に対する法線を計算するコードです。主成分分析を使いました。
ポイントの法線と曲率を正しく計算したかどうかを知りたいですか?
法線が方向付けられていないことは承知しており、次のステップは、ネットワーク x (各ポイントからその最も近い隣接ポイントへのエッジ) を使用してグラフを作成し、各エッジを 1-|ni*ni+1| で重み付けすることです。. 次に、最小スパニング ツリーを作成し、最大 z 値ポイントから開始して深さ検索を開始し、 ni*ni+1=-1 の場合は ni+1 の向きを反転します。グローバルで一貫した向きを実現できるように、 networkx を使用します。これが最善の方法ですか?
ありがとう
performance - すべてのポイントが割り当てられるまで、乱数の 10%、残りの 90 の 10% などを効率的に取得する方法
これは私がやりたいことです:
30万ポイントあります。
10%のポイントが欲しいです。
次に、残りの 90% のポイントの 10% が必要です。
次に、残りの 81% のポイントの 10% が必要です
次に、ポイントの残りの 73% の 10% が必要です
など、すべてのポイントが終了するまで。
これが最速の方法ですか?
これが私の実際の完全な点群単純化アルゴリズムです