メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ステレオ カメラ キャリブレーター アプリの使用

R2026a

ステレオ カメラ キャリブレーターの概要

ステレオ カメラ キャリブレーター アプリを使用してステレオ カメラをキャリブレーションし、イメージから深度を復元するために使用できるようにします。ステレオ システムは、カメラ 1 とカメラ 2 の 2 つのカメラで構成されます。アプリは、個々のカメラのパラメーターを推定することもインポートすることもできます。このアプリは、カメラ 1 に対するカメラ 2 の位置と向きも計算します。

ステレオ カメラ キャリブレーター アプリは、最大 95 度の視野 (FOV) をもつカメラ レンズをキャリブレーションできます。また、アプリはステレオ カメラ パラメーターを含むオブジェクトを生成します。このオブジェクトを使用して、次のことができます。

  • 関数 rectifyStereoImages を使用してステレオ イメージを平行化する。

  • 関数 reconstructScene を使用して 3 次元シーンを再構成する。

  • 関数 triangulate を使用して、一致するイメージ ポイントのペアに対応する 3 次元位置を計算する。

ステレオ カメラ キャリブレーター アプリで使用される一連のキャリブレーション関数は、ステレオ カメラ キャリブレーションのワークフローを提供します。これらの関数は、MATLAB® ワークスペースで直接使用できます。キャリブレーション関数のリストについては、カメラのキャリブレーションを参照してください。

Flow chart of process, prepare, add, calibrate, evaluate, adjust parameters, and export.

次のワークフローに従い、アプリを使用してステレオ カメラをキャリブレーションします。

場合によっては、既定値が適切に機能するため、パラメーターをエクスポートする前に改善を行う必要はありません。また、MATLAB ワークスペースでカメラ キャリブレーション関数を直接使用して改善を行うこともできます。関数の一覧については、カメラのキャリブレーションを参照してください。

キャリブレーション パターンの選択

ステレオ カメラ キャリブレーター アプリは、チェッカーボード、サークル グリッド、AprilTag、ChArUco、およびカスタム検出器のパターンをサポートしています。これらの各パターンの詳細については、Calibration Patternsを参照してください。

キャリブレーション イメージのキャプチャ

最良のキャリブレーション結果を得るには、10 ~ 20 個のキャリブレーション パターンのイメージを使用します。キャリブレーターには少なくとも 3 個のイメージが必要です。非圧縮のイメージまたは PNG などの可逆圧縮形式を使用します。キャリブレーターが機能するには、キャリブレーション パターンとカメラの設定が一連の要件を満たしていなければなりません。カメラの設定およびイメージのキャプチャの詳細については、カメラの準備とカメラ キャリブレーション用イメージの撮影を参照してください。

ステレオ カメラ キャリブレーター アプリの使用

アプリを開く

  • MATLAB ツールストリップ: [アプリ] タブの [イメージ処理とコンピューター ビジョン] セクションで、[ステレオ カメラ キャリブレーター] アイコンをクリックします。

  • MATLAB コマンド プロンプト: stereoCameraCalibrator と入力します。

イメージ ペアの追加およびカメラ モデルの選択

キャリブレーションを開始するには、イメージを追加しなければなりません。フォルダーから保存済みのイメージを追加したり、カメラから直接イメージを追加したりできます。キャリブレーターはイメージを解析し、イメージがキャリブレーターの要件を満たしていることを確認します。次に、キャリブレーターはパターン上の点を検出します。カメラの設定およびイメージのキャプチャの詳細については、カメラの準備とカメラ キャリブレーション用イメージの撮影を参照してください。

[キャリブレーション] タブの [ファイル] セクションで、[イメージの追加] をクリックして [ファイルから] を選択します。複数のフォルダーからイメージを追加するには、各フォルダーで [イメージの追加] をクリックします。カメラ 1 に対応するイメージの場所を入力するか [参照] ボタンを使用して選択し、カメラ 2 についても同じようにします。[パターンの選択] リストからキャリブレーション パターンを選択するか、[カスタム パターン] セクションで [パターン検出器のインポート] を選択します。[プロパティ] セクションで、検出器のプロパティを指定し、[OK] を選択してイメージを追加します。

