OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。

このクラスは、修正版のH. Hirschmullerアルゴリズム[129]を実装したものであり、オリジナルとは以下の点が異なる: 続き...

#include <opencv2/calib3d.hpp>

Collaboration diagram for cv::StereoSGBM:

公開型

enum  {
  MODE_SGBM = 0 ,
  MODE_HH = 1 ,
  MODE_SGBM_3WAY = 2 ,
  MODE_HH4 = 3
}
 
- Public Types inherited from cv::StereoMatcher
enum  {
  DISP_SHIFT = 4 ,
  DISP_SCALE = (1 << DISP_SHIFT)
}
 

公開メンバ関数

virtual int getMode () const =0
 
virtual int getP1 () const =0
 
virtual int getP2 () const =0
 
virtual int getPreFilterCap () const =0
 
virtual int getUniquenessRatio () const =0
 
virtual void setMode (int mode)=0
 
virtual void setP1 (int P1)=0
 
virtual void setP2 (int P2)=0
 
virtual void setPreFilterCap (int preFilterCap)=0
 
virtual void setUniquenessRatio (int uniquenessRatio)=0
 
- Public Member Functions inherited from cv::StereoMatcher
virtual void compute (InputArray left, InputArray right, OutputArray disparity)=0
 指定したステレオペアの視差マップを計算する。
 
virtual int getBlockSize () const =0
 
virtual int getDisp12MaxDiff () const =0
 
virtual int getMinDisparity () const =0
 
virtual int getNumDisparities () const =0
 
virtual int getSpeckleRange () const =0
 
virtual int getSpeckleWindowSize () const =0
 
virtual void setBlockSize (int blockSize)=0
 
virtual void setDisp12MaxDiff (int disp12MaxDiff)=0
 
virtual void setMinDisparity (int minDisparity)=0
 
virtual void setNumDisparities (int numDisparities)=0
 
virtual void setSpeckleRange (int speckleRange)=0
 
virtual void setSpeckleWindowSize (int speckleWindowSize)=0
 
- Public Member Functions inherited from cv::Algorithm
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 アルゴリズムの状態をクリアする。
 
virtual bool empty () const
 Algorithm が空の場合(たとえば開始直後や読み込みに失敗した後)に true を返す。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 ファイルストレージからアルゴリズムの引数を読み込む。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 アルゴリズムの引数をファイルストレージに保存する。
 
void write (FileStorage &fs, const String &name) const
 

静的公開メンバ関数

static Ptr< StereoSGBMcreate (int minDisparity=0, int numDisparities=16, int blockSize=3, int P1=0, int P2=0, int disp12MaxDiff=0, int preFilterCap=0, int uniquenessRatio=0, int speckleWindowSize=0, int speckleRange=0, int mode=StereoSGBM::MODE_SGBM)
 StereoSGBMオブジェクトを生成する。
 
- Static Public Member Functions inherited from cv::Algorithm
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 ファイルからアルゴリズムを読み込む。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 文字列からアルゴリズムを読み込む。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 ファイルノードからアルゴリズムを読み込む。
 

Additional Inherited Members

- Protected Member Functions inherited from cv::Algorithm
void writeFormat (FileStorage &fs) const
 

詳細説明

このクラスは、修正版のH. Hirschmullerアルゴリズム[129]を実装したものであり、オリジナルとは以下の点が異なる:

  • デフォルトではアルゴリズムは1パスであり、8方向ではなく5方向だけを考慮することを意味する。アルゴリズムの完全版を実行するには createStereoSGBM で mode=StereoSGBM::MODE_HH に設定するが、大量のメモリを消費する可能性があることに注意。
  • このアルゴリズムは個々のピクセルではなくブロック単位でマッチングを行う。ただし、blockSize=1を設定するとブロックは単一ピクセルに縮小される。
  • 相互情報量コスト関数は実装されていない。代わりに、[30]のより単純なBirchfield-Tomasiサブピクセルメトリックを使用する。ただし、カラー画像もサポートされている。
  • K. KonoligeアルゴリズムStereoBMの前処理および後処理ステップの一部が含まれている。例えば、前処理フィルタ(StereoBM::PREFILTER_XSOBEL型)や後処理(一意性チェック、二次補間、スペックルフィルタリング)などである。
覚え書き
  • (Python) StereoSGBM マッチングアルゴリズムの使用例は opencv_source_code/samples/python/stereo_match.py にある

列挙型メンバ詳解

◆ anonymous enum

anonymous enum
列挙値
MODE_SGBM 
MODE_HH 
MODE_SGBM_3WAY 
MODE_HH4 

メンバ関数詳解

◆ create()

