カメラのキャリブレーションとは何ですか?
1.チェッカーボード画像コレクション
シングル カメラ キャリブレーター アプリは、チェッカーボード、円グリッド、およびカスタム検出器パターンをサポートします。これらのパターンの詳細と、印刷可能なパターンを含む PDF ファイルについては、「キャリブレーション パターン」を参照してください。
さまざまなキャリブレーション ボードを生成できる Web サイトを共有します: https://calib.io/pages/camera-calibration-pattern-generator
(1) この論文では、チェッカーボード パターンを選択し、MATLAB を開き、コマンド ラインを入力します。
open checkerboardPattern.pdf
チェッカーボード パターンは、カメラのキャリブレーションに最も一般的に使用されるキャリブレーション パターンです。このモードのコントロール ポイントは、ボードの内側にあるコーナーです。コーナーは非常に小さいため、通常、遠近感やレンズの歪みの影響を受けません。キャリブレーター アプリはチェッカーボードの一部を検出することもできるため、広角レンズを備えたカメラをキャリブレーションするときに役立ちます。片側に偶数個の正方形、もう一方の側に奇数個の正方形が含まれるボードを使用します。片側に黒い角の正方形が 2 つ、もう一方の面に白い角の正方形が 2 つあります。これにより、アプリケーションはパターンの方向と原点を決定できるようになります。キャリブレータは長辺を X 方向として指定します。正方形の市松模様のパターンは、カメラの外部機能に予期しない結果をもたらす可能性があります。
(2) チェッカーボードを平らな場所に貼ります。表面の欠陥はキャリブレーションの精度に影響を与える可能性があります。この記事は携帯電話の画面表示を使用しております。
(3) チェス盤の正方形の一辺を測ります。校正にはこの測定が必要です。正方形のサイズはプリンターの設定によって異なります。この論文では、正方形の一辺の長さは 7 mm であると測定されます。
(4) dofbot_ws/src/yolox_tiny_waste_sort/take_photos.ipynb を実行して、さまざまなポーズで 20 枚のチェッカーボード写真を撮影します。
2. キャリブレーションを開始します
(1) Matlab を開き、コマンド ラインを入力します。
cameraCalibrator
(2) 撮影した 20 枚のチェッカーボード写真をインポートし、プロンプトに従ってグリッドの辺の長さを入力します: 7mm
(3) 「オプション」で半径方向の歪み係数の数を 3 に選択し、接線方向の歪みをチェックします。
(4) 「Calibrate」をクリックしてキャリブレーションを開始します
(5) キャリブレーション結果をワークスペースにエクスポートします(満足のいくまで調整した後、再度エクスポートできます)
(6) MATLABスクリプトの生成
[カメラ パラメーターのエクスポート] (標準カメラ モデルの場合) または [魚眼パラメーターのエクスポート] (魚眼カメラ モデルの場合) で、[MATLAB スクリプトの生成] を選択してカメラ パラメーターを MATLAB スクリプトに保存し、キャリブレーション セッションのステップを再現できるようにします。 。
注:vision.calibration.PatternDetector クラスを使用して定義されたカスタム パターン カメラ パラメーターの MATLAB スクリプトを生成することはできません。
3. キャリブレーション結果を評価する
キャリブレーションの精度は、再投影誤差を検査するか、カメラの外部要素を検査するか、または歪みのない画像を観察することによって評価できます。最良のキャリブレーション結果を得るには、3 つの評価方法をすべて使用してください。
3.1 カメラの外部パラメータの視覚化
3-D 外部パラメータ マップは、パターンのカメラ中心のビューとパターン中心のカメラ ビューを提供します。カメラ中心のビューは、画像の撮影時にカメラが静止している場合に役立ちます。パターンが静止している場合は、パターン中心のビューが役立ちます。グラフィックをクリックしてドラッグし、回転させることができます。ボード (またはカメラ) をクリックして選択します。ビジュアライゼーション内で強調表示されたデータは、リスト内で選択された画像に対応します。パターンとカメラの相対位置をチェックして、期待したものと一致するかどうかを確認します。たとえば、カメラの背後に現れるパターンは、キャリブレーション エラーを示します。
コマンドライン入力:
figure;
showExtrinsics(cameraParams, 'CameraCentric');
3.2 再投影エラー
再投影誤差は、検出された点と対応する再投影された点の間の距離 (ピクセル単位) です。カメラ キャリブレーター アプリは、パターン定義された世界座標から画像座標に点を投影することにより、再投影誤差を計算します。次に、アプリケーションは再投影された点を対応する検出された点と比較します。一般に、1 ピクセル未満の平均再投影誤差は許容されます。
カメラ キャリブレーター アプリは、再投影誤差をピクセル単位でヒストグラムで表示します。このグラフは、どの画像がキャリブレーションに悪影響を及ぼしているかを判断するのに役立ちます。棒グラフのエントリを選択して画像を選択し、データ ブラウザ ペインの画像リストからその画像を削除できます。
再投影誤差棒グラフ 棒グラフ
は、画像ごとの平均再投影誤差と全体の平均誤差を示します。バーのラベルは画像 ID に対応します。ハイライトされたバーは、選択した画像に対応します。
次のいずれかの方法を使用して画像を選択します。
- グラフ内の対応するバーをクリックします。
- データ ブラウザ ペインの画像のリストから画像を選択します。
- 調整された母集団平均誤差。赤い線を上下にスライドすると、平均誤差が指定した値より大きい画像がすべて自動的に選択されます。
コマンドライン入力:
figure;
showReprojectionErrors(cameraParams);
3.3 歪み補正された画像を表示する
レンズの歪みを解消する効果を確認するには、「キャリブレーション」タブで「歪みを解消して表示」を選択します。キャリブレーションが正確であれば、画像プレビューの歪んだ線は真っ直ぐになります。
注: 再投影誤差が低い場合でも、歪みのない画像を確認することが重要です。たとえば、パターンが画像のごく一部しかカバーしていない場合、たとえキャリブレーションの結果として再投影誤差がほとんどなかったとしても、変形推定は不正確になる可能性があります。この画像は、このタイプの単一マシンのキャリブレーションにおける誤った推定の例を示しています。
3.4 エラー結果の印刷
コマンドライン入力:
displayErrors(estimationErrors, params);
4. 校正精度の向上
キャリブレーション結果を改善するには、誤差の多い画像を削除するか、画像を追加するか、キャリブレータの設定を変更します。
次の場合は、さらに画像を追加することを検討してください。
- 画像が 10 枚未満です。
- キャリブレーション パターンは画像を十分にカバーしていません。
- キャリブレーション パターンは、カメラに対する向きが十分に変化しません。
次のような場合は、画像を削除することを検討してください。
- 平均再投影誤差が高くなります。
- 漠然。
- カメラ平面に対して 45 度を超えるキャリブレーション パターンが含まれています。
参考文献
[1] Zhang、Z.「カメラ キャリブレーションのための柔軟な新しい技術」。 パターン分析とマシン インテリジェンスに関する IEEE トランザクション。22、いいえ。11 (2000 年 11 月): 1330–34。https://doi.org/10.1109/34.888718。
[2] Heikkila、J.、および O. Silven。「暗黙的な画像補正を伴う 4 段階のカメラ キャリブレーション手順」コンピューター ビジョンとパターン認識に関する IEEE コンピューター協会会議の議事録 。1106 ~ 12 年。サンフアン、プエルトリコ: IEEE Comput。Soc、1997 年。https://doi.org/10.1109/CVPR.1997.609468。
[3] スカラムッツァ、ダヴィデ、アゴスティーノ・マルティネッリ、ローランド・ジークヴァルト。「全方位カメラを簡単にキャリブレーションするためのツールボックス」2006 年インテリジェント ロボットおよびシステムに関する IEEE 国際ワークショップ (IROS 2006) の議事録、 5695–701。中国、北京: IEEE、2006. https://doi.org/10.1109/IROS.2006.282372
[4] ブーゲ、JY「Matlab 用カメラ キャリブレーション ツールボックス」。カリフォルニア工科大学のコンピュテーショナル ビジョン。