概要
カメラで撮った画像は丸みを帯びていたりと歪みが生じている可能性があるので、この歪みを修正するために「カメラキャリブレーション」という処理を行う
これは、内部・外部パラメーター、レンズの歪収差係数を求め、画像を補正する処理。
簡単に言うと、どれくらい歪んでいるかを求めて、正しい画像に修正する処理
この処理を行うためにopencvのカメラキャリブレーションのライブラリを使用する
カメラのパラメータ
カメラの内部パラメータ・外部パラメータ・歪み係数を調べるために、3次元のワールドポイントとそれに対応する2次元のイメージポイントが必要
写真を撮るときに、カメラは現実世界の3次元の世界を2次元のデータに変換します。その時に歪みなどが生じます。ですので、3次元のデータ(外部パラメータ)や2次元のデータ(内部パラメータ)をもとに歪みを修正します。
内部パラメータは、カメラの焦点距離や写真の歪みの値など
外部パラメータは、位置や向いている方向など
これらを求めるために3次元ワールドポイントと2次元のイメージポイントを比較や計算し、求めていく
歪みの種類
歪みには放射状歪みと接線歪みの二つの種類がある。
やり方
やり方
- チェスボードを修正したいカメラで約20枚ほど撮る。取り方は左右上下いろんな角度からとったほうが良い。
- 撮った画像を使用してチェスボードのコーナーを見つけて、表示する。この時にチェスボードの格子点を数え、cv2.findChessboardConersとcv2.drawChessboardCornersの第二引数に入れる
- チェスボードの格子点を使用しているコードを修正してカメラキャリグレーションを行う
修正前と修正後の比較
修正前
修正後