点群処理のICPとGICPの違いについてまとめました。
ICPとGICPの違いは?
2つの点群を重ね合わせる(マッチング)ためのアルゴリズムにICPとGICPがあります。
正式名称は...
- Iterative Closest Point
- Generalized-ICP
名前の似ているこの2つのアルゴリズムの違いを簡単にまとめます。
参考論文
ICP
Szymon.R and Marc.L, “Efficient Variants of the ICP Algorithm”, Proceedings Third International Conference on 3-D Digital Imaging and Modeling, pp. 145–-152, 2001.
GICP
A. Segal, D. Haehnel, and S. Thrun, “Generalized-icp”, in Robotics: Science and Systems (RSS), Vol.25, pp.26–-27, 2009.
ズバリ:GICPはICPの拡張バージョン
GICPはICPの拡張アルゴリズムです。
ICPが点の位置情報(x, y, z)だけを使って点群の重ね合わせを行うのに対し、GICPは位置情報(x, y, z)と法線情報(nx, ny, nz)を使います。法線の方向も考慮して点群をマッチングさせることで、誤マッチングを防ぎやすくなります。
GICP論文のAbstract
上記のGICPの論文のAbstractを引用します。
引用
In this paper we combine the Iterative Closest Point (’ICP’) and ‘point-to-plane ICP‘ algorithms into a single probabilistic framework. We then use this framework to model locally planar surface structure from both scans instead of just the ”model” scan as is typically done with the point-to-plane method. This can be thought of as ‘plane-to-plane’. The new approach is tested with both simulated and real-world data and is shown to outperform both standard ICP and point-to-plane. Furthermore, the new approach is shown to be more robust to incorrect correspondences, and thus makes it easier to tune the maximum match distance parameter present in most variants of ICP. In addition to the demonstrated performance improvement, the proposed model allows for more expressive probabilistic models to be incorporated into the ICP framework. While maintaining the speed and simplicity of ICP, the Generalized-ICP could also allow for the addition of outlier terms, measurement noise, and other probabilistic techniques to increase robustness.
日本語訳
この論文では、反復的最近接点('ICP')アルゴリズムと'点-対-面ICP'アルゴリズムを一つの確率論的フレームワークに結合する。次に、このフレームワークを使用して、一般的に点-対-面で行われるような「モデル」スキャンだけではなく、両方のスキャンから局所的に平面的な表面構造をモデル化する。これは「面-対-面」と考えることができる。この新しいアプローチは、シミュレーションと実世界のデータの両方でテストされ、標準的なICPと点-対-面の両方を凌駕することが示されている。さらに、この新しいアプローチは、不正確な対応付けに対してよりロバストであることが示され、その結果、ICPのほとんどの確率変数に存在する最大マッチング距離パラメータの調整が容易になる。実証された性能向上に加えて、提案されたモデルは、より表現力のある確率モデルをICPフレームワークに組み込むことを可能にしている。Generalized-ICPは、ICPの速度とシンプルさを維持しつつ、ロバスト性を向上させるために、外れ値項や測定ノイズ、その他の確率論的手法を追加することも可能である。
PCLの実装
プログラミングでよく使われる点群処理ライブラリPCL(Point Cloud Libraly)でのICPとGICPのクラスの宣言方法を以下に書いておきます。
基本的に2つのAPI(使い方)は同じなので実装が簡単です。
ICP
#include <pcl/registration/icp.h> pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp; //宣言
GICP
#include <pcl/registration/gicp.h> pcl::GeneralizedIterativeClosestPoint<pcl::PointNormal, pcl::PointNormal> gicp; //宣言
まとめ
- ICP:点の位置情報(x, y, z)のみを用いてマッチング
- GICP:点の位置情報(x, y, z)と法線情報(nx, xy, nz)を用いてマッチング
さいごに
ICPとGICPの違いを抽象的にまとめてみました。
参考になれば幸いです。
以上です。
コメント