このクラスは、反復最近接点(iterative closest point, ICP)アルゴリズムの非常に効率的かつロバストな変種を実装している。課題は、3D モデル(または点群)をノイズを含むターゲットデータの集合に対して位置合わせすることである。これらの変種は、いくつかのテストを経て筆者自身がまとめたものである。課題は、雑然としたシーンの中で部分的でノイズを含む点群を素早くマッチングできるようにすることである。筆者の重点は、精度を保ちつつ性能にあることがわかるだろう。この実装は、Tolga Birdal の以下の MATLAB 実装に基づいている: http://www.mathworks.com/matlabcentral/fileexchange/47152-icp-registration-using-efficient-variants-and-multi-resolution-scheme 主な貢献は以下に由来する: 続きを読む...
#include <opencv2/surface_matching/icp.hpp>
|
| | ICP () |
| |
| | ICP (const int iterations, const float tolerence=0.05f, const float rejectionScale=2.5f, const int numLevels=6, const int sampleType=ICP::ICP_SAMPLING_TYPE_UNIFORM, const int numMaxCorr=1) |
| | デフォルト引数を持つ ICP コンストラクタ。
|
| |
| virtual | ~ICP () |
| |
| int | registerModelToScene (const Mat &srcPC, const Mat &dstPC, double &residual, Matx44d &pose) |
| | 位置合わせを実行する。
|
| |
| int | registerModelToScene (const Mat &srcPC, const Mat &dstPC, std::vector< Pose3DPtr > &poses) |
| | 複数の初期ポーズで位置合わせを実行する。
|
| |
◆ anonymous enum
| 列挙値 |
|---|
| ICP_SAMPLING_TYPE_UNIFORM | |
| ICP_SAMPLING_TYPE_GELFAND | |
◆ ICP() [1/2]
| cv::ppf_match_3d::ICP::ICP |
( |
| ) |
|
|
inline |
| Python: |
|---|
| cv.ppf_match_3d.ICP( | | ) -> | <ppf_match_3d_ICP object> |
| cv.ppf_match_3d.ICP( | iterations[, tolerence[, rejectionScale[, numLevels[, sampleType[, numMaxCorr]]]]] | ) -> | <ppf_match_3d_ICP object> |
◆ ~ICP()
| virtual cv::ppf_match_3d::ICP::~ICP |
( |
| ) |
|
|
inlinevirtual |
◆ ICP() [2/2]
| cv::ppf_match_3d::ICP::ICP |
( |
const int | iterations, |
|
|
const float | tolerence = 0.05f, |
|
|
const float | rejectionScale = 2.5f, |
|
|
const int | numLevels = 6, |
|
|
const int | sampleType = ICP::ICP_SAMPLING_TYPE_UNIFORM, |
|
|
const int | numMaxCorr = 1 ) |
|
inline |
| Python: |
|---|
| cv.ppf_match_3d.ICP( | | ) -> | <ppf_match_3d_ICP object> |
| cv.ppf_match_3d.ICP( | iterations[, tolerence[, rejectionScale[, numLevels[, sampleType[, numMaxCorr]]]]] | ) -> | <ppf_match_3d_ICP object> |
デフォルト引数を持つ ICP コンストラクタ。
- 引数
-
| [in] | iterations | |
| [in] | tolerence | ICP の各反復における位置合わせ(registration)の精度を制御する。 |
| [in] | rejectionScale | ロバスト性のためにロバストな外れ値除去が適用される。この値は実際には標準偏差係数に対応する。位置合わせ中、rejectionScale * &sigma の点は無視される。 |
| [in] | numLevels | 処理するピラミッドレベルの数。深いピラミッドは速度を向上させるが精度を低下させる。粗すぎるピラミッドは、不正確な位置合わせに加えて計算上のオーバーヘッドを生じる場合がある。この引数はバランスを最適化するように選ぶべきである。典型的な値は 4 から 10 の範囲である。 |
| [in] | sampleType | 現在この引数は無視され、均一サンプリングのみが適用される。0 のままにしておくこと。 |
| [in] | numMaxCorr | 現在この引数は無視され、PickyICP のみが適用される。1 のままにしておくこと。 |
◆ registerModelToScene() [1/2]
| int cv::ppf_match_3d::ICP::registerModelToScene |
( |
const Mat & | srcPC, |
|
|
const Mat & | dstPC, |
|
|
double & | residual, |
|
|
Matx44d & | pose ) |
| Python: |
|---|
| cv.ppf_match_3d.ICP.registerModelToScene( | srcPC, dstPC | ) -> | retval, residual, pose |
| cv.ppf_match_3d.ICP.registerModelToScene( | srcPC, dstPC, poses | ) -> | retval, poses |
位置合わせを実行する。
- 引数
-
| [in] | srcPC | モデルの入力点群。法線を持つこと(Nx6)が想定される。現在、サポートされているデータ型は CV_32F のみである。 |
| [in] | dstPC | シーンの入力点群。モデルがシーンに対して位置合わせされていると仮定する。シーンは静的なままである。法線を持つこと(Nx6)が想定される。現在、サポートされているデータ型は CV_32F のみである。 |
| [out] | residual | 出力される位置合わせ誤差。 |
| [out] | pose | srcPC と dstPC の間の変換。 |
- 戻り値
- 正常に終了すると、関数は 0 を返す。
モデルがシーンに対して位置合わせされていると仮定する。シーンは静的なままで、モデルが変換される。出力ポーズは、モデルをシーン上へ変換する。点対平面の最小化のため、シーンは法線が利用可能であることが期待される。法線を持つこと(Nx6)が想定される。
◆ registerModelToScene() [2/2]
| int cv::ppf_match_3d::ICP::registerModelToScene |
( |
const Mat & | srcPC, |
|
|
const Mat & | dstPC, |
|
|
std::vector< Pose3DPtr > & | poses ) |
| Python: |
|---|
| cv.ppf_match_3d.ICP.registerModelToScene( | srcPC, dstPC | ) -> | retval, residual, pose |
| cv.ppf_match_3d.ICP.registerModelToScene( | srcPC, dstPC, poses | ) -> | retval, poses |
複数の初期姿勢を用いてレジストレーションを実行する。
- 引数
-
| [in] | srcPC | モデルの入力点群。法線を持つこと(Nx6)が想定される。現在、サポートされているデータ型は CV_32F のみである。 |
| [in] | dstPC | シーンの入力点群。現在、サポートされているデータ型は CV_32F のみである。 |
| [in,out] | poses | 開始時の入力ポーズであり、同時にポーズの出力リストでもある。 |
- 戻り値
- 正常に終了すると、関数は 0 を返す。
モデルがシーンに対して位置合わせされていると仮定する。シーンは静的なままで、モデルが変換される。出力ポーズは、モデルをシーン上へ変換する。点対平面の最小化のため、シーンは法線が利用可能であることが期待される。法線を持つこと(Nx6)が想定される。
このクラス詳解は次のファイルから抽出されました: