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

rectifyStereoImages

ステレオ イメージのペアの平行化

構文

[J1,J2] = rectifyStereoImages(I1,I2,stereoParams)
[J1,J2] = rectifyStereoImages(I1,I2,tform1,tform2)
[J1,J2] = rectifyStereoImages(___,interp)
[J1,J2] = rectifyStereoImages(___,Name,Value)

説明

[J1,J2] = rectifyStereoImages(I1,I2,stereoParams) は、stereoParams オブジェクトに格納されたステレオ パラメーターを使用して、歪み補正と平行化が行われた I1 入力イメージと I2 入力イメージを返します。

ステレオ イメージの平行化では、各イメージの対応する点が同じ行座標をもつような方法で、イメージが共通のイメージ平面に投影されます。このようにイメージの投影を行うと、2 つのカメラが平行であるかのように表示されます。関数 disparity を使用して、3 次元シーン再構成のために平行化されたイメージから視差マップを計算します。

[J1,J2] = rectifyStereoImages(I1,I2,tform1,tform2) は、射影変換 tform1tform2 を適用して、平行化された I1 入力イメージと I2 入力イメージを返します。射影変換は、関数 estimateUncalibratedRectification によって返されます。

[J1,J2] = rectifyStereoImages(___,interp) はさらに、平行化されたイメージに使用する内挿法を指定します。この方法には 'nearest''linear' または 'cubic' を指定できます。

[J1,J2] = rectifyStereoImages(___,Name,Value) は、1 つ以上の Name,Value 引数ペアによって指定された追加オプションを使用します。

すべて折りたたむ

キャリブレーションを行うチェッカーボードを含むイメージを指定します。

imageDir = fullfile(toolboxdir('vision'),'visiondata', ...
    'calibration','stereo');
leftImages = imageDatastore(fullfile(imageDir,'left'));
rightImages = imageDatastore(fullfile(imageDir,'right'));

チェッカーボードを検出します。

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

チェッカーボード キーポイントのワールド座標を指定します。

squareSizeInMillimeters = 108;
worldPoints = generateCheckerboardPoints(boardSize,squareSizeInMillimeters);

イメージを読み取ります。

I1 = readimage(leftImages,1);
I2 = readimage(rightImages,1);
imageSize = [size(I1,1),size(I1,2)];

ステレオ カメラ システムをキャリブレーションします。

stereoParams = estimateCameraParameters(imagePoints,worldPoints, ...
                                        'ImageSize',imageSize);

'full' 出力表示を使用してイメージを平行化します。

[J1_full,J2_full] = rectifyStereoImages(I1,I2,stereoParams, ...
  'OutputView','full');

'full' 出力表示の結果を表示します。

figure;
imshow(stereoAnaglyph(J1_full,J2_full));

'valid' 出力表示を使用してイメージを平行化します。これは視差計算に最適です。

[J1_valid,J2_valid] = rectifyStereoImages(I1,I2,stereoParams, ...
  'OutputView','valid');

'valid' 出力表示の結果を表示します。

figure;
imshow(stereoAnaglyph(J1_valid,J2_valid));

入力引数

すべて折りたたむ

カメラ 1 に対応する入力イメージ。M x N x 3 のトゥルーカラー イメージ、または M 行 N 列の 2 次元グレースケール配列として指定します。また、入力イメージ I1 および I2 は、実数、有限、非スパースでなければなりません。入力イメージは同じクラスでなければなりません。

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

カメラ 2 に対応する入力イメージ。M x N x 3 のトゥルーカラー イメージ、または M 行 N 列の 2 次元グレースケール配列として指定します。入力イメージ I1 および I2 は、実数、有限、非スパースでなければなりません。また、入力イメージは同じクラスでなければなりません。

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

ステレオ カメラ システムのパラメーター。stereoParameters オブジェクトとして指定します。

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

イメージ 1 の射影変換。関数 estimateUncalibratedRectification によって返される 3 行 3 列の行列または projective2d オブジェクトとして指定します。

イメージ 2 の射影変換。関数 estimateUncalibratedRectification によって返される 3 行 3 列の行列または projective2d オブジェクトとして指定します。

内挿法。文字ベクトル 'linear''nearest' または 'cubic' として指定します。

名前と値のペアの引数

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

例: 'OutputView', 'valid' を指定すると、'OutputView' プロパティが文字ベクトル 'valid' に設定されます。

平行化されたイメージのサイズ。'OutputView' と文字ベクトル 'full' または 'valid' で構成されるコンマ区切りのペアとして指定します。このパラメーターを 'full' に設定すると、平行化されたイメージに元のイメージのすべてのピクセルが含まれます。この値を 'valid' に設定すると、出力イメージは、有効なピクセルを含む最も大きな共通の四角形のサイズにトリミングされます。

平行化されたイメージ間にオーバーラップがない場合は、OutputView'full' に設定します。

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

出力引数

すべて折りたたむ

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

ステレオ イメージの平行化では、各イメージの対応する点が同じ行座標をもつような方法で、イメージが共通のイメージ平面に投影されます。このようにイメージの投影を行うと、2 つのカメラが平行であるかのように表示されます。関数 disparity を使用して、3 次元シーン再構成のために平行化されたイメージから視差マップを計算します。

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

ステレオ イメージの平行化では、各イメージの対応する点が同じ行座標をもつような方法で、イメージが共通のイメージ平面に投影されます。このようにイメージの投影を行うと、2 つのカメラが平行であるかのように表示されます。関数 disparity を使用して、3 次元シーン再構成のために平行化されたイメージから視差マップを計算します。

参照

[1] G. Bradski and A. Kaehler, Learning OpenCV : Computer Vision with the OpenCV Library. Sebastopol, CA: O'Reilly, 2008.

拡張機能

R2014a で導入