![]() |
OpenCV 5.0.0
Open Source Computer Vision
|
本ソフトウェアに実装された手法については、以下の特許が成立している。"Recognition and pose determination of 3D objects in 3D scenes using geometric point pair descriptors and the generalized Hough Transform", Bertram Heinrich Drost, Markus Ulrich, EP Patent 2385483 (Nov. 21, 2012), assignee: MVTec Software GmbH, 81675 Muenchen (Germany)。"Recognition and pose determination of 3D objects in 3D scenes", Bertram Heinrich Drost, Markus Ulrich, US Patent 8830229 (Sept. 9, 2014), assignee: MVTec Software GmbH, 81675 Muenchen (Germany)。さらにいくつかの特許が出願中である。詳細については MVTec Software GmbH (info@.nosp@m.mvte.nosp@m.c.com) に問い合わせること。
これらの特許(およびおそらく他の特許)によって課される制約は、本ライセンスが付与する自由とは独立して存在し、それと矛盾する場合があることに注意すること。本ライセンスはプログラムの著作権に関するものであり、それが実装する手法の特許に関するものではない。本プログラムを合法的に使用および再配布するには、著作権法と特許法の両方に従わなければならない。また、特許やその他の財産権の主張を侵害するよう誘導することや、そのような主張の有効性を争わせることは、本ライセンスの目的ではない。プログラムを再配布または使用する場合、本ライセンスは著作権侵害を犯すことから利用者を保護するにすぎない。特許侵害を犯すことからは保護しない。したがって、本プログラムで何かを行う前に、著作権の観点だけでなく特許法の観点からもそれを行う許可を得ていることを確認すること。
本ライセンスは保証として理解されるべきものでもないことに注意すること。本ライセンスに従ってプログラムを使用したが特許法に矛盾する場合、ライセンサーが、利用者が特許侵害で訴えられた際に被った損失を補償するという意味ではない。
3D構造を感知する能力を持つカメラや類似のデバイスが一般的になりつつある。したがって、3Dオブジェクト(またはその一部)のマッチングに深度情報や輝度情報を用いることは、コンピュータビジョンにとって極めて重要である。応用範囲は産業用制御から、視覚障害者の日常動作の支援にまで及ぶ。レンジ画像における認識と姿勢推定のタスクは、取得したデータベースとのマッチングによって、クエリされた3Dの自由形状オブジェクトを識別し位置を特定することを目的とする。
産業の観点から見ると、ロボットがビンの中にランダムに配置・配向された物体を自動的に位置特定して取り上げられるようにすることは、退屈で重労働な手作業を置き換える、工場自動化における重要な課題である。システムは、あらかじめ定義された形状を持つ物体を認識・位置特定し、把持ロボットがそれを取り上げるのに必要な精度で位置を推定できなければならない。ここでビジョンガイドロボティクスが登場する。同様のツールは、非構造的環境を通じてロボット(さらには人間)を誘導することもでき、自動ナビゲーションにつながる。これらの特性により、点群からの3Dマッチングはどこにでも存在する必要性となっている。この文脈において、ここでは3D特徴を用いた3D物体認識および姿勢推定アルゴリズムのOpenCV実装について述べる。
3Dマッチングというタスクを達成するためのアルゴリズムの基礎は、主に [76] に大きく依拠している。これはこの分野で提示された最初かつ主要な実用的手法の1つである。このアプローチは、深度画像や一般的な点群から3D特徴点をランダムに抽出し、それらをインデックス化し、実行時に効率的にクエリすることで構成される。考慮されるのは3D構造のみであり、特徴クエリには単純なハッシュテーブルが用いられる。
スマートな点サンプリングを実現するために優れたCADモデル構造を利用できることは十分承知しているが、手法の汎用性を尊重するため、ここではそれを脇に置いておく(このようなアルゴリズムでは通常、CADモデルでの学習は不要であり、点群があれば十分である)。以下はアルゴリズム全体の概要である。
説明したように、このアルゴリズムは点ペア特徴の抽出とインデックス化に依拠しており、それらは次のように定義される。
\[\bf{{F}}(\bf{{m1}}, \bf{{m2}}) = (||\bf{{d}}||_2, <(\bf{{n1}},\bf{{d}}), <(\bf{{n2}},\bf{{d}}), <(\bf{{n1}},\bf{{n2}}))\]
ここで \(\bf{{m1}}\) と \(\bf{{m2}}\) はモデル(またはシーン)上で選択された2つの特徴点、\(\bf{{d}}\) は差分ベクトル、\(\bf{{n1}}\) と \(\bf{{n2}}\) は \(\bf{{m1}}\) と \(\bf{m2}\) における法線である。学習段階では、このベクトルが量子化されインデックス化される。テスト段階では、同じ特徴がシーンから抽出され、データベースと比較される。回転成分の分離などのいくつかの工夫により、姿勢推定の部分も効率化できる(詳細は参考文献を参照)。物体の姿勢を推定するため、Houghに似た投票とクラスタリングが用いられる。姿勢をクラスタリングするため、生の姿勢仮説は得票数の降順にソートされる。最高得票から新しいクラスタが生成される。次の姿勢仮説が既存のクラスタの1つに近ければ、その仮説はクラスタに追加され、クラスタ中心はクラスタ内の姿勢仮説の平均として更新される。次の仮説がどのクラスタにも近くなければ、新しいクラスタが生成される。近接判定は並進と回転における固定しきい値で行われる。並進の距離計算と平均化は3次元ユークリッド空間で実行され、回転についてはクォータニオン表現を用いて実行される。クラスタリング後、クラスタは総得票数の降順にソートされ、これが推定姿勢の信頼度を決定する。
この姿勢は最終的な姿勢を得るために \(ICP\) を用いてさらに精緻化される。
上で示したPPFは、3Dベクトル間の角度の頑健な計算に大きく依存する。論文では報告されていないが、これを行う素朴な方法( \(\theta = cos^{-1}({\bf{a}}\cdot{\bf{b}})\) )は数値的に不安定なままである。より良い方法は、次のように逆正接を用いることである。
\[<(\bf{n1},\bf{n2})=tan^{-1}(||{\bf{n1} \wedge \bf{n2}}||_2, \bf{n1} \cdot \bf{n2})\]
以下の記法をまとめておく。
点ペア特徴における変換は、まず最初の点から変換 \(T_{m\rightarrow g}\) を求め、同じ変換を2番目の点に適用することで計算される。各点を法線とともに地平面へ変換すると、新しい点ペアとの比較の際に求めるべき角度が1つ残る。
ここで単純に次のように書き始めることができる。
\[(p^i_m)^{'} = T_{m\rightarrow g} p^i_m\]
ここで
\[T_{m\rightarrow g} = -t_{m\rightarrow g}R_{m\rightarrow g}\]
これは積み重ねた変換にほかならないことに注意すること。並進成分 \(t_{m\rightarrow g}\) は次のようになる。
\[t_{m\rightarrow g} = -R_{m\rightarrow g}p^i_m\]
そして回転成分は次のとおりである。
\[\theta_{m\rightarrow g} = \cos^{-1}(n^i_m \cdot {\bf{x}})\\ {\bf{R_{m\rightarrow g}}} = n^i_m \wedge {\bf{x}}\]
これは軸角形式である。太字はベクトル形式を指すことに注意すること。この変換の後、モデルの特徴ベクトルは地平面X上に登録され、\(x=0\) に対する角度を \(\alpha_m\) と呼ぶ。同様に、シーンについてはそれを \(\alpha_s\) と呼ぶ。
概要で示したように、PPF(点ペア特徴)は学習段階でモデルから抽出され、量子化され、ハッシュテーブルに格納されてインデックス化される。しかし実行時には、入力シーンに対して同様の操作が実行されるが、今回は挿入の代わりにハッシュテーブル上での類似度の検索が行われる点が異なる。この検索により、シーンのペアについて地平面への変換も計算できる。この時点以降、姿勢の回転成分の計算は差 \(\alpha=\alpha_m-\alpha_s\) の計算に帰着する。この成分は物体の姿勢に関する手がかりを担う。Houghに似た投票方式が、局所モデル座標ベクトルと \(\alpha\) に対して実行される。各シーン点について得られた最高得票の姿勢により、物体の姿勢を復元できる。
マッチングプロセスは姿勢の獲得をもって終了する。しかし、複数のマッチング点、誤った仮説、姿勢の平均化などにより、こうした姿勢はノイズの影響を非常に受けやすく、完璧とは程遠いことが多い。その段階で得られる視覚的結果は満足できるものではあるが、定量的評価では \(~10\) 度の変動(誤差)が見られ、これはマッチングとしては許容範囲のレベルである。多くの場合、要求はこの限界をはるかに超えて設定されることがあり、計算された姿勢を精緻化することが望まれる。
さらに、典型的なRGBDシーンや点群では、シーン内での可視性のため、3D構造はモデルの半分未満しか捉えられない。したがって、隠蔽され部分的にしか見えない形状を迅速かつ正確に登録できる頑健な姿勢精緻化アルゴリズムは、非現実的な願いではない。
この時点で、自明な選択肢はよく知られた反復最近点(iterative closest point)アルゴリズムを使うことであろう。しかし、基本的な ICP を利用すると、収束が遅く、登録が不良で、外れ値に敏感であり、部分形状の登録に失敗する。したがって、これは明らかにこの問題には適していない。このため、多くの変種が提案されている。異なる変種は姿勢推定プロセスの異なる段階に貢献する。
ICP は \(6\) つの段階から構成されており、各段階について私が提案する改善を以下にまとめる。
収束速度と計算時間を改善するため、モデルが実際に持つよりも少ない点を用いるのが一般的である。しかし、登録する正しい点をサンプリングすること自体が課題である。素朴な方法は一様にサンプリングし、妥当な部分集合が得られることを期待するものである。よりスマートな方法は、登録プロセスに大きく寄与することがわかっている重要な点を特定しようとする。Gelfandらは、並進と回転の両方に影響する点の集合が用いられるように固有空間を制約するため、共分散行列を活用している。これは賢い部分サンプリングの方法であり、本実装でもオプションで使用する。
名前が示すとおり、このステップは実際には最近点方式でデータとモデルの点を割り当てるものである。正しい割り当ては正しい姿勢につながり、誤った割り当ては結果を大きく劣化させる。一般に、速度を上げるために最近傍探索にはKD木が用いられる。しかしこれは最適性を保証するものではなく、誤った点がマッチされる原因となることが多い。幸い、割り当ては反復を通じて修正される。
これらの制約のいくつかを克服するために、Picky ICP [332] と BC-ICP(一意な双方向対応を用いる ICP)という二つのよく知られた手法がある。Picky ICP はまず従来どおりの方法で対応点を求め、得られた対応ペアの中で、複数のシーン点 \(p_i\) が同じモデル点 \(m_j\) に割り当てられた場合には、距離が最小となる \(p_i\) を選択する。一方 BC-ICP は、まず複数の対応を許容したうえで、一意な双方向対応を確立することで割り当てを解決する。さらに、対応のない外れ値という新しい概念を定義しており、これにより本質的に外れ値の識別が容易になる。
参考のため、両方の方法を用いる。P-ICPはそれほど大きな性能上の欠点なしに少し高速であるため、対応の精緻化において選ばれる方法となる。
私の実装では現在、重み付け方式を使用していない。しかし一般的なアプローチには、法線の整合性*( \(w_i=n^1_i\cdot n^2_j\) )や、距離がより大きい点ペアに低い重みを割り当てること( \(w=1-\frac{||dist(m_i,s_i)||_2}{dist_{max}}\) )が含まれる。
棄却は、標準偏差の頑健な推定に基づく動的しきい値処理を用いて行われる。言い換えると、各反復で標準偏差のMAD推定値を求める。これを \(mad_i\) と表記する。距離が \(d_i>\tau mad_i\) であるペアを棄却する。ここで \(\tau\) は棄却のしきい値であり、デフォルトでは \(3\) に設定される。重み付けは、前の段階で説明したPicky精緻化の前に適用される。
ここで述べたように、[179] と同様に、点から平面への誤差指標を線形化したものを用いる。これによりレジストレーション処理が高速化されるとともに、収束性も向上する。
多くの非線形最適化器(Levenberg Mardquardtなど)が提案されているが、前のステップでの線形化により、姿勢推定は線形連立方程式を解くことに帰着する。これはまさに、DECOMP_SVDオプションを指定した cv::solve を用いて私が行っていることである。
上記のステップを説明したので、ここでは ICP アルゴリズムの構成をまとめる。
これまで提案してきた変種はいくつかの外れ値や悪い初期化にうまく対処できるが、かなりの数の反復を必要とする。それでも、マルチ解像度方式は、登録を粗いレベルから開始してより低く細かいレベルへ伝播させることを可能にし、反復回数の削減に役立つ。このようなアプローチは、性能を改善すると同時に実行時間も向上させる。
探索は階層的に複数のレベルを通じて行われる。登録はモデルの非常に粗いサンプル集合から始まる。反復的に点が密にされ探索される。各反復の後、以前に推定された姿勢が初期姿勢として用いられ、ICP で精緻化される。
すべての結果において、姿勢はPPFによって初期化され、残りは次のように設定される。\([\theta_x, \theta_y, \theta_z, t_x, t_y, t_z]=[0]\)
このセクションは、サーフェスマッチング(点ペア特徴マッチングと、それに続く ICP による精緻化)の結果に充てられる。
Mianデータセットに対する異なるモデルのマッチを以下に示す。
こちらのyouTube で動画を確認できる。
サーフェスマッチングモジュールは、可能な限りそのパラメータをモデル直径(軸平行バウンディングボックスの直径)に対して相対的に扱う。これにより、パラメータはモデルサイズから独立する。このため、モデルとシーンの両方の点群は、すべての点が \(RelativeSamplingStep*DimensionRange\) の最小距離を持つようにサブサンプリングされた。ここで \(DimensionRange\) は所与の次元に沿った距離である。3つの次元すべてが同様の方法でサンプリングされる。例えば、\(RelativeSamplingStep\) が0.05に設定され、モデルの直径が1m(1000mm)の場合、物体の表面からサンプリングされる点は約50mm間隔となる。別の観点から見ると、サンプリングの \(RelativeSamplingStep\) が0.05に設定されると、最大で \(20x20x20 = 8000\) のモデル点が生成される(モデルが体積をどのように満たすかによる)。結果として、これは最大で8000x8000のペアになる。実際には、モデルは直方体上に一様に分布していないため、はるかに少ない点が予想される。この値を小さくすると、モデル点が増え、したがってより正確な表現となる。ただし、計算量はO(N\^2)であるため、計算すべき点ペア特徴の数が二次的に増加することに注意すること。これは特に32ビットシステムで懸念事項であり、大きなモデルは利用可能なメモリを容易に超過しうる。通常、0.025~0.05の範囲の値がほとんどのアプリケーションに適切と思われ、デフォルト値は0.03である。(このパラメータには [76] で提示されているものとの違いがあることに注意すること。[76] では量子化に一様な直方体が用いられ、サンプリングの基準としてモデル直径が用いられる。私の実装では、直方体は長方形のプリズムであり、各次元が独立に量子化される。私は直径を基準とせず、個々の次元に沿って基準を取る。)
モデルから外れ値を除去し、最初に理想的なモデルを準備しておくのが非常に賢明である。これは、外れ値が相対計算に直接影響し、マッチング精度を劣化させるためである。
実行時段階では、上で述べたように、シーンは再び \(RelativeSamplingStep\) によってサンプリングされる。ただし今回は、シーン点の一部だけが基準として用いられる。この割合はパラメータ \(RelativeSceneSampleStep\) によって制御され、\(SceneSampleStep = (int)(1.0/RelativeSceneSampleStep)\) である。言い換えると、\(RelativeSceneSampleStep = 1.0/5.0\) の場合、サブサンプリングされたシーンはさらに一様にサンプリングされて点数の1/5になる。このパラメータの最大値は1であり、このパラメータを大きくすると安定性も増すが、速度は低下する。ここでも、最初のシーンに依存しない相対サンプリングのため、このパラメータの微調整は大きな問題ではない。これが問題になるのは、モデル形状が体積を一様に占める場合や、モデル形状が量子化体積内の小さな場所に凝縮している場合(例: 八分木表現が空のセルを持ちすぎる場合)に限られる。
\(RelativeDistanceStep\) はハッシュテーブル上での離散化のステップとして機能する。点ペア特徴は量子化され、ハッシュテーブルのバケットにマッピングされる。この離散化には乗算と整数へのキャストが含まれる。理論上、RelativeDistanceStepを調整することで衝突率を制御できる。ハッシュテーブル上での衝突が多いほど推定が不正確になることに注意すること。このパラメータを小さくすると量子化の影響が増すが、非類似の点ペアを同じビンに割り当て始める。一方、大きくすると類似ペアをグループ化する能力が低下する。一般に、サンプリング段階で学習モデル点はRelativeSamplingStepによって制御される距離で一様に選択されるため、RelativeDistanceStepはこの値に等しくなると予想される。ここでも、0.025~0.05の範囲の値が妥当である。ただし今回は、モデルが密な場合、この値を小さくすることは推奨されない。ノイズの多いシーンでは、ノイズ点に対するマッチングの頑健性を改善するためにこの値を大きくできる。
クラス | |
| struct | hashnode_i |
| struct | hashtable_int |
| class | cv::ppf_match_3d::ICP |
| このクラスは、反復最近接点(ICP)アルゴリズムの非常に効率的で頑健な変種を実装する。その目的は、3Dモデル(または点群)をノイズのある対象データの集合に対して位置合わせ(レジストレーション)することである。これらの変種は、いくつかのテストを経て私自身がまとめたものである。目的は、雑然としたシーン内の部分的でノイズのある点群を高速にマッチングできるようにすることである。私が性能を重視しつつ精度を維持していることがわかるだろう。この実装は、Tolga BirdalのMATLAB実装に基づいている: http://www.mathworks.com/matlabcentral/fileexchange/47152-icp-registration-using-efficient-variants-and-multi-resolution-scheme 主な貢献は次に由来する: 続きを読む... | |
| class | cv::ppf_match_3d::Pose3D |
| 姿勢(ポーズ)の保存を可能にするクラス。このデータ構造は、クォータニオン形式と行列形式の両方を保存する。姿勢を扱うためのさまざまなヘルパーメソッドとともにIO機能をサポートする。 続きを読む... | |
| class | cv::ppf_match_3d::PoseCluster3D |
| 複数の姿勢(Pose3Dを参照)が一緒にグループ化される(同じ変換に寄与する)とき、姿勢クラスタが生じる。このクラスは、そのような姿勢のグループのための汎用コンテナである。これらの姿勢の保存・読み込み・IOの実行が可能である。 続きを読む... | |
| class | cv::ppf_match_3d::PPF3DDetector |
| 3Dモデルの読み込みとマッチングを可能にするクラス。典型的な使い方: 続きを読む... | |
| struct | THash |
| ハッシュテーブル内のノードを保持する構造体。 続きを読む... | |
型定義 | |
| typedef uint | cv::ppf_match_3d::KeyType |
| typedef Ptr< Pose3D > | cv::ppf_match_3d::Pose3DPtr |
| typedef Ptr< PoseCluster3D > | cv::ppf_match_3d::PoseCluster3DPtr |
関数 | |
| Mat | cv::ppf_match_3d::addNoisePC (Mat pc, double scale) |
| void | cv::ppf_match_3d::computeBboxStd (Mat pc, Vec2f &xRange, Vec2f &yRange, Vec2f &zRange) |
| int | cv::ppf_match_3d::computeNormalsPC3d (const Mat &PC, Mat &PCNormals, const int NumNeighbors, const bool FlipViewpoint, const Vec3f &viewpoint) |
| 任意の点群の法線を計算する。computeNormalsPC3dは、局所法線を滑らかに計算するために平面フィッティング手法を用いる。法線は、最小の固有値に対応する共分散行列の固有ベクトルを通じて得られる。PCNormalsがNx6行列として与えられた場合、新たな割り当ては行われず、既存のメモリが上書きされる。 | |
| void | cv::ppf_match_3d::destroyFlann (void *flannIndex) |
| void | cv::ppf_match_3d::getRandomPose (Matx44d &Pose) |
| hashtable_int * | cv::ppf_match_3d::hashtable_int_clone (hashtable_int *hashtbl) |
| hashtable_int * | cv::ppf_match_3d::hashtableCreate (size_t size, size_t(*hashfunc)(uint)) |
| void | cv::ppf_match_3d::hashtableDestroy (hashtable_int *hashtbl) |
| void * | cv::ppf_match_3d::hashtableGet (hashtable_int *hashtbl, KeyType key) |
| hashnode_i * | cv::ppf_match_3d::hashtableGetBucketHashed (hashtable_int *hashtbl, KeyType key) |
| int | cv::ppf_match_3d::hashtableInsert (hashtable_int *hashtbl, KeyType key, void *data) |
| int | cv::ppf_match_3d::hashtableInsertHashed (hashtable_int *hashtbl, KeyType key, void *data) |
| void | cv::ppf_match_3d::hashtablePrint (hashtable_int *hashtbl) |
| hashtable_int * | cv::ppf_match_3d::hashtableRead (FILE *f) |
| int | cv::ppf_match_3d::hashtableRemove (hashtable_int *hashtbl, KeyType key) |
| int | cv::ppf_match_3d::hashtableResize (hashtable_int *hashtbl, size_t size) |
| int | cv::ppf_match_3d::hashtableWrite (const hashtable_int *hashtbl, const size_t dataSize, FILE *f) |
| void * | cv::ppf_match_3d::indexPCFlann (Mat pc) |
| Mat | cv::ppf_match_3d::loadPLYSimple (const char *fileName, int withNormals=0) |
| PLYファイルを読み込む。 | |
| static uint | cv::ppf_match_3d::next_power_of_two (uint value) |
| 次に大きい2のべき乗に切り上げる。 | |
| Mat | cv::ppf_match_3d::normalizePCCoeff (Mat pc, float scale, float *Cx, float *Cy, float *Cz, float *MinVal, float *MaxVal) |
| void | cv::ppf_match_3d::queryPCFlann (void *flannIndex, Mat &pc, Mat &indices, Mat &distances) |
| void | cv::ppf_match_3d::queryPCFlann (void *flannIndex, Mat &pc, Mat &indices, Mat &distances, const int numNeighbors) |
| Mat | cv::ppf_match_3d::samplePCByQuantization (Mat pc, Vec2f &xrange, Vec2f &yrange, Vec2f &zrange, float sample_step_relative, int weightByCenter=0) |
| Mat | cv::ppf_match_3d::samplePCUniform (Mat PC, int sampleStep) |
| Mat | cv::ppf_match_3d::samplePCUniformInd (Mat PC, int sampleStep, std::vector< int > &indices) |
| Mat | cv::ppf_match_3d::transformPCPose (Mat pc, const Matx44d &Pose) |
| Mat | cv::ppf_match_3d::transPCCoeff (Mat pc, float scale, float Cx, float Cy, float Cz, float MinVal, float MaxVal) |
| void | cv::ppf_match_3d::writePLY (Mat PC, const char *fileName) |
| 点群をPLYファイルに書き込む。 | |
| void | cv::ppf_match_3d::writePLYVisibleNormals (Mat PC, const char *fileName) |
| デバッグ目的で使用され、法線ベクトルの先端を可視の赤い点として持つ点群をPLYファイルに書き込む。 | |
| typedef uint cv::ppf_match_3d::KeyType |
#include <opencv2/surface_matching/t_hash_int.hpp>
| typedef Ptr<Pose3D> cv::ppf_match_3d::Pose3DPtr |
#include <opencv2/surface_matching/pose_3d.hpp>
#include <opencv2/surface_matching/pose_3d.hpp>
| Mat cv::ppf_match_3d::addNoisePC | ( | Mat | pc, |
| double | scale ) |
| Python: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cv.ppf_match_3d.addNoisePC( | pc, scale | ) -> | retval | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <opencv2/surface_matching/ppf_helpers.hpp>
入力点群に、与えられたスケールの一様ノイズを追加する
| [in] | pc | 入力点群(CV_32Fファミリー)。 |
| [in] | scale | ノイズの入力スケール。スケールが大きいほど、出力のノイズが多くなる |
#include <opencv2/surface_matching/ppf_helpers.hpp>
| int cv::ppf_match_3d::computeNormalsPC3d | ( | const Mat & | PC, |
| Mat & | PCNormals, | ||
| const int | NumNeighbors, | ||
| const bool | FlipViewpoint, | ||
| const Vec3f & | viewpoint ) |
| Python: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cv.ppf_match_3d.computeNormalsPC3d( | PC, NumNeighbors, FlipViewpoint, viewpoint[, PCNormals] | ) -> | retval, PCNormals | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <opencv2/surface_matching/ppf_helpers.hpp>
任意の点群の法線を計算する。computeNormalsPC3d は平面フィッティングアプローチを用いて局所法線を滑らかに計算する。法線は、最小の固有値に対応する共分散行列の固有ベクトルを通じて得られる。PCNormals がNx6行列として提供される場合、新しい割り当ては行われず、既存のメモリが上書きされる。
| [in] | PC | 法線を計算する対象の入力点群。 |
| [out] | PCNormals | 出力点群 |
| [in] | NumNeighbors | 局所領域で考慮する近傍点の数 |
| [in] | FlipViewpoint | 法線を視線方向に反転させるべきか? |
| [in] | viewpoint |
| void cv::ppf_match_3d::destroyFlann | ( | void * | flannIndex | ) |
#include <opencv2/surface_matching/ppf_helpers.hpp>
| void cv::ppf_match_3d::getRandomPose | ( | Matx44d & | Pose | ) |
| Python: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cv.ppf_match_3d.getRandomPose( | Pose | ) -> | None | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| hashtable_int * cv::ppf_match_3d::hashtable_int_clone | ( | hashtable_int * | hashtbl | ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| hashtable_int * cv::ppf_match_3d::hashtableCreate | ( | size_t | size, |
| size_t(* | hashfunc )(uint) ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| void cv::ppf_match_3d::hashtableDestroy | ( | hashtable_int * | hashtbl | ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| void * cv::ppf_match_3d::hashtableGet | ( | hashtable_int * | hashtbl, |
| KeyType | key ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| hashnode_i * cv::ppf_match_3d::hashtableGetBucketHashed | ( | hashtable_int * | hashtbl, |
| KeyType | key ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| int cv::ppf_match_3d::hashtableInsert | ( | hashtable_int * | hashtbl, |
| KeyType | key, | ||
| void * | data ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| int cv::ppf_match_3d::hashtableInsertHashed | ( | hashtable_int * | hashtbl, |
| KeyType | key, | ||
| void * | data ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| void cv::ppf_match_3d::hashtablePrint | ( | hashtable_int * | hashtbl | ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| hashtable_int * cv::ppf_match_3d::hashtableRead | ( | FILE * | f | ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| int cv::ppf_match_3d::hashtableRemove | ( | hashtable_int * | hashtbl, |
| KeyType | key ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| int cv::ppf_match_3d::hashtableResize | ( | hashtable_int * | hashtbl, |
| size_t | size ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| int cv::ppf_match_3d::hashtableWrite | ( | const hashtable_int * | hashtbl, |
| const size_t | dataSize, | ||
| FILE * | f ) |
#include <opencv2/surface_matching/t_hash_int.hpp>
| void * cv::ppf_match_3d::indexPCFlann | ( | Mat | pc | ) |
#include <opencv2/surface_matching/ppf_helpers.hpp>
| Mat cv::ppf_match_3d::loadPLYSimple | ( | const char * | fileName, |
| int | withNormals = 0 ) |
| Python: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cv.ppf_match_3d.loadPLYSimple( | fileName[, withNormals] | ) -> | retval | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <opencv2/surface_matching/ppf_helpers.hpp>
PLYファイルを読み込む。
| [in] | fileName | 読み込むPLYモデル |
| [in] | withNormals | 入力PLYが法線情報を含むかどうか、およびそれを読み込むべきかどうかを示すフラグ |
#include <opencv2/surface_matching/t_hash_int.hpp>
2の次のべき乗に切り上げる。
| Mat cv::ppf_match_3d::normalizePCCoeff | ( | Mat | pc, |
| float | scale, | ||
| float * | Cx, | ||
| float * | Cy, | ||
| float * | Cz, | ||
| float * | MinVal, | ||
| float * | MaxVal ) |
#include <opencv2/surface_matching/ppf_helpers.hpp>
#include <opencv2/surface_matching/ppf_helpers.hpp>
| void cv::ppf_match_3d::queryPCFlann | ( | void * | flannIndex, |
| Mat & | pc, | ||
| Mat & | indices, | ||
| Mat & | distances, | ||
| const int | numNeighbors ) |
#include <opencv2/surface_matching/ppf_helpers.hpp>
| Mat cv::ppf_match_3d::samplePCByQuantization | ( | Mat | pc, |
| Vec2f & | xrange, | ||
| Vec2f & | yrange, | ||
| Vec2f & | zrange, | ||
| float | sample_step_relative, | ||
| int | weightByCenter = 0 ) |
| Python: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cv.ppf_match_3d.samplePCByQuantization( | pc, xrange, yrange, zrange, sample_step_relative[, weightByCenter] | ) -> | retval | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <opencv2/surface_matching/ppf_helpers.hpp>
均一なステップで点群をサンプリングする
| [in] | pc | 入力点群 |
| [in] | xrange | モデルのバウンディングボックスのX成分(最小値と最大値) |
| [in] | yrange | モデルのバウンディングボックスのY成分(最小値と最大値) |
| [in] | zrange | モデルのバウンディングボックスのZ成分(最小値と最大値) |
| [in] | sample_step_relative | 点群は、すべての点が一定の最小距離を持つようにサンプリングされる。この最小距離は、引数sample_step_relativeを用いて相対的に決定される。 |
| [in] | weightByCenter | 量子化されたデータ点の寄与は、原点からの距離によって重み付けできる。この引数は重み付けの使用を有効化/無効化する。 |
#include <opencv2/surface_matching/ppf_helpers.hpp>
#include <opencv2/surface_matching/ppf_helpers.hpp>
| Mat cv::ppf_match_3d::transformPCPose | ( | Mat | pc, |
| const Matx44d & | Pose ) |
| Python: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cv.ppf_match_3d.transformPCPose( | pc, Pose | ) -> | retval | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <opencv2/surface_matching/ppf_helpers.hpp>
与えられた同次4x4姿勢行列(倍精度)で点群を変換する
| [in] | pc | 入力点群(CV_32Fファミリー)。行あたり3要素または6要素の点群が期待される。法線が提供されている場合、それらも変換全体と整合するように回転される |
| [in] | Pose | 4x4の姿勢行列。ただし行優先の形式で線形化されている。 |
| Mat cv::ppf_match_3d::transPCCoeff | ( | Mat | pc, |
| float | scale, | ||
| float | Cx, | ||
| float | Cy, | ||
| float | Cz, | ||
| float | MinVal, | ||
| float | MaxVal ) |
#include <opencv2/surface_matching/ppf_helpers.hpp>
| void cv::ppf_match_3d::writePLY | ( | Mat | PC, |
| const char * | fileName ) |
| Python: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cv.ppf_match_3d.writePLY( | PC, fileName | ) -> | None | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <opencv2/surface_matching/ppf_helpers.hpp>
点群をPLYファイルに書き出す。
| [in] | PC | 入力点群 |
| [in] | fileName | 書き込み先のPLYモデルファイル |
| void cv::ppf_match_3d::writePLYVisibleNormals | ( | Mat | PC, |
| const char * | fileName ) |
| Python: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cv.ppf_match_3d.writePLYVisibleNormals( | PC, fileName | ) -> | None | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#include <opencv2/surface_matching/ppf_helpers.hpp>
デバッグ用途で使用する。法線ベクトルの先端を赤い点として可視化しつつ、点群をPLYファイルに書き出す。
| [in] | PC | 入力点群 |
| [in] | fileName | 書き込み先のPLYモデルファイル |