最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

undistortImage

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

説明

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

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

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

すべて折りたたむ

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

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

入力イメージに使用する内挿法。文字ベクトル 'linear''nearest' または 'cubic' として指定します。

名前と値のペアの引数

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

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

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

出力イメージのサイズ。'OutputView' と文字ベクトル '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 で導入