主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

差距

(非推奨)ステレオイメージ間の視差マップ

関数差距は推奨されません。代わりにdisparityBMまたはdisparitySGMを使用してください。詳細については,互換性の考慮事項を参照してください。

説明

disparityMap=差异(I1I2は,ステレオイメージのペアI1I2の視差マップdisparityMapを返します。

disparityMap=差异(I1I2名称,值は1つ以上の名称,值ペアの引数を使用して視差アルゴリズムの追加のコントロールを提供します。

すべて折りたたむ

イメージを読み込んでグレースケールに変換します。

I1 = imread (“scene_left.png”);I2 = imread (“scene_right.png”);

ステレオアナグリフを表示します。赤とシアンの立体眼鏡を使用して,イメージを3次元表示します。

图imshow (stereoAnaglyph (I1、I2));标题(“立体图像的红青色合成视图”);

图中包含一个坐标轴。立体图像的标题为“红青色复合视图”的轴包含一个类型为image的对象。

視差マップを計算します。

差异范围= [-6 10];disparityMap =差距(rgb2gray (I1) rgb2gray (I2),“BlockSize”...15,“DisparityRange”, disparityRange);

視差マップを表示します。可視性を向上するには,視差範囲をimshowの表示範囲として使用します。

图imshow (disparityMap disparityRange);标题(“差距地图”);colormap colorbar (gca、飞机)

图中包含一个坐标轴。标题为视差贴图的轴包含一个类型为图像的对象。

入力引数

すべて折りたたむ

カメラ1に対応する,I1として参照される入力イメージ。2次元グレースケールで指定します。ステレオ イメージI1I2を平行化して,対応する点が同じ行に配置されるようにしなければなりません。この平行化は,関数rectifyStereoImagesを使用して行うこともできます。

I1I2のクラスをuint8に設定し,列数が4で割り切れるように設定することで,関数の速度を向上できます。入力イメージI1I2は,実数,有限,非スパースでなければなりません。これらは同じクラスでなければなりません。

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

カメラ2に対応する,I2として参照される入力イメージ。2次元グレースケールで指定します。入力イメージを平行化して、対応する点が同じ行に配置されるようにしなければなりません。I1I2のクラスをuint8に設定し,列数が4で割り切れるように設定することで,関数の速度を向上できます。入力イメージI1I2は,実数,有限,非スパースでなければなりません。これらは同じクラスでなければなりません。

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

名前と値のペアの引数

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

例:“方法”“BlockMatching”は,“方法”プロパティが“BlockMatching”に設定されるように指定します。

視差推定アルゴリズム。”方法“と,“BlockMatching”または“SemiGlobal”で構成されるコンマ区切りのペアとして指定します。視差関数は,基本ブロックマッチング[1]アルゴリズムと,セミグローバルブロックマッチング[3]アルゴリズムを実装しています。“BlockMatching”法では,関数がイメージ内のピクセルの各ブロックについて差の絶対値の総和(SAD)を比較し,視差を計算します。“SemiGlobal”マッチング法ではさらに,近傍のブロックの視差が同じような値になるようにします。このような追加制約を適用することで,“BlockMatching”法より詳細な視差の推定が可能になります。

アルゴリズムは次のステップを実行します。

  1. ソーベルフィルターを使用してイメージのコントラストの測定値を計算します。

  2. I1内の各ピクセルについて視差を計算します。

  3. 計算結果の信頼性が低い,視差マップdisparityMapの要素をマークします。関数は-最大浮点数“单一”)を使用してこれらの要素をマークします。

視差の範囲。”DisparityRange《と2要素ベクトルで構成されるコンマ区切りのペアとして指定します。2要素ベクトルは [MinDisparity, MaxDisparity] の形式でなければなりません。両方の要素が整数でなければなりませんが、負の値でもかまいません。MinDisparity と MaxDisparity は、[-image width, image width] の範囲内でなければなりません。MaxDisparity と MinDisparity の差は、16の倍数でなければなりません。DisparityRangeは,実数,有限,非スパースでなければなりません。I1の撮影に使用されたカメラがI2の撮影に使用されたカメラの右側にあった場合,MinDisparityは負でなければなりません。

視差の範囲は2つのカメラ間の距離と,カメラと対象オブジェクト間の距離によって異なります。カメラとカメラの間隔が広い,またはオブジェクトとカメラが接近している場合には,DisparityRangeの値を大きくします。構成に適切な視差を判定するには,imtoolで入力イメージのステレオアナグリフを表示し,距離ツールを使用して対応する点のペア間の距離を測定します。測定値に応じてMaxDisparityを変更します。

平方ブロックのサイズ。”BlockSize“と[5255]の範囲の奇数の整数で構成されるコンマ区切りのペアとして指定します。この値は,平方ブロックのサイズの幅を設定します。関数は,ピクセルの平方ブロックを使用してI1I2の比較を行います。BlockSizeは,実数,有限,非スパースでなければなりません。

コントラストのしきい値の範囲。”ContrastThreshold“と(0,1)の範囲のスカラー値で構成されるコンマ区切りのペアとして指定します。コントラストのしきい値は,コントラスト値の許容範囲を定義します。このパラメーターの値を大きくすると,信頼性が低いとマークされるピクセルの数が少なくなります。ContrastThresholdは,実数,有限,非スパースでなければなりません。

一意性の最小値。UniquenessThreshold“と非負の整数で構成されるコンマ区切りのペアとして指定します。このパラメーターの値を大きくすると,関数によって信頼性が低いとマークされるピクセルの数が多くなります。ピクセルの一意性の値が小さい場合,そのピクセルについて計算された視差の信頼性が低いことを示します。しきい値を0に設定すると,一意性のしきい値処理が無効になります。UniquenessThresholdは,実数,有限,非スパースでなければなりません。

関数は,一意性を,最適な視差推定と最適性が低い視差推定の比率として定義します。次に例を示します。

Kを最良の推定視差,Vを対応する悲伤(差の絶対値の総和)値とします。
Vを視差範囲全体での悲伤の最小値,VをK, K - 1およびK + 1を除く視差範囲全体での悲伤の最小値であるとします。
v < v * (1+0.01UniquenessThreshold)の場合,関数はピクセルの視差について信頼性が低いとマークします。

2点間の左から右へのイメージチェックの最大距離。”DistanceThreshold“と非負の整数で構成されるコンマ区切りのペアとして指定します。このパラメーターの値を大きくすると,信頼性が低いとマークされるピクセルの数が少なくなります。逆に,距離のしきい値の値を小さくすると,視差マップの信頼性が高くなります。このパラメーターを空行列[]に設定すると無効になります。DistanceThresholdは,実数,有限,非スパースでなければなりません。

距離のしきい値は,I1の点とI2で検出された同じ点の間の最大距離を指定します。関数は距離を検出し、次の方法でピクセルにマークします。

p1をイメージ我1の点とします。
手順1:関数がイメージ我2で点p1の最適一致を検索し(左から右へのチェック),点p2を検出します。
手順2:関数がイメージ我1で点p2の最適一致を検索し(右から左へのチェック),点p3.を検出します。
検索によって返されたp1とp3.の間の距離がDistanceThresholdより大きい場合,関数は点p1の視差について信頼性が低いとマークします。

最小テクスチャしきい値。TextureThresholdと[0,1)の範囲のスカラー値で構成されるコンマ区切りのペアとして指定します。テクスチャしきい値は,信頼性が高いと見なされるピクセルの最小テクスチャ値を定義します。ピクセルのブロックのテクスチャの値が小さいほど,ピクセルについて計算された視差の信頼性が低くなります。このパラメーターの値を大きくすると,信頼性が低いとマークされるピクセルの数が多くなります。このパラメーターを0に設定すると無効になります。このパラメーターは方法“BlockMatching”に設定した場合にのみ適用されます。

ピクセルのテクスチャは,ピクセルの周りのBlockSizexBlockSizeのウィンドウに対して計算された飽和コントラストの和として定義されます。関数は,テクスチャが次のように定義された値より小さくなると、ピクセルについて計算された視差の信頼性が低いと見なしてマークします。

纹理< X *TextureThresholdBlockSize2

Xは,入力イメージI1I2のクラスによってサポートされる最大値を表します。

TextureThresholdは,実数,有限,非スパースでなければなりません。

出力引数

すべて折りたたむ

ステレオイメージのペアの視差マップ。M行N列の2次元グレースケールイメージとして返されます。関数は,入力イメージI1I2と同じサイズの視差マップを返します。出力の各要素は,イメージ参照の対応ピクセルの視差をI1として指定します。返される視差の値は, 1 16 ピクセルに丸められます。

関数は,次の3つの手順で視差マップを計算します。

  1. ソーベルフィルターを使用してイメージのコントラストの測定値を計算します。

  2. ブロックマッチングと差の絶対値の総和(SAD)を使用して,各ピクセルの視差を計算します。

  3. オプションで,信頼性の低い視差値を含むピクセルをマークします。関数は,ピクセルを-最大浮点数('”)によって返された値に設定します。

ヒント

結果として得られた視差マップにノイズが多く含まれていると思われる場合,DisparityRangeを変更してみてください。視差の範囲は,2つのカメラ間の距離と、カメラと対象オブジェクト間の距離によって異なります。カメラとカメラの間隔が広い、またはオブジェクトとカメラが接近している場合には、DisparityRangeの値を大きくします。構成に適切な視差を判定するには,imtoolで入力イメージのステレオアナグリフを表示し,距離ツールを使用して対応する点のペア間の距離を測定します。測定値に応じてMaxDisparityを変更します。

互換性の考慮事項

すべて展開する

R2019a以降は非推奨

参照

[1] Konolige, K.,小视觉系统:硬件和实现,第8届机器人研究国际研讨会论文集,第203-212页,1997。

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

[3] Hirschmuller, H.,基于半全局匹配和互信息的立体图像处理,计算机视觉与模式识别,2005。

拡張機能

R2011bで導入