イメージが読み込まれると、[イメージとパターンのプロパティ] ダイアログが表示されます。キャリブレーターがキャリブレーション パターンを解析する前に、パターン構造を検出しイメージ プロパティを設定できるようにキャリブレーション パターンを選択しなければなりません。このダイアログの詳細については、キャリブレーション パターンの選択とプロパティの設定を参照してください。

キャリブレーターは、追加された各ステレオ ペアのパターン検出を試み、検出の進行状況を示す進行状況バーのウィンドウを表示します。いずれかのイメージが除外されると、診断情報を含む [検出結果] ダイアログ ボックスが表示されます。結果は、処理されたイメージの合計数と、処理されたイメージのうち、承認、除外、またはスキップされたイメージの数を示します。キャリブレーターは重複するイメージをスキップします。

Detection results

除外されたイメージを表示するには、[イメージの表示] をクリックします。キャリブレーターは重複するイメージを除外します。また、パターン全体を検出できなかったイメージも除外されます。検出されない理由として考えられるのは、イメージがぼやけているか、パターンの角度が極端に大きいことです。大きなイメージや多数の正方形を含むパターンの場合、検出に時間がかかります。

[データ ブラウザー] ペインには ID 付きのイメージ ペアのリストが表示されます。これらのイメージ ペアには、検出されたパターンが含まれています。イメージを表示するには、[データ ブラウザー] ペインからイメージを選択します。

Stereo Camera Calibrator app showing data browser pane on left with calibration pattern images. The Image pane shows an image pair.

[イメージ] ペインには、選択したイメージ ペアと検出点を示す緑色の円が表示されます。ズーム コントロールを使用して、コーナーが正しく検出されたことを確認できます。黄色の四角は (0,0) の原点を示します。X と Y の矢印は、パターンの軸の方向を示します。

アプリでカメラの内部パラメーターを計算するか、事前計算済みの固定内部パラメーターを読み込むかを選択できます。内部パラメーターをアプリに読み込むには、[キャリブレーション] タブの [内部パラメーター] セクションで、[固定内部パラメーターの使用] を選択します。内部パラメーターを読み込むと、[オプション] セクションの [半径方向歪み] と [計算] オプションは無効になります。

内部パラメーターを変数としてワークスペースから読み込むには、[内部パラメーターの読み込み] を選択します。たとえば、wideBaselineStereo 構造体に両方のカメラの内部パラメーターが含まれている場合は、MATLAB コマンド プロンプトで次のコードを入力します。

ld = load("wideBaselineStereo");
int1 = ld.intrinsics1
int2 = ld.intrinsics2

次に、[内部パラメーターの読み込み] を選択し、[ワークスペースからの内部パラメーターの読み込み] ダイアログ ボックスでこれらの変数を指定します。

Load intrinsics from Workspace dialog box

キャリブレーション

承認されたイメージ ペアが満足のいく状態であれば、[キャリブレーション] タブの [キャリブレーション] ボタンをクリックします。既定のキャリブレーション設定では、カメラ パラメーターの最小セットを想定します。まず、既定の設定でキャリブレーションを実行します。結果を評価した後、設定を調整し、イメージを追加または削除してから、再度キャリブレーションを行うことで、キャリブレーションの精度を改善できます。

レンズ歪みが大きいカメラの場合、アプリがカメラの内部パラメーター初期値の計算に失敗することがあります。カメラのメーカー仕様があり、ピクセル サイズ、焦点距離、レンズ特性などがわかっている場合は、カメラの内部パラメーターと半径方向歪みの初期推定値を手動で設定できます。初期推定を設定するには、[オプション]、[最適化オプション] を選択します。

  • [内部パラメーターの初期値を、[fx 0 0; s fy 0; cx cy 1] の形式をもつ 3 行 3 列の行列として指定] を選択してから、3 行 3 列の行列を入力し、初期内部パラメーターを指定します。初期推定値を指定しない場合、関数は線形最小二乗法を使用して内部パラメーターの初期行列を計算します。

  • [半径方向歪みの初期値を、2 要素または 3 要素のベクトルとして指定] を選択し、2 要素または 3 要素のベクトルを入力して半径方向歪みの初期値を指定します。値を指定しない場合、関数はすべての係数の初期値として 0 を使用します。

キャリブレーション パラメーターの詳細については、カメラ キャリブレーションとはを参照してください。

キャリブレーション結果の評価

再投影誤差を調べたり、カメラの外部パラメーターを調べたり、歪み補正後のイメージを表示したりすることで、キャリブレーションの精度を評価できます。最良のキャリブレーション結果を得るには、3 つの評価方法すべてを使用します。

Camera calibration results, displaying undistorted image, reprojection errors chart, and camera extrinsics diagram

"再投影誤差" は、検出点と再投影点の間のピクセル単位の距離です。ステレオ カメラ キャリブレーター アプリは、パターンで定義されたワールド座標からイメージ座標に点を投影することにより、再投影誤差を計算します。次に、アプリは再投影点と対応する検出点を比較します。原則として、1 ピクセル未満の平均再投影誤差は許容されます。

Reprojection error diagram

ステレオ キャリブレーション アプリは、再投影誤差を棒グラフとしてピクセル単位で表示します。グラフは、どのイメージがキャリブレーションに悪影響を与えるかを特定するのに役立ちます。棒グラフのエントリを選択し、[データ ブラウザー] ペインのイメージ一覧からイメージを削除します。

再投影誤差棒グラフ
棒グラフには、イメージごとの平均再投影誤差と、全体の平均誤差が表示されます。バーのラベルはイメージ ペア ID に対応しています。強調表示されたバーは、選択されたイメージ ペアに対応しています。

Reprojection Errors bar graph

次のいずれかの方法でイメージ ペアを選択します。

  • グラフ内の対応するバーをクリックする。

  • [データ ブラウザー] ペインの一覧からイメージ ペアを選択する。

  • 全体の平均誤差を調整する。赤い線をクリックして上下にスライドし、平均誤差が指定値よりも大きいイメージを含むペアを選択します。

3 次元外部パラメーター プロットは、カメラ中心のパターンのビューとパターン中心のカメラのビューを提供します。カメラ中心のビューは、イメージ キャプチャ時にカメラが静止している場合に役立ちます。パターン中心のビューは、パターンが静止している場合に役立ちます。カーソルをクリックし、回転アイコンでマウス ボタンを押したままにすると、Figure が回転します。表示内のパターン (またはカメラ) をクリックして選択します。可視化で強調表示されているデータは、リストで選択されたイメージ ペアに対応しています。パターンとカメラの相対的な位置を調べて、それらが期待どおりかどうかを判断します。たとえば、カメラの後ろに表示されるパターンは、キャリブレーション エラーを示します。

Camera-centric and pattern-centric extrinsic visualizations

ステレオ平行化の効果を表示するには、[キャリブレーション] タブの [ビュー] セクションで、[平行化の表示] を選択します。キャリブレーションが正確である場合、イメージの歪みが補正され、行が揃います。

Rectified stereo image pair.

メモ

再投影誤差が少ない場合でも、平行化されたイメージを確認することは重要です。たとえば、パターンがイメージに占める割合が少ない場合、キャリブレーションによって再投影誤差がほとんど発生しなくても、歪みの推定が正しくない可能性があります。以下のイメージは、単一カメラのキャリブレーションにおけるこの種の誤った推定の例を示しています。

Original image and incorrectly undistorted image.

キャリブレーションの改善

キャリブレーションを改善するために、誤差の大きいイメージを削除したり、イメージを追加したり、キャリブレーター設定を変更したりできます。

次の場合は、さらにイメージ ペアを追加することを検討します。

  • イメージ ペアが 10 個未満。

  • キャリブレーション パターンが、イメージ フレームを十分にカバーしていない。

  • カメラに対するキャリブレーション パターンの向きの変化が十分でない。

次のようなイメージの場合は、イメージ ペアを削除することを検討します。

  • 平均再投影誤差が大きい。

  • ぼやけている。

  • カメラ面に対して 45 度を超える角度のキャリブレーション パターンが含まれている。

    Calibration pattern at angle greater than 45 degrees to the camera plane.

  • キャリブレーション パターンの点が誤って検出されている。

[オプション] セクションから対応するオプションを選択して、2 つまたは 3 つの半径方向歪み係数を指定できます。"半径方向歪み" は、レンズの光学的中心からエッジに向かうにつれて光線の屈折率が大きくなる現象を指しています。この歪みはレンズが小さいほど大きくなります。

Three grids that each represent a type of distortion. One with pincushion distortion (positive radial displacement), one with no distortion, and one with barrel distortion (negative radial displacement)

