Main Content

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

undistortFisheyeImage

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

説明

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

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

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

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

すべて折りたたむ

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

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

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)')

J2 = undistortFisheyeImage(I,params.Intrinsics,'OutputView','same', 'ScaleFactor', 0.2);
figure
imshow(J2)

title('Output View with low Scale Factor')

入力引数

すべて折りたたむ

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

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

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

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

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: '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 で導入