これはかなり遅い答えですが、Googleからこれに来る人々のために:
キャリブレーションの精度を確認する正しい方法は、OpenCV が提供する再投影誤差を使用することです。これが回答やコメントのどこにも言及されていない理由がわかりません。これを手で計算する必要はありません。これは の戻り値ですcalibrateCamera
。Python では、最初の戻り値です (その後にカメラ マトリックスなどが続きます)。
再投影誤差は、固有係数を使用して点が投影される場所と、実際の画像内の場所との間の RMS 誤差です。 通常、RMS エラーは 0.5 ピクセル未満であると想定する必要があります。マシン ビジョン カメラでは、通常、0.1 ピクセル前後を取得できます。再投影誤差は多くのコンピューター ビジョンの論文で使用されていますが、キャリブレーションがどれだけ優れているかを判断するためのはるかに簡単で正確な方法はありません。
ステレオ システムを持っていない限り、何かが 3D 空間内のどこにあるかは、点ではなく光線までしかわかりません。ただし、各平面キャリブレーション画像のポーズを計算できるので、各チェス盤の角がイメージ センサーのどこに位置するかを計算することができます。キャリブレーション プロセスは (多かれ少なかれ)、これらの光線がどこに落ちるかを調べ、すべての異なるキャリブレーション イメージでエラーを最小限に抑えようとします。Zhang の元の論文とその後の評価では、約 10 ~ 15 枚の画像で十分なようです。この時点では、画像を追加してもエラーは大幅に減少しません。
Matlab のような他のソフトウェア パッケージは、焦点距離、投影の中心など、個々の固有の誤差推定値を提供します。OpenCVにその情報を吐き出させることはできませんでしたが、おそらくどこかにあるでしょう。カメラ キャリブレーションは Matlab 2014a でネイティブになりましたが、コンピューター ビジョン ユーザーに非常に人気のあるカメラ キャリブレーション ツールボックスを引き続き利用できます。
http://www.vision.caltech.edu/bouguetj/calib_doc/
目視検査は必要ですが、結果を処理するには十分ではありません。最も簡単に確認できることは、世界の直線が歪みのない画像で直線になることです。さらに、出力画像を見るだけでは、カメラが適切に調整されているかどうかを本当に確認することは不可能です。
The routine provided by Francesco is good, follow that. I use a shelf board as my plane, with the pattern printed on poster paper. Make sure the images are well exposed - avoid specular reflection! I use a standard 8x6 pattern, I've tried denser patterns but I haven't seen such an improvement in accuracy that it makes a difference.
I think this answer should be sufficient for most people wanting to calibrate a camera - realistically unless you're trying to calibrate something exotic like a Fisheye or you're doing it for educational reasons, OpenCV/Matlab is all you need. Zhang's method is considered good enough that virtually everyone in computer vision research uses it, and most of them either use Bouguet's toolbox or OpenCV.