前回解説した4つのカメラキャリブレーションについて、さらに詳しく適性手法について説明していきたいと思います。
目次[]
前回の内容

CheckerBoardでできること

CheckerBoardは、主流なカメラキャリブレーション手法の一つであり、OpenCVで広くサポートされています。この手法を用いることで、以下のことが可能になります。
カメラの内部パラメータの補正
カメラの内部パラメータに関しては前回詳しく説明したので省略します。気になる方はこちらをご覧ください。
外部パラメータの推定とその条件
外部パラメータの推定にはいくつかの条件が存在します。
以下の表にまとめたように、カメラの設置条件によって推定の難易度や手法が異なります。

このように、ステレオカメラやマルチカメラを用いることで、カメラ間の相対位置関係の推定が容易になります。一方で、単眼カメラの場合、固定された単一視点では推定が難しく、異なる視点から撮影する必要があります(PnP, SfM)。
*Perspective-n-Point:カメラの位置と姿勢(向き)を計算すること
*Structure from Motion:複数の画像から3Dを構築する技術
CheckerBoardを用いたワールド座標系の統一
CheckerBoardパターンを用いることで、カメラの座標系とワールド座標系を統一することができます。これにより、複数のカメラ間で同じ基準の座標系を持つことが可能になります。
OpenCVを利用した外部パラメータ推定
- ステレオキャリブレーション
OpenCVのstereoCalibrate()
関数を使用すると、回転行列(R)と並進ベクトル(T)を推定できます。
これにより、カメラ間の相対位置や向きを求めることができます。 - エピポーラ幾何学
OpenCVのfindEssentialMat()
やrecoverPose()
を用いることで、エピポーラ幾何学に基づいた画像補正が可能になります。

CheckerBoardの注意点
CheckerBoardはパターンが対称的なため、回転角度が45℃を超えると認識精度に問題が生じます。マルチカメラや非対称にすることで回避することは可能ですが、外部パラメータを扱う際は注意が必要です。また、行×列によってもばらつきがあるので注意が必要です。

CircleGridでできること

CircleGridは円形の中心を検出するので、四角形のCheckerBoardと異なり、エッジのノイズに左右されないことから、より高精度とされています。が、有意な差がみられないケースがあるので、自身で検証を行うことが大切です。
CircleGridの外部パラメータ推定とその条件
CircleGridもCheckerBoardと同様に、対称的なため単眼カメラの固定視点では外部パラメータを推定することはできません。PnPのように推定する手法も同様に使用できますが、45°以上の回転角度があると精度が低下していくといった課題もあります。
パターンを非対称とし、外部パラメータを推定可能に改変したものが下のAsymmetry-CircleGridです。
Asymmetry-CircleGridでできること

パターンが非対称なので、位置姿勢の検出が可能。より精密な位置決めが必要なもの(ロボットアームなど)に適している。
実装はこちらを参考に
ChArUcoでできること

ArUcoマーカーをCheckerBoardのように並べ、キャリブレーションボードとして用いる手法。この手法は、CheckerBoardよりも精度が高く、ボードの1部分が隠れていてもArUcoマーカー自体が姿勢を取得することができ、キャリブレーションすることが可能です。
実装はこちら
まとめ

参考文献
iCOM技研の取り組み
iCOM技研では、ロボットビジョンを活用した協働ロボットのシステム開発を行っています。溶接・研磨、パレタイザーなど、人手不足に悩まされる製造業の現場を省人化・自動化により生産性を向上させています。