問題タブ [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 - Kinects深度カメラを使用して暗闇で見る
MS Kinect SDKを使用してkinectセンサーから深度カメラデータを読み取り、深度マップを作成して、暗視での暗視フィードバックのような特徴を理解できるようにしようとしています。私はサンプルで提供されている標準のモノクロの外観をいじくり回してきましたが、オブジェクトの輪郭を見るだけで機能が本当に良いかどうかを判断するのは非常に難しく、オブジェクトの上昇と下降を実際に確認することはできません。ここで行われた3D画像のようなものになってしまうことを見てください。3dKinect深度マップ。
これが可能かどうか疑問に思っていますか?もしそうなら、新しいMS Kinect SDKをどのように使用するのですか?
c++ - OpenGLは3Dポイントから2D投影を取得します
このコードで 3D クラウド ポイントのコレクションを表示しました。
このコードは、3D ポイント クラウドの配列とその色の値を表示します。2D ポイントの配列を取得し、これらのポイントを 2D で表示したい (3D ポイントの上部ビュー)
cuda - CUDA_SDK_ROOT_DIR の検索
CUDA オプションを有効にしてPoint Cloud Libraryトランク ビルドをセットアップしようとしています。
これらの指示に従って、CUDA を正しくインストールしたと思います。
PCL ビルドの cmake オプションでは、いくつかのオプションが認識されません。
手動で設定できるものはありCUDA_SDK_ROOT_DIR
ますか?他の見つからないオプションについても同様です。
c++ - VTKを使用してさまざまな色のポイントをプロットします
Visualization Toolkitを使用して、それぞれ異なる色のプロットポイントを散布したいと思います。ここでのアドバイスを使用して、ポイントを灰色でプロットしましたが、それぞれに色を付ける方法を理解できていません。
キューブの例の関連部分は次のとおりです。
各Vertに色を付けるにはどうすればよいですか?
matlab - Matlab での pdist の正しい使用
私はMatlabのすべての個々のポイント間の距離を計算したいポイントクラウドを持っています(できれば重複なし)。
座標を含むマトリックスは次のようにフォーマットされますpoints [ p x n x d ]
。ここでp = 1
(今のところ)、n は点の数と同じ大きさで、d は次元の数 (この場合は 3) と同じ大きさです。
これは私が持っているデータです:
points(:,:,1) = 1 2 3
points(:,:,2) = 4 5 6
points(:,:,3) = 7 8 9
だから私は3次元で3つの点を持っています. 現在 pdist を使用して、各ポイント間のユークリッド距離を計算しようとしましたが、distances = pdist(points(:,1:3));
両方distances = pdist(X(:,:,1:3));
とも空の行列を返します。
pdist
これらの距離を計算する方法を知っている人はいますか? 0 ではなく 3 距離を返す必要がありますが、私は何か間違ったことをしているに違いありません。
ところで。この質問は、この質問のフォローアップです。最初はコメントで質問しましたが、元の質問のかなりの拡張であるため、新しい質問に値すると思いました。
algorithm - 一連の点への境界面を見つけるためにどのようなアルゴリズムが存在しますか?
点群があり、それらの点をすべて囲むようにそれらの点をラップするサーフェスが必要であり、クラウドの外側のポイントと交差するようにかなりしっかりとラップする必要があるとします。このラップされたサーフェスをどのように生成しますか?つまり、いくつかまたは多くのポイントがボリュームの内側にある可能性があり、サーフェスがそれらと交差する必要がない場合は、それらを囲むだけですが、サーフェスはポイントの「外側」のレイヤーに適している必要があります。
(私はメッシュをフィッティングするための三角測量アルゴリズム(Delaunayなど)を知っています-私は思う-セット内のすべてのポイントですが、外殻以外のすべてを破棄する良い方法がない限り、アルゴリズムは機能しないと思いますここで私が見逃しているアプローチも自由に指摘してください!)
どのアルゴリズム(または「メッシュ」、「フィット」、「ラップ」、「ポイントクラウド」など以外の検索キーワード)を探す必要がありますか?
processing - Kinect を使用した simpleopenni 点群プログラム
処理を使用して点群を取得しようとしています。しかし、それはうまくいかないことがわかりました
visual-studio-2010 - IterativeClosestPointを使用したPCLリジッド変換-エラー:ベクトル消去イテレータが範囲外です
私は現在、2つのポイントセット間の厳密な変換を計算しようとしているので、pointclouds.orgのチュートリアルで提供されているコードを使用しようとしました。
私の場合、データがランダムに生成される部分だけを、分析したいポイントデータをロードするものに変更しました。他のすべてはチュートリアルとまったく同じです...(入力データの読み取りに何か問題があった場合に備えて、ランダムデータを使用してチュートリアルコードを正確にテストしてみました)
Qtを使用しているので、PCLライブラリ、Eigenライブラリ、FLANNライブラリをプロジェクトに統合しました。すべてのヘッダーを検出し、MSVC2008で正常にコンパイルします...
残念ながら、私は常に実行時エラーが発生します
ことわざ:
デバッグアサーションが失敗しました!プログラム:... MSVC2008 _Qt_SDK_Release \ release \ Project.exeファイル:c:\ Program Files \ Microsoft VIsual Studio 10.0 \ CV \ include \ vector行:1200
式:範囲外のベクトル消去イテレータ
[..]...ドキュメントを確認してください...[..]
誰かがそれが何を意味するのか知っていますか?入力雲は両方とも同じサイズであり、値が塗りつぶされています。
助けていただければ幸いです!
更新1:
エラーメッセージには、MSVC 2010(10.0)のファイルパスが表示されます...実際には必要ないため、VisualStudio2010をアンインストールしようとしました。それでも、デバッグモードでコンパイルすると、エラーメッセージが表示されますが、Expression: vector iterators incompatible
代わりに...リリースモードで実行すると、実行時に(同じ行で)クラッシュするだけですが、表示されませんエラーメッセージ。
c++ - 四分木の設計を改善しますか?
LIDAR ファイルから大量のポイント クラウド データを表示および変更するために使用するアプリケーションがあります (それぞれ最大数ギガバイトで、同時に読み込まれることもあります)。アプリでは、ユーザーはロードされたポイントの 2D 画像を (上から) 表示し、プロファイルを選択して別のウィンドウで (横から) 表示することができます。繰り返しますが、これには数百万のポイントが含まれ、それらは OpenGL を使用して表示されます。
データを処理するために、四分木ライブラリもあり、機能しますが、非常に低速です。しばらく使用されていましたが、最近、LIDAR ポイントの形式が変更され、LidarPoint オブジェクトに多数の属性 (クラス メンバー) を追加する必要がありました。これにより、サイズが大きくなり、パフォーマンスがほとんど使用できないレベルにまで影響しました (5 分と考えてください)。単一の 2GB ファイルをロードする場合)。
四分木は現在、指定された容量と定義された境界 (空間クエリ用) を持つ LidarPoint オブジェクトの単純な配列である PointBucket オブジェクトへのポインターで構成されています。バケット容量を超えると、4 つのバケットに分割されます。また、ポイント データが大量のメモリを消費している場合に、ポイント バケットがディスクにダンプされるようにする、一種のキャッシュ システムも用意されています。これらは、必要に応じてメモリにロードされます。最後に、すべての PointBucket には、元のデータの n 番目ごとのポイントを保持し、ズーム レベルに応じてデータを表示するときに使用されるサブバケット/解像度レベルが含まれます。これは、一度に数百万のポイントを表示するのは、そのレベルの詳細は必要ありませんが、非常に遅いためです。
そこからイメージしていただければ幸いです。そうでない場合は、お問い合わせください。詳細を提供するか、さらにコードをアップロードできます。たとえば、現在の(そして遅い)挿入方法は次のとおりです。
私の質問は、このデザインを改善する方法を考えられるかどうかです。メモリに収まらない大量のデータを処理するときの一般的な戦略は何ですか? 四分木をより効率的にするにはどうすればよいですか? ポイントのレンダリングを高速化する方法はありますか?
c++ - 未使用のクラスデータメンバーをディスクに保存する
点群データとその背後にある四分木データ構造を操作してデータを処理するGUIアプリケーションがあります。使用しているポイント形式が最近変更されたため、新しい属性を保持するようにポイントクラスを変更する必要がありました。これにより、Pointオブジェクトのサイズが大幅に大きくなり、事実上、クワッドツリーのパフォーマンスが低下します。この属性の一部は、データの表示と処理には必要ありませんが、出力に保持する必要があります。これは、私のポイントクラスが現在どのように見えるかを大まかに示しています。
データがファイルからロードされると、ポイントはPoint *配列に格納され、クアッドツリーによって処理されます。同様に、それらが保存されると、ポイントの配列がクアッドツリーから渡され、ファイルに保存されます。クワッドツリーで使用しているPointオブジェクトは、ファイルに保存されているものとは異なりますが、ポイントの作成に使用するリーダーオブジェクトとライターオブジェクトを提供するライブラリを使用していることに注意してください。次に例を示します。
ここで、私の考えは、Pointクラスのサイズを縮小し、未使用の属性をハードドライブ上のPointDataと呼ばれる別のクラス(または構造体)に格納することです。これが必要なのは、通常、データがメモリに収まらず、キャッシュシステムが配置されているためです。これも、より小さなポイントオブジェクトの恩恵を受けます。したがって、例を考えると、次のようになります。
次に、変更したポイントを保存するときに、dataHandle(ファイルオフセット?メモリマップト配列のインデックス?)を使用して、各ポイントのpointDataを取得し、ファイルに書き戻しました。
それは良い考えのように聞こえますか?これを達成するための最も賢明なアプローチは何でしょうか?