主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

魚眼キャリブレーションの基礎

カメラのキャリブレーションは,カメラの外部パラメーターと内部パラメーターを計算するプロセスです。カメラのキャリブレーションを行うと,イメージ情報を使用して2次元イメージから3次元情報を復元できます。また,魚眼カメラで撮影したイメージの歪みを補正できます。

魚眼カメラはオドメトリで,同时定位和地图(大满贯)の問題を視覚的に解決するために使用されます。360度の視野(FOV)およびスティッチングアルゴリズムを取得する他のアプリケーションには,監視システム,还装有,バーチャルリアリティ(VR)などがあります。これらのカメラは,複雑な一連のレンズを使用してカメラの視野を拡大して,この視野を有効にして広いパノラマイメージや半球イメージを撮影します。ただし,レンズはイメージ内の投影の線を歪めることで,この極端な広角表示を達成します。

魚眼レンズが生成する極端な歪みのため,ピンホールモデルは魚眼カメラをモデル化できません。

魚眼カメラモデル

计算机视觉工具箱™のキャリブレーションアルゴリズムでは,Scaramuzza[1]により提唱された魚眼カメラモデルを使用します。モデルでは,無指向性カメラモデルが使用されます。処理では撮像システムをコンパクトなシステムとして扱います。3次元ワールド座標点を2次元イメージに関連付けるために,カメラの外部パラメーターと内部パラメーターを取得しなければなりません。ワールド座標点は外部パラメーターを使ってカメラ座標に変換されます。カメラ座標は内部パラメーターを使ってイメージ平面にマッピングされます。

外部パラメーター

外部パラメーターは,回転Rと変換tで構成されています。カメラの座標系の原点はその光学的中心にあり,x軸とy軸でイメージ平面が定義されます。

ワールド座標点からカメラ点への変換は,次のように行われます。

内部パラメーター

魚眼カメラモデルの場合,内部パラメーターには投影関数の多項式のマッピング係数が含まれます。配置係数は,センサー配置およびセンサー平面からカメライメージ平面のピクセル位置への変換に関連しています。

次の方程式は,イメージ点を対応する3次元ベクトルにマッピングします。

  • は,実際のワールド座標点の理想的なイメージ投影です。

  • は,スカラー係数を表します。

  • は,Scaramuzzaモデルで記述される多項式です。ここで,です。

  • は(uv)の関数であり,イメージの中心からの点の距離のみに依存します。

内部パラメーターは,ストレッチおよび歪みも考慮します。ストレッチ行列は,センサーからレンズへの不整列を補正します。また歪みベクトルは,イメージ平面の(0,0)位置を調整します。

次の方程式は,実際の歪んだ座標(u”v”)を理想的な歪んだ座標(uv)に関連付けます。

MATLABでの魚眼カメラキャリブレーション

魚眼イメージからレンズ歪みを除去するために,チェッカーボードキャリブレーションパターンを検出してから,カメラのキャリブレーションを行うことができます。関数detectCheckerboardPointsおよびgenerateCheckerboardPointsを使用して,チェッカーボード点を検出できます。関数estimateFisheyeParametersは,検出された点を使用して,魚眼カメラの内部パラメーターと外部パラメーターを含むfisheyeParametersオブジェクトを返します。fisheyeCalibrationErrorsを使用して,キャリブレーションの精度を確認できます。

魚眼イメージのレンズ歪みの修正

チェッカーボードキャリブレーションパターンを検出してから,カメラのキャリブレーションを行うことで,魚眼イメージからレンズ歪みを除去します。次に結果を表示します。

通过连のボードのキャリブレーションを收集します。

图像= imageDatastore (fullfile (toolboxdir (“愿景”),“visiondata”...“校准”“还装有”));

イメージからキャリブレーションパターンを検出します。

[imagePoints, boardSize] = detectCheckerboardPoints (images.Files);

チェッカーボードの正方形のコーナーのワールド座標を生成します。

squareSize = 29;%毫米worldPoints = generateCheckerboardPoints (boardSize squareSize);

イメージ点およびワールド座標点に基づいて魚眼カメラのキャリブレーションパラメーターを推定します。最初のイメージを使用してイメージのサイズを取得します。

I = readimage(图片1);imageSize = [size(I,1) size(I,2)];params = estimateFisheyeParameters (imagePoints worldPoints图象尺寸);

最初のイメージからレンズ歪みを除去して,結果を表示します。

J1 = undastortfisheyeImage(i,params.intrinsics);图imshowpair(i,J1,“蒙太奇”)标题(“原始图像(左)vs.校正图像(右)”

J2 = undistortFisheyeImage(参数。intrinsic。“OutputView”“全部”);图imshow (J2)标题(“全输出视图”

参照

Scaramuzza, D., A. Martinelli和R. Siegwart。"方便校准全方位摄像机的工具箱"IEEE智能机器人与系统国际会议论文集。2006年10月7日至15日,中国北京。

参考

関数

オブジェクト

関連するトピック