static Ptr< StereoSGBM > cv::StereoSGBM::create ( int minDisparity = 0,
int numDisparities = 16,
int blockSize = 3,
int P1 = 0,
int P2 = 0,
int disp12MaxDiff = 0,
int preFilterCap = 0,
int uniquenessRatio = 0,
int speckleWindowSize = 0,
int speckleRange = 0,
int mode = StereoSGBM::MODE_SGBM )
static
Python:
cv.StereoSGBM.create([, minDisparity[, numDisparities[, blockSize[, P1[, P2[, disp12MaxDiff[, preFilterCap[, uniquenessRatio[, speckleWindowSize[, speckleRange[, mode]]]]]]]]]]]) -> retval
cv.StereoSGBM_create([, minDisparity[, numDisparities[, blockSize[, P1[, P2[, disp12MaxDiff[, preFilterCap[, uniquenessRatio[, speckleWindowSize[, speckleRange[, mode]]]]]]]]]]]) -> retval

StereoSGBMオブジェクトを生成する。

引数
minDisparity最小視差値。通常はゼロだが、レクティフィケーションアルゴリズムが画像をシフトすることがあるため、それに応じてこの引数を調整する必要がある。
numDisparities最大視差から最小視差を引いた値。この値は常にゼロより大きい。現在の実装では、この引数は16で割り切れなければならない。
blockSizeマッチングするブロックサイズ。1以上の奇数でなければならない。通常は3..11の範囲のどこかにあるべきである。
P1視差の平滑性を制御する第1引数。下記を参照。
P2視差の平滑性を制御する第2引数。値が大きいほど視差は平滑になる。P1 は隣接ピクセル間で視差がプラスマイナス1だけ変化することに対するペナルティである。P2 は隣接ピクセル間で視差が1を超えて変化することに対するペナルティである。アルゴリズムは P2 > P1 であることを要求する。妥当に良い P1 と P2 の値が示されている stereo_match.cpp サンプルを参照 (それぞれ 8*number_of_image_channels*blockSize*blockSize と 32*number_of_image_channels*blockSize*blockSize など)。
disp12MaxDiff左右視差チェックにおける許容される最大の差(整数ピクセル単位)。チェックを無効にするには非正の値を設定する。
preFilterCapプレフィルタされた画像ピクセルの切り捨て値。アルゴリズムはまず各ピクセルでx微分を計算し、その値を[-preFilterCap, preFilterCap]の区間でクリップする。結果の値はBirchfield-Tomasiのピクセルコスト関数に渡される。
uniquenessRatio見つかったマッチを正しいと見なすために、計算されたコスト関数の最良(最小)値が次に良い値に対して「勝つ」べきマージン(パーセンテージ)。通常、5-15の範囲の値で十分である。
speckleWindowSizeノイズスペックルと見なして無効化する、滑らかな視差領域の最大サイズ。スペックルフィルタリングを無効にするには0を設定する。それ以外の場合は50-200の範囲のどこかに設定する。
speckleRange各連結成分内における視差の最大変動量。スペックルフィルタリングを行う場合は正の値を設定する。この値は内部的に16倍される。通常は1または2で十分である。
modeフルスケールの2パス動的計画法アルゴリズムを実行するには StereoSGBM::MODE_HH に設定する。これは O(W*H*numDisparities) バイトを消費し、640x480 のステレオでは大きく、HD サイズの画像では膨大になる。デフォルトでは false に設定されている。

1番目のコンストラクタはStereoSGBMをすべてのデフォルト引数で初期化する。したがって、最低限StereoSGBM::numDisparitiesを設定するだけでよい。2番目のコンストラクタでは各引数を任意の値に設定できる。

◆ getMode()

virtual int cv::StereoSGBM::getMode ( ) const
pure virtual
Python:
cv.StereoSGBM.getMode() -> retval

◆ getP1()

virtual int cv::StereoSGBM::getP1 ( ) const
pure virtual
Python:
cv.StereoSGBM.getP1() -> retval

◆ getP2()

virtual int cv::StereoSGBM::getP2 ( ) const
pure virtual
Python:
cv.StereoSGBM.getP2() -> retval

◆ getPreFilterCap()

virtual int cv::StereoSGBM::getPreFilterCap ( ) const
pure virtual
Python:
cv.StereoSGBM.getPreFilterCap() -> retval

◆ getUniquenessRatio()

virtual int cv::StereoSGBM::getUniquenessRatio ( ) const
pure virtual
Python:
cv.StereoSGBM.getUniquenessRatio() -> retval

◆ setMode()

virtual void cv::StereoSGBM::setMode ( int mode)
pure virtual
Python:
cv.StereoSGBM.setMode(mode) -> None

◆ setP1()

virtual void cv::StereoSGBM::setP1 ( int P1)
pure virtual
Python:
cv.StereoSGBM.setP1(P1) -> None

◆ setP2()

virtual void cv::StereoSGBM::setP2 ( int P2)
pure virtual
Python:
cv.StereoSGBM.setP2(P2) -> None

◆ setPreFilterCap()

virtual void cv::StereoSGBM::setPreFilterCap ( int preFilterCap)
pure virtual
Python:
cv.StereoSGBM.setPreFilterCap(preFilterCap) -> None

◆ setUniquenessRatio()

virtual void cv::StereoSGBM::setUniquenessRatio ( int uniquenessRatio)
pure virtual
Python:
cv.StereoSGBM.setUniquenessRatio(uniquenessRatio) -> None

このクラス詳解は次のファイルから抽出されました: