チェスボード検出アルゴリズムの内部処理
チェスボードの検出目的
例えば、カメラが捉えた画像を現実世界の座標系に正確にマッピングし、3D再構築や奥行き距離を測定したり、物体の追跡といったアプリケーションを作成する際にチェスボードを使用したカメラキャリブレーションを行う必要があります。
これにより、3D空間の構築やオブジェクトのトラッキングを精度高く行うことが可能になります。
カメラキャリブレーションは、カメラの内部パラメータ(焦点距離、光学中心、レンズの歪みなど)や外部パラメータ(カメラの位置や向き)を正確に推定するために行います。
カメラの焦点距離や、センサーの光学中心の位置といった内部パラメータ(またはカメラ行列)は、3D座標への復元や、補正などカメラを使用した画像処理において様々な場面で必要となる重要なパラメータです。
カメラレンズは特に広角レンズの場合、画像の四隅が歪むことがあります。キャリブレーションを行うことでこの歪みを補正し、正確な画像を得ることができます。
カメラキャリブレーションから得られる外部パラメータ(カメラの位置や向き)である回転ベクトルや並進ベクトルは、撮影した被写体をワールド座標系からどのようにカメラ座標系に変換されたかという情報が詰まった重要なパラメータです。
ちなみに2台のカメラを使用してステレオキャリブレーションを行うと、片方のカメラAからもう一方のカメラBへの回転行列を得ることができ、A→Bへの位置関係を知ることができます。
これによってカメラがどの位置から撮影しているかを正確に把握することができます。これはロボティクスやAR(拡張現実)でクリティカルな要素となります。
チェスボードである理由
チェスボードは、正確な直線と明確な角を持つ規則的なパターンであるため、画像処理アルゴリズムがその特徴点を簡単に検出しやすく、キャリブレーションのための基準点として利用するのに適しています。
その一方で、サークルグリッドという円形のマーカーを認識することでキャリブレーションを行うことができるキャリブレーションボードも存在します。
というかむしろサークルグリッドの方が 検出精度が高いという記事の方が散見されます。
完全な予想ですが、サークルグリッドの場合、認識するピクセルは円の重心だと思うので、どのような角度から撮影されても計算しやすいとか、そのような理由のような気がします。
詳細な精度検証については以下の記事をご覧ください。
【キャリブレーション対決】チェスボード vs 円形 #OpenCV - Qiita
意外と知らないカメラキャリブレーション - Global Walkers株式会社
OpenCVの検出アルゴリズム
それでは本題のチェスボードの検出アルゴリズムについてOpenCVの処理アルゴリズムを見ていきましょう。
以下のソースコードはOpenCV公式GitHubより引用しています。
ここから先は
¥ 100
この記事が気に入ったらチップで応援してみませんか?