Main Content

undistortImage

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

説明

[J,camIntrinsics] = undistortImage(I,intrinsics) は、intrinsics で定義されたカメラ パラメーターを使用して、入力イメージ I のレンズ歪みを除去します。関数は補正後のイメージ J を返します。

[J,camIntrinsics] = undistortImage(I,intrinsics,interp) は、入力イメージに使用する関数に対して内挿法を指定します。

[J,camIntrinsics] = undistortImage(___,Name=Value) は、前の構文にある引数の任意の組み合わせに加えて、名前と値の引数を 1 つ以上使用してオプションを指定します。たとえば、(FillValues=[0 0.4470 0.7410]) は、入力イメージの境界外にある出力ピクセル値を青色に設定します。

すべて折りたたむ

一連のキャリブレーション イメージを作成します。

images = imageDatastore(fullfile(toolboxdir('vision'),'visiondata', ...
    'calibration','mono'));

キャリブレーション パターンを検出します。

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

四角形のコーナーのワールド座標を生成します。正方形のサイズはミリメートル単位です。

squareSize = 29;
worldPoints = generateCheckerboardPoints(boardSize,squareSize);

カメラのキャリブレーションを行います。

I = readimage(images,1); 
imageSize = [size(I,1),size(I,2)];
cameraParams = estimateCameraParameters(imagePoints,worldPoints, ...
                                  'ImageSize',imageSize);

レンズ歪みを除去し、結果を表示します。

I = images.readimage(1);
J1 = undistortImage(I,cameraParams);
figure; imshowpair(I,J1,'montage');
title('Original Image (left) vs. Corrected Image (right)');

J2 = undistortImage(I,cameraParams,'OutputView','full');
figure; 
imshow(J2);
title('Full Output View');

入力引数

すべて折りたたむ

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

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

カメラの内部パラメーター。cameraParameters オブジェクト、cameraIntrinsics オブジェクト、cameraIntrinsicsKB オブジェクトとして指定します。

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

名前と値の引数

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

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

例: (FillValues=[0 0.4470 0.7410]) は、入力イメージの境界外にある出力ピクセル値を青色に設定します。

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

出力イメージのサイズ。"same""full"、または "valid" として指定します。プロパティを "same" に設定すると、関数は出力イメージが入力イメージのサイズにマッチするように設定します。プロパティを "full" に設定すると、出力には入力イメージのすべてのピクセルが含まれます。プロパティを "valid" に設定すると、関数は有効なピクセルのみが含まれるように出力イメージをトリミングします。

入力イメージに対して、次のようになります。

OutputView出力イメージ
"same"

入力イメージのサイズをマッチさせます。

"full"

入力イメージのすべてのピクセル。

"valid"

入力イメージの有効なピクセルのみ。

出力引数

すべて折りたたむ

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

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

カメラの内部パラメーター。レンズ歪みを除去した出力イメージを生成する仮想透視投影カメラに対応する cameraIntrinsics オブジェクトとして返されます。

拡張機能

バージョン履歴

R2014a で導入

すべて展開する