サンプル・ソースは一部処理が前後してますが、比較的素直な構造のようです。
下記手順で処理されてます。
①キャリブレーション目標の設定
135行目からのfor文で、チェッカー模様のコーナーを対応させたい目標座標を設定しています。
②画像取得
153-157行目にて画像を撮影し、OpenCVが扱える形式ヘフォーマット変換しています。
③コーナー検出
167行目からのcvFindChessboardCorners()にてチェッカー模様のコーナーを検出しています。
④キャリブレーション行列の計算
192-195行目で検出したコーナー座標を並べ替えて、
202行目からのcvCalibrateCamera2()へでキャリブレーション行列(intrinsic_matrixとdistortion_coeffs)を計算しています。
ここで、③で検出した各コーナー座標を①で設定したキャリブレーション目標座標へ対応させるための補正行列を求めています。
⑤キャリブレーション実行
178行目のcvUndistort2()でintrinsic_matrixとdistortion_coeffsを用いて、入力画像(image_raw)を補正(キャリブレーション)した画像(image_rectify)を得ています。
特にわからないのが,複数の画像からcvFindChessbordCornersで得られたコーナーの座標を
どのようにしてcvCalibrateCamera2に送ればいいのかということです.
167行目のcvFindChessboardCorners()でcorners[]配列へコーナー座標が設定され、
192-195行目で1枚毎にimage_pointsの異なる領域へcorners[].x, yを設定し、
VIEW枚数揃ったら、202行目のcvCalibrateCamera2()へ渡されているようです。
ではでは
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/27 15:51