Main Content

単眼カメラのキャリブレーション

"単眼カメラ" は、自動運転アプリケーションで使用されるビジョン センサーの一般的なタイプです。自車に取り付けると、このカメラはオブジェクトを検出し、車線境界線を検出して、シーン内でオブジェクトを追跡することができます。

このカメラは、使用前にキャリブレーションする必要があります。"カメラのキャリブレーション" は、チェッカーボードなどのキャリブレーション パターンのイメージを使用して、カメラの内部および外部のパラメーターを推定する処理です。内部および外部のパラメーターを推定した後に、それらを使用して単眼カメラのモデルを構成できます。

内部パラメーターの推定

カメラの "内部パラメーター" は、カメラのプロパティ (焦点距離や光学中心など) です。単眼カメラについてこれらのパラメーターを推定するには、Computer Vision Toolbox™ の関数と、チェッカーボード パターンのイメージを使用します。

また、結果をより明確に可視化するには、カメラ キャリブレーター アプリを使用します。カメラの設定、チェッカーボード パターンの準備、およびキャリブレーション手法の詳細については、単一カメラ キャリブレーター アプリの使用を参照してください。

外部パラメーター推定用のチェッカーボードの配置

車両に取り付けられる単眼カメラに関して、"外部パラメーター" はそのカメラの取り付け位置を定義します。これらのパラメーターには、車両座標系を基準としたカメラの回転角度、およびカメラの地面からの高さが含まれます。

外部パラメーターを推定する前に、チェッカーボード パターンのイメージをカメラから取得する必要があります。内部パラメーターの推定に使用したものと同じチェッカーボード パターンを使用します。

チェッカーボードはパターン中心の座標系 (XP, YP) を使用します。ここで XP 軸は右を指し、YP 軸は下を指します。チェッカーボードの原点は、チェッカーボードの左上にある正方形の右下隅です。

Checkerboard with axes and origin labeled

車両に対してチェッカーボード パターンを配置する際、XP 軸および YP 軸を、車両の XV 軸および YV 軸と揃える必要があります。車両座標系で、XV 軸は車両の前方向を指し、YV 軸は正面を向いた状態の左方向を指します。原点は、カメラの中心 (カメラの焦点) の真下の路面上にあります。

Top-down view of vehicle with axes and origin labeled

パターンの向きは、水平方向または垂直方向にすることができます。

水平方向

水平方向では、チェッカーボード パターンは地面上または地面と平行に配置されます。パターンは、車両の前後左右いずれかに配置できます。

Vehicle with horizontal checkerboard pattern placements from front, back, left, and right sides

垂直方向

垂直方向では、チェッカーボード パターンは地面に対して垂直に配置されます。パターンは、車両の前後左右いずれかに配置できます。

Vehicle with vertical checkerboard pattern placements from front, back, left, and right sides

外部パラメーターの推定

必要な場所にチェッカーボードを配置した後に、単眼カメラを使用して、そのイメージを取得します。その後、関数 estimateMonoCameraParameters を使用して外部パラメーターを推定します。この関数を使用するには、次を指定する必要があります。

  • カメラの内部パラメーター

  • イメージで検出される主要な点 (この場合はチェッカーボードの正方形のコーナー)

  • チェッカーボードのワールド ポイント

  • チェッカーボード パターンの原点の地面からの高さ

たとえば、イメージ I、内部パラメーター intrinsics の外部パラメーターは次のコードで推定します。既定では、estimateMonoCameraParameters は、カメラが正面を向いていて、チェッカーボード パターンが水平方向と仮定します。

[imagePoints,boardSize] = detectCheckerboardPoints(I);
squareSize = 0.029; % Square size in meters
worldPoints = generateCheckerboardPoints(boardSize,squareSize);
patternOriginHeight = 0; % Pattern is on ground
[pitch,yaw,roll,height] = estimateMonoCameraParameters(intrinsics, ...
                             imagePoints,worldPoints,patternOriginHeight);

これらのパラメーターの推定精度を向上させるには、複数のイメージを取得して、イメージ ポイントの値を平均します。

内部パラメーターおよび外部パラメーターを使用したカメラの構成

内部パラメーターおよび外部パラメーターを推定したら、monoCamera オブジェクトを使用してカメラのモデルを構成できます。次のサンプル コードは、パラメーター intrinsicsheightpitchyaw、および roll を使用してカメラを構成する方法を示します。

monoCam = monoCamera(intrinsics,height,'Pitch',pitch,'Yaw',yaw,'Roll',roll);

参考

アプリ

関数

オブジェクト

関連する例

詳細