問題タブ [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.
3d - 2d 点群の輪郭
点群を 2 次元で散らばっています。私の問題は、点群の輪郭を取得するために境界の点を取得したいということです。
この「マーチング スクエア」については知っていますが、このアルゴリズムは通常 2D のピクセルに使用されます。2次元点群や「マーチングスクエア」アルゴリズムの詳細から輪郭を取得する方法を知っている人はいますか? さらに、私の場合、凸包は機能しません。
前もって感謝します。
android - Android OpenGL 点群
私は使用しようとしてきた
頂点バッファーを使用して画面に 4 つのポイントを描画する方法を教えてください。最終的には点群を表示したいので、描きたいのは点だけです。(最終的に) 多数のポイントがある場合、頂点バッファーを使用する方法はありますか? 変わるわけではありませんが、見る視点やスケールを変えていきたいです。
vertexBuffer セットアップ:
これは私のポイントの現在の描画呼び出しです (形状の描画順序は重要ではないため、インデックスは必要ありません)。
現在、draw(); を呼び出すとプログラムがクラッシュします。
ありがとうございました!
rotation - 法線ベクトルに基づく点群の回転
床の向きに基づいて 3D 点群を回転させようとしています。床を検出し、その法線ベクトルを計算しました。この法線ベクトルを使用して、床のすべてのポイントが同じ y 値を持つようにします。
正規化された 2 つのベクトルの内積は、それらの間の角度の余弦であるため、最初に現在の法線ベクトル (0.856、0.958、2.58) と目的の法線ベクトル (0.0、0.958、0.0) を正規化します。内積 = 0.917 したがって、角度 = 70.586 ですが、3 次元であるため、これは役に立たないようです。2 回ローテーションする必要がありますか? もしそうなら、最善のアプローチに関する提案はありますか?
c++ - 点群ライブラリのメッシュへの点群
点群をメッシュに変換する PCL の関数/クラスはありますか?
visual-studio-2010 - Visual Studio 2010 での PCL の使用
私はライブラリを扱うのが初めてで、いくつかの問題があります。
PCL とすべての依存関係を自分のコンピューター (Windows 7、32 ビット) にインストールしました。 「Simple Cloud Visualization」の例のような簡単な例をビルドして使用できます。しかし、より完全なサンプルを使用したい場合、Visual Studio 2010 はリンク エラーを報告します。
私の理解が正しければ、必要なすべての「追加の依存関係」を「リンカー/入力」に「含め」ませんでした。lib ディレクトリからすべての .lib ファイルを含めようとしましたが、エラー レポートは同じです。
より完全なサンプルを機能させるために、どの.libを「追加の依存関係」として追加する必要があるか、誰にもわかりませんか? それとも別の場所に問題がありますか?
エラーレポート:
1>main.obj : エラー LNK2019: 未解決の外部シンボル "public: class vtkProperty * __thiscall vtkActor::GetProperty(void)" (?GetProperty@vtkActor@@QAEPAVvtkProperty@@XZ) 関数で参照されている "public: bool __thiscall pcl::視覚化::PCLVisualizer::addSphere(struct pcl::PointXYZ const &,double,class std::basic_string,class std::allocator > const &,int)" (??$addSphere@UPointXYZ@pcl@@@PCLVisualizer@ visuals@pcl@@QAE_NABUPointXYZ@2@NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) 1>main.obj : エラー LNK2019:未解決の外部シンボル "void __cdecl pcl::console::print(enum pcl::console::VERBOSITY_LEVEL,char const *,...)" (?print@console@pcl@@YAXW4VERBOSITY_LEVEL@12@PBDZZ) 関数で参照"public: bool __thiscall pcl::visualization::PCLVisualizer::addSphere(struct pcl::PointXYZ const &,double,class std::basic_string,class std::allocator > const &,int)" (??$addSphere@UPointXYZ@pcl@@@PCLVisualizer@visualization@pcl@@QAE_NABUPointXYZ @2@NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) 1>main.obj: エラー LNK2019: 未解決の外部シンボル "public: __thiscall vtkSmartPointerBase::~vtkSmartPointerBase(void)" (??1vtkSmartPointerBase@@QAE@XZ) 関数で参照されている "public: __thiscall vtkSmartPointer::~vtkSmartPointer(void)" (??1?$vtkSmartPointer@VvtkLODActor@@@@QAE @XZ) 1>main.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall vtkSmartPointerBase::vtkSmartPointerBase(void)" (??0vtkSmartPointerBase@@QAE@XZ) 関数で参照されている "public: __thiscall vtkSmartPointer::vtkSmartPointer(void) )"(??0?$vtkSmartPointer@VvtkLODActor@@@@QAE@XZ) 1>main.obj: エラー LNK2019: 未解決の外部シンボル "public: __thiscall vtkSmartPointerBase::vtkSmartPointerBase(class vtkSmartPointerBase const &)" (??0vtkSmartPointerBase@@ QAE@ABV0@@Z) 関数 "public: __thiscall vtkSmartPointer::vtkSmartPointer(class vtkSmartPointer const &)" で参照 (??0?$vtkSmartPointer@VvtkProp@@@@QAE@ABV0@@Z) 1>main.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall vtkSmartPointerBase::vtkSmartPointerBase(class vtkObjectBase *)" (??0vtkSmartPointerBase@@QAE@PAVvtkObjectBase@@@Z) 関数で参照されている "public: __thiscall vtkSmartPointer::vtkSmartPointer(class vtkSmartPointer const &)" (??$?0VvtkLODActor@@@?$vtkSmartPointer@VvtkProp@@@@QAE@ABV?$vtkSmartPointer@VvtkLODActor@@@@@Z) 1>main.obj : エラー LNK2019: 未解決の外部シンボル "public: class vtkSmartPointerBase & __thiscall vtkSmartPointerBase::operator=(class vtkObjectBase *)" (??4vtkSmartPointerBase@@QAEAAV0@PAVvtkObjectBase@@@Z) 関数で参照されている "public: class vtkSmartPointer & __thiscall vtkSmartPointer::operator=(class vtkSmartPointer const &)" (??$?4VvtkLODActor@@@?$vtkSmartPointer@VvtkProp@@@@QAEAAV0@ABV?$vtkSmartPointer@VvtkLODActor@@@@@Z)(??$?4VvtkLODActor@@@?$vtkSmartPointer@VvtkProp@@@@QAEAAV0@ABV?$vtkSmartPointer@VvtkLODActor@@@@@Z)(??$?4VvtkLODActor@@@?$vtkSmartPointer@VvtkProp@@@@QAEAAV0@ABV?$vtkSmartPointer@VvtkLODActor@@@@@Z)
point-clouds - 異なる視点を持つ 2 つの点群をマージする方法
私の 3D スキャナーは、オブジェクトをさまざまな角度からスキャンして、最終的に 360° の表面再構成を取得します。各スキャンの点群には異なる量の点があり、マージする必要があります。再構成に使用したいPCLライブラリには、反復最近点法を使用して、同じ量の点で点群をマージするためのアルゴリズムがあります。
回転軸が分からないようにしたいです。もちろん、その位置と回転角度がわかっていれば、1 つの雲のすべてのポイントに回転行列を掛けてから、雲を結合することができます。回転の中心を知らずにそれらをマージする方法はありますか? (そして、アルゴリズムから位置を取得することさえできますか?)
c++ - Point Cloud Library での独自の形式から float への変換。一致する関数が見つかりません
独自のデータ型から浮動小数点数への点群ライブラリの変換について、かなり基本的な質問だと思います。私の問題は、テンプレート、データ型、および一般的な C++ の経験不足に起因すると思います。
この変換を実行する関数はcopyToFloatArrayで、ドキュメントでは次のように定義されています。
virtual void pcl::DefaultPointRepresentation< FPFHSignature33 >::copyToFloatArray ( const FPFHSignature33 & p, float * out
) const [インライン、仮想]ポイント データを入力ポイントから float 配列にコピーします。
このメソッドは、すべてのサブクラスでオーバーライドする必要があります。
パラメーター:
p 入力ポイント
out float 配列へのポインター。
pcl::PointRepresentation< FPFHSignature33 > を実装します。
私は次のようにそれを実装しようとしました:
コンパイル時にスローされるエラーは次のとおりです。
問題は関数に渡される最初の引数にあるようですが、const FPFHSignature33 & p
オブジェクトを作成できないようです。
これらの疑いが正しいかどうか、誰かが知っていますか?もしそうなら、問題を解決するためにどのような方向に進むべきでしょうか?
助けてくれてありがとう。
opengl - 点群にレンダリングされた3Dシーン
レンダリングされた3Dシーンから(OPENGLを使用して)ポイントクラウドを抽出する方法はありますか?
詳細に:
入力は、レンダリングされた3Dシーンである必要があります。
出力は、たとえば頂点(x、y、z)を持つ3次元配列である必要があります。
ミッションは可能か不可能か?
c++ - LNK2005、MSVC2010の「定義済みエラー」リンカエラー
複数のファイルでポイントクラウドライブラリとOpenCVを使用してテストプロジェクトを実装しようとしています。コンパイルしようとすると、「定義済みエラー」メッセージが表示されます。おそらく私は何らかの理由で実現できない愚かなことをしています-私はここで見つけたいくつかの解決策を試しましたが、私の場合はどれも役に立たなかったようです。
私が持っているもの:
libs.hファイル。libファイルをロードします(プロジェクトのプロパティでは、.libパスを設定し、ヘッダーのように「手動で」libsをロードするだけです)。
デバッグするために、この時点で基本的にすべてを削除したメインファイル:
次に、main.objにいくつかの(PCL関連の)シンボルがfiles.objですでに定義されているというエラーメッセージが表示されます。opencvOperationsとファイルの両方でPCL関連の呼び出しを使用しています。最初の呼び出しは問題なく、2番目の呼び出しは機能しません。
編集: 詳細を追加するには、私のfiles.hヘッダー:
コードを別々のファイルに分割する前は、すべてがうまく機能していました(同じプロジェクト設定で)。
Edit2:
問題の原因を突き止めました。
これを引き起こします。今のところ、PLYに関連するすべてのものを取り除き、すべてが正常に機能します。後で見ていきますが、これはPCLライブラリ固有の問題である可能性があります。この呼び出しによって、PLY関連の関数/変数を使用していない他のファイルでリンカーエラーが発生する理由は、私にはまだ不思議です。
c++ - 点群と任意の平面の交点から曲線を取得するには?
DICOM ファイルから ROI と呼ばれる RT-STRUCT を定義するさまざまな点群があります。DICOM ファイルは断層スキャナーによって形成されます。各 ROI は点群によって形成され、3D オブジェクトを表します。
目標は、ROI のクラウド ポイントをカットして、平面によって形成される 2D 曲線を取得することです。問題は、平面と交差した点だけを使用できないことです。私がおそらく必要としているのは、3D 凹型ハルを平面と交差させ、結果の交差輪郭を取得することです。
これらの操作を既に実装しているライブラリはありますか? 私は PCL ライブラリを見つけました。おそらくそれで問題を解決できるはずですが、PCL でそれを達成する方法がわかりません。さらに、Matlab も使用できます。C++ からランタイムを介して使用します。
誰かがすでにこの問題に遭遇しましたか?
PS 上で述べたように、C++ コードのソリューションを使用する必要があるため、Matlab ランタイムで使用するライブラリまたは matlab ソリューションを使用する必要があります。
このような種類の計算における PPS 精度は非常に重要です。これは、脳腫瘍での作業を目的とした医療ソフトウェアで使用されるため、エラーの結果を想像することができます (: