OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
cv::ppf_match_3d::ICP クラス

このクラスは、反復最近接点(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>

Collaboration diagram for cv::ppf_match_3d::ICP:

公開型

enum  {
  ICP_SAMPLING_TYPE_UNIFORM = 0 ,
  ICP_SAMPLING_TYPE_GELFAND = 1
}
 

公開メンバ関数

 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)
 複数の初期ポーズで位置合わせを実行する。
 

詳細説明

このクラスは、反復最近接点(iterative closest point, ICP)アルゴリズムの非常に効率的かつロバストな変種を実装している。課題は、3D モデル(または点群)をノイズを含むターゲットデータの集合に対して位置合わせすることである。これらの変種は、いくつかのテストを経て筆者自身がまとめたものである。課題は、雑然としたシーンの中で部分的でノイズを含む点群を素早くマッチングできるようにすることである。筆者の重点は、精度を保ちつつ性能にあることがわかるだろう。この実装は、Tolga Birdal の以下の MATLAB 実装に基づいている: http://www.mathworks.com/matlabcentral/fileexchange/47152-icp-registration-using-efficient-variants-and-multi-resolution-scheme 主な貢献は以下に由来する:

  1. Picky ICP: http://www5.informatik.uni-erlangen.de/Forschung/Publikationen/2003/Zinsser03-ARI.pdf
  2. ICP Algorithm の効率的な変種: http://docs.happycoders.org/orgadoc/graphics/imaging/fasticp_paper.pdf
  3. ICP Algorithm のための幾何学的に安定なサンプリング: https://graphics.stanford.edu/papers/stabicp/stabicp.pdf
  4. 多重解像度の位置合わせ: http://www.cvl.iis.u-tokyo.ac.jp/~oishi/Papers/Alignment/Jost_MultiResolutionICP_3DIM03.pdf
  5. Kok Lim Low による点対平面(Point-to-Plane)距離の線形化: https://www.comp.nus.edu.sg/~lowkl/publications/lowk_point-to-plane_icp_techrep.pdf

列挙型メンバ詳解

◆ anonymous enum

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]tolerenceICP の各反復における位置合わせ(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]posesrcPC と 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)が想定される。


このクラス詳解は次のファイルから抽出されました: