ICP (Iterative Closest Point) |
2017-03-25 - 2018-10-06 (update) |
|
|
*ICP とは
2つの点群が整合するように,その位置姿勢の関係を調整する方法の1つです.ICPでは,図1に示すように繰り返し計算に基づて,段階的に位置姿勢を調整します.
[img:nzmy]
{{small:図1 ICPを使った位置姿勢の調整}}
[youtube:hA234Z1XUbE]
ICPは,3次元センサによる物体認識や3次元データの統合などに良く利用されます.ICPについて詳しく学びたい場合,[1]の文献が参考になります.
{{small:[1] Szymon.R and Marc.L, “Efficient Variants of the ICP Algorithm”, Proceedings Third International Conference on 3-D Digital Imaging and Modeling, 2001, pp. 145–152.
[link:http://www.pcl-users.org/file/n4037867/Rusinkiewicz_Effcient_Variants_of_ICP.pdf] }}
*サンプルコード (C++)
ライブラリ:[link:simplesp]
サンプルコード:simplesp/sample/gl/icp
画面上に基準の点群を設定し,それに整合するように位置姿勢を調整します.
*アルゴリズム
ここでは,ICPの処理の手順を説明します.
1.片側の点群Aの各点から,もう片側の点群Bで最近傍の点を探索し対応付ける
2.対応付けた点の差を最小化するように,点群の座標系の位置姿勢を調整する
処理1の時点で2つの点群のずれが大きいと,対応付けは間違いを含みやすくなります.そうなると,処理2の調整結果はずれが残る場合があります.そこで,繰り返し計算による精度向上を考えます.
まず処理2の後,2つの点群のずれは初期の状態より小さくなっていると仮定します.その状態で再度処理1を行えば,初期の状態より正確に対応付けができることが期待できます.そして,対応付けが正確にできれば処理2の位置姿勢も正確に調整できます.つまり,繰り返し計算を行うことで,徐々に精度を向上させることができます.
ICPの処理の流れを,図2に示します.
[img:zgyq]
{{small:図2 ICPの処理の流れ}}
>> ご意見・ご質問など お気軽にご連絡ください.info