cv::calibrateCamera
OpenCVにはキャリブレーションボードを写した複数のビューからカメラの内部・外部パラメータを求めるAPIがある。
https://scrapbox.io/files/667a57e1cfb8a8001ca944a6.png
カメラ画像から物体の位置や姿勢を認識するタスクは、古くからコンピュータビジョンの分野で研究されている話題です。 カメラは三次元の情報を二次元の画像に写し込むので、奥行方向の情報は欠けてしまうのですが、左右上下のどの方向に物体があるのかという情報は読み取ることができます。 この情報をうまく活用してやることで、自動運転のための物体認識やAR/MRで使うリアルタイムなCG合成など、様々なアプリケーションが実現できます。
こうした物体の位置検出をするためには、「カメラから見てこの方向にある物体はカメラ画像上のここに映り込む」という対応関係を事前に知っておく必要があります。 calibrateCamera関数は、この対応関係を較正するために利用されます。 理想的なピンホールカメラモデルでない限り、左図のように画像は歪んでいます。
カメラ固有の歪み係数を求めることで、このように歪んだ画像を補正することができます。
https://scrapbox.io/files/667a58aef55b5b001cd85d3f.png
カメラ位置は外部パラメータ
カメラキャリブレーションとは、レンズ焦点距離などの内部パラメータと、カメラの位置・姿勢を表す外部パラメータ、レンズの歪収差係数を求め、画像を補正する処理のことです