Main Content

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

undistortFisheyeImage

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

説明

J = undistortFisheyeImage(I,intrinsics) は、イメージ I のレンズ歪みを除去して、イメージ J を結果として返します。

[J,camIntrinsics] = undistortFisheyeImage(I,intrinsics)cameraIntrinsics オブジェクトも返します。これは仮想ピンホール カメラに対応します。

[___] = undistortFisheyeImage(___,interp) は、前述の構文を使用して、内挿法 interp を指定します。

[___] = undistortFisheyeImage(___,Name,Value) は 1 つ以上の Name,Value 引数ペアを指定します。プロパティが未指定の場合は既定値になります。

すべて折りたたむ

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

一連のチェッカーボードのキャリブレーション イメージを収集します。

images = imageDatastore('calibrationImages');

イメージからキャリブレーション パターンを検出します。名前と値の引数 'PartialDetections' は、部分的にチェッカーボードを検出できるように、既定で true に設定されます。

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

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

squareSize = 20; % millimeters
worldPoints = generateCheckerboardPoints(boardSize,squareSize);

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

I = readimage(images,10); 
imageSize = [size(I,1) size(I,2)];
params = estimateFisheyeParameters(imagePoints,worldPoints,imageSize);

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

J1 = undistortFisheyeImage(I,params.Intrinsics);
figure
imshowpair(I,J1,'montage')
title('Original Image (left) vs. Corrected Image (right)')

Figure contains an axes. The axes with title Original Image (left) vs. Corrected Image (right) contains an object of type image.

J2 = undistortFisheyeImage(I,params.Intrinsics,'OutputView','same', 'ScaleFactor', 0.2);
figure
imshow(J2)
title('Output View with low Scale Factor')

Figure contains an axes. The axes with title Output View with low Scale Factor contains an object of type image.

入力引数

すべて折りたたむ

入力イメージ。M x N x 3 のトゥルーカラー、または M 行 N 列の 2 次元グレースケール イメージとして指定します。入力イメージは、実数で非スパースでなければなりません。

データ型: single | double | int16 | uint8 | uint16 | logical

魚眼内部カメラ パラメーター。fisheyeIntrinsics オブジェクトとして指定します。

入力イメージで使用する内挿法。'bilinear''nearest'、または 'cubic' として指定します。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: 'ScaleFactor',2 はカメラ ビューのズームを増大させるようにスケール係数を設定します。

出力イメージのサイズ。'same''full'、または 'valid' として指定します。

仮想カメラの遠近感の焦点距離のスケール係数 (ピクセル単位)。スカラーまたは [sx sy] ベクトルとして指定します。x 軸と y 軸を個別にスケーリングするには、ベクトルを指定します。カメラ ビューの遠近感をズームするには、スケールを増加させます。

出力ピクセルの塗りつぶしの値。'FillValues' とスカラーまたは 3 要素のベクトルで構成されるコンマ区切りのペアとして指定します。入力イメージにおける対応する逆変換後の位置が完全に入力イメージの境界外である場合には、出力ピクセルの塗りつぶしの値を使用します。2 次元グレースケール入力イメージを使用する場合、FillValues はスカラーでなければなりません。トゥルーカラー イメージを使用する場合、FillValues はスカラーまたは RGB 値の 3 要素ベクトルに指定できます。

出力引数

すべて折りたたむ

歪み補正後のイメージ。M x N x 3 のトゥルーカラー、または M 行 N 列の 2 次元グレースケール イメージとして返されます。

データ型: single | double | int16 | uint8 | uint16 | logical

仮想カメラの歪み補正後の内部パラメーター。cameraIntrinsics オブジェクトとして返されます。camIntrinsics オブジェクトは仮想ピンホール カメラを表します。このオブジェクトは、ピンホール モデルのキャリブレーション ワークフローの関数で使用できます。これらの内部パラメーターは、歪み補正後のイメージを生成する遠近投影法を持つカメラ用です。

ヒント

  • Computer Vision Toolbox™ のキャリブレーション アルゴリズムでは、Scaramuzza [1] により提唱された魚眼カメラ モデルを使用します。

参照

[1] Scaramuzza, D., A. Martinelli, and R. Siegwart. "A Toolbox for Easy Calibrating Omnidirectional Cameras." Proceedings to IEEE International Conference on Intelligent Robots and Systems, (IROS). Beijing, China, October 7–15, 2006.

R2017b で導入