このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
カメラのキャリブレーションは,カメラの外部パラメーターと内部パラメーターを計算するプロセスです。カメラのキャリブレーションを行うと,イメージ情報を使用して2次元イメージから3次元情報を復元できます。また,魚眼カメラで撮影したイメージの歪みを補正できます。
魚眼カメラはオドメトリで,同时定位和地图(大满贯)の問題を視覚的に解決するために使用されます。360度の視野(FOV)およびスティッチングアルゴリズムを取得する他のアプリケーションには,監視システム,还装有,バーチャルリアリティ(VR)などがあります。これらのカメラは,複雑な一連のレンズを使用してカメラの視野を拡大して,この視野を有効にして広いパノラマイメージや半球イメージを撮影します。ただし,レンズはイメージ内の投影の線を歪めることで,この極端な広角表示を達成します。
魚眼レンズが生成する極端な歪みのため,ピンホールモデルは魚眼カメラをモデル化できません。
计算机视觉工具箱™のキャリブレーションアルゴリズムでは,Scaramuzza[1]により提唱された魚眼カメラモデルを使用します。モデルでは,無指向性カメラモデルが使用されます。処理では撮像システムをコンパクトなシステムとして扱います。3次元ワールド座標点を2次元イメージに関連付けるために,カメラの外部パラメーターと内部パラメーターを取得しなければなりません。ワールド座標点は外部パラメーターを使ってカメラ座標に変換されます。カメラ座標は内部パラメーターを使ってイメージ平面にマッピングされます。
外部パラメーターは,回転Rと変換tで構成されています。カメラの座標系の原点はその光学的中心にあり,x軸とy軸でイメージ平面が定義されます。
ワールド座標点からカメラ点への変換は,次のように行われます。
魚眼カメラモデルの場合,内部パラメーターには投影関数の多項式のマッピング係数が含まれます。配置係数は,センサー配置およびセンサー平面からカメライメージ平面のピクセル位置への変換に関連しています。
次の方程式は,イメージ点を対応する3次元ベクトルにマッピングします。
は,実際のワールド座標点の理想的なイメージ投影です。
は,スカラー係数を表します。
は,Scaramuzzaモデルで記述される多項式です。ここで,です。
は(u,v)の関数であり,イメージの中心からの点の距離のみに依存します。
内部パラメーターは,ストレッチおよび歪みも考慮します。ストレッチ行列は,センサーからレンズへの不整列を補正します。また歪みベクトルは,イメージ平面の(0,0)位置を調整します。
次の方程式は,実際の歪んだ座標(u”,v”)を理想的な歪んだ座標(u,v)に関連付けます。
魚眼イメージからレンズ歪みを除去するために,チェッカーボードキャリブレーションパターンを検出してから,カメラのキャリブレーションを行うことができます。関数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日,中国北京。