半径方向の歪み係数は、このタイプの歪みをモデル化します。歪んだ点は (xdistorted, ydistorted) として次のように表されます。

xdistorted = x(1 + k1*r2 + k2*r4 + k3*r6)

ydistorted= y(1 + k1*r2 + k2*r4 + k3*r6)

  • x、y — 歪み補正後のピクセル位置。x と y は正規化されたイメージ座標内にあります。正規化されたイメージ座標は、光学的中心への変換後にピクセル単位の焦点距離で除算したピクセル座標から求められます。したがって、x と y は次元がありません。

  • k1、k2 および k3 — レンズの半径方向の歪み係数。

  • r2 = x2 + y2

一般に、キャリブレーションを行うには 2 つの係数で十分です。広角レンズなどの歪みが大きい場合には、3 つの係数を選択して k3 を含めることができます。

イメージ軸のせん断を推定するには、[キャリブレーション] タブの [カメラ モデル] セクションで、[オプション]、[計算]、[せん断] を選択します。一部のカメラ センサーには、イメージの x 軸と y 軸が垂直にならない原因となる欠陥が含まれています。せん断パラメーターを使用して、この欠陥をモデル化できます。このオプションを選択しない場合、イメージ軸は垂直になります。これは、ほとんどの最新のカメラに当てはまります。

円周方向の歪みは、レンズとイメージ平面が平行にならない場合に生じます。円周方向の歪み係数は、このタイプの歪みをモデル化します。

Comparison of zero tangential distortion and tangential distortion

歪んだ点は (xdistorted, ydistorted) として次のように表されます。

xdistorted = x + [2 * p1 * x * y + p2 * (r2 + 2 * x2)]

ydistorted = y + [p1 * (r2 + 2 *y2) + 2 * p2 * x * y]

  • x、y — 歪み補正後のピクセル位置。x と y は正規化されたイメージ座標内にあります。正規化されたイメージ座標は、光学的中心への変換後にピクセル単位の焦点距離で除算したピクセル座標から求められます。したがって、x と y は次元がありません。

  • p1 および p2 — レンズの円周方向の歪み係数。

  • r2 = x2 + y2

[計算]、[円周方向歪み] チェック ボックスをオンにすると、キャリブレーターは円周方向歪み係数を推定します。それ以外の場合、キャリブレーターは円周方向歪み係数をゼロに設定します。

カメラ パラメーターのエクスポート

キャリブレーションの精度に問題がなければ、[カメラ パラメーターのエクスポート] を選択します。カメラ パラメーターを MATLAB ワークスペース内のオブジェクトに保存してエクスポートするか、カメラ パラメーターを MATLAB スクリプトとして生成することができます。

[カメラ パラメーターのエクスポート] 、 [パラメーターをワークスペースにエクスポート] を選択して、ワークスペースに stereoParameters オブジェクトを作成します。オブジェクトには、カメラの内部パラメーターと外部パラメーター、およびその歪み係数が格納されます。このオブジェクトは、イメージの歪みの補正、平面オブジェクトの測定、3 次元再構成など、コンピューター ビジョンのさまざまなタスクに使用できます。平面オブジェクトの測定の詳細については、キャリブレートされたカメラによる平面オブジェクトの測定を参照してください。オプションで、[推定誤差のエクスポート] を選択することにより、推定ステレオ カメラ パラメーターの標準誤差を含む stereoCalibrationErrors オブジェクトをエクスポートできます。

[カメラ パラメーターのエクスポート] 、 [MATLAB スクリプトの生成] を選択してカメラ パラメーターを MATLAB スクリプトに保存し、キャリブレーション セッションの手順を再現できるようにします。

メモ

vision.calibration.PatternDetector クラスを使用して定義されたカスタム パターンのカメラ パラメーターについて MATLAB スクリプトを生成することはできません。

参照

[1] Zhang, Z. “A Flexible New Technique for Camera Calibration”. IEEE Transactions on Pattern Analysis and Machine Intelligence. 22, no. 11 (November 2000): 1330–34. https://doi.org/10.1109/34.888718.

[2] Heikkila, J., and O. Silven. “A Four-step Camera Calibration Procedure with Implicit Image Correction.” In Proceedings of IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 1106–12. San Juan, Puerto Rico: IEEE Comput. Soc, 1997. https://doi.org/10.1109/CVPR.1997.609468.

参考

アプリ

関数

オブジェクト

トピック