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

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

#include <opencv2/stereo.hpp>

Collaboration diagram for cv::stereo::StereoBinarySGBM:

公開型

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

公開メンバ関数

virtual int getBinaryKernelType () const =0
 
virtual int getMode () const =0
 
virtual int getP1 () const =0
 
virtual int getP2 () const =0
 
virtual int getPreFilterCap () const =0
 
virtual int getSpekleRemovalTechnique () const =0
 
virtual int getSubPixelInterpolationMethod () const =0
 
virtual int getUniquenessRatio () const =0
 
virtual void setBinaryKernelType (int value)=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 setSpekleRemovalTechnique (int factor)=0
 
virtual void setSubPixelInterpolationMethod (int value)=0
 
virtual void setUniquenessRatio (int uniquenessRatio)=0
 
- Public Member Functions inherited from cv::stereo::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< cv::stereo::StereoBinarySGBMcreate (int minDisparity, int numDisparities, int blockSize, int P1=100, int P2=1000, int disp12MaxDiff=1, int preFilterCap=0, int uniquenessRatio=5, int speckleWindowSize=400, int speckleRange=200, int mode=StereoBinarySGBM::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]を実装したものであり、オリジナルとは以下の点が異なる:

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

列挙型メンバ詳解

◆ anonymous enum

anonymous enum
列挙値
MODE_SGBM 
MODE_HH 

メンバ関数詳解

◆ create()

static Ptr< cv::stereo::StereoBinarySGBM > cv::stereo::StereoBinarySGBM::create ( int minDisparity,
int numDisparities,
int blockSize,
int P1 = 100,
int P2 = 1000,
int disp12MaxDiff = 1,
int preFilterCap = 0,
int uniquenessRatio = 5,
int speckleWindowSize = 400,
int speckleRange = 200,
int mode = StereoBinarySGBM::MODE_SGBM )
static

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*SADWindowSize*SADWindowSizeおよび32*number_of_image_channels*SADWindowSize*SADWindowSizeなど)。
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番目のコンストラクタでは各引数を任意の値に設定できる。

◆ getBinaryKernelType()

virtual int cv::stereo::StereoBinarySGBM::getBinaryKernelType ( ) const
pure virtual

◆ getMode()

virtual int cv::stereo::StereoBinarySGBM::getMode ( ) const
pure virtual

◆ getP1()

virtual int cv::stereo::StereoBinarySGBM::getP1 ( ) const
pure virtual

◆ getP2()

virtual int cv::stereo::StereoBinarySGBM::getP2 ( ) const
pure virtual

◆ getPreFilterCap()

virtual int cv::stereo::StereoBinarySGBM::getPreFilterCap ( ) const
pure virtual

◆ getSpekleRemovalTechnique()

virtual int cv::stereo::StereoBinarySGBM::getSpekleRemovalTechnique ( ) const
pure virtual

◆ getSubPixelInterpolationMethod()

virtual int cv::stereo::StereoBinarySGBM::getSubPixelInterpolationMethod ( ) const
pure virtual

◆ getUniquenessRatio()

virtual int cv::stereo::StereoBinarySGBM::getUniquenessRatio ( ) const
pure virtual

◆ setBinaryKernelType()

virtual void cv::stereo::StereoBinarySGBM::setBinaryKernelType ( int value)
pure virtual

◆ setMode()

virtual void cv::stereo::StereoBinarySGBM::setMode ( int mode)
pure virtual

◆ setP1()

virtual void cv::stereo::StereoBinarySGBM::setP1 ( int P1)
pure virtual

◆ setP2()

virtual void cv::stereo::StereoBinarySGBM::setP2 ( int P2)
pure virtual

◆ setPreFilterCap()

virtual void cv::stereo::StereoBinarySGBM::setPreFilterCap ( int preFilterCap)
pure virtual

◆ setSpekleRemovalTechnique()

virtual void cv::stereo::StereoBinarySGBM::setSpekleRemovalTechnique ( int factor)
pure virtual

◆ setSubPixelInterpolationMethod()

virtual void cv::stereo::StereoBinarySGBM::setSubPixelInterpolationMethod ( int value)
pure virtual

◆ setUniquenessRatio()

virtual void cv::stereo::StereoBinarySGBM::setUniquenessRatio ( int uniquenessRatio)
pure virtual

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