Main Content

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

undistortImage

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

説明

[J,newOrigin] = undistortImage(I,cameraParams) は、レンズ歪みが除去された入力イメージ I が含まれる、イメージ J を返します。この関数はさらに、出力イメージの原点の [x,y] 位置を返します。この位置は、cameraParams で指定された入力固有座標に対して設定されます。

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

[J,newOrigin] = undistortImage(___,Name,Value) は、前述の構文のいずれかを使用して、Name,Value ペアの引数を 1 つ以上指定します。プロパティが未指定の場合は既定値になります。

すべて折りたたむ

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

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

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

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

Figure contains an axes object. The axes object with title Full Output View contains an object of type image.

入力引数

すべて折りたたむ

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

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

カメラ パラメーター。cameraParameters または cameraIntrinsics オブジェクトとして指定します。関数 estimateCameraParameters を使用して、cameraParameters オブジェクトを返すことができます。cameraParameters オブジェクトには、カメラの内部パラメーター、外部パラメーターおよびレンズ歪みパラメーターが含まれます。

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

名前と値の引数

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

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

例: 'FillValues',0 は、出力ピクセルの塗りつぶしの値を 0 に設定します。

出力ピクセルの塗りつぶしの値。塗りつぶしの値を 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

出力イメージの原点。2 要素ベクトル [x,y] として返されます。関数は、入力固有座標に対して出力の原点の位置を設定します。OutputView'same' に設定する、つまり出力イメージのサイズを入力イメージと同じサイズにすると、関数は newOrigin[0,0] に設定します。

newOrigin 出力は、出力イメージ J の固有座標から入力イメージ I の固有座標への平行移動を表します。

PI で、入力イメージ I の固有座標での点を表すとします。
PJ で、同じ点を出力イメージ J の固有座標で表すとします。

PI = PJ + newOrigin

拡張機能

バージョン履歴

R2014a で導入