OpenCV 4.5.3(日本語機械翻訳)
公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
cv::StereoSGBM クラス abstract

The class implements the modified H. Hirschmuller algorithm [HH08] that differs from the original one as follows: [詳解]

#include <calib3d.hpp>

cv::StereoMatcherを継承しています。

公開型

enum { MODE_SGBM = 0 , MODE_HH = 1 , MODE_SGBM_3WAY = 2 , MODE_HH4 = 3 }
- 基底クラス cv::StereoMatcher に属する継承公開型
enum { DISP_SHIFT = 4 , DISP_SCALE = (1 << DISP_SHIFT) }

公開メンバ関数

virtual CV_WRAP int getPreFilterCap () const =0
virtual CV_WRAP void setPreFilterCap (int preFilterCap)=0
virtual CV_WRAP int getUniquenessRatio () const =0
virtual CV_WRAP void setUniquenessRatio (int uniquenessRatio)=0
virtual CV_WRAP int getP1 () const =0
virtual CV_WRAP void setP1 (int P1)=0
virtual CV_WRAP int getP2 () const =0
virtual CV_WRAP void setP2 (int P2)=0
virtual CV_WRAP int getMode () const =0
virtual CV_WRAP void setMode (int mode)=0
- 基底クラス cv::StereoMatcher に属する継承公開メンバ関数
virtual CV_WRAP void compute (InputArray left, InputArray right, OutputArray disparity)=0
指定されたステレオペアに対する視差マップを計算します.[【詳解】(英語]
virtual CV_WRAP int getMinDisparity () const =0
virtual CV_WRAP void setMinDisparity (int minDisparity)=0
virtual CV_WRAP int getNumDisparities () const =0
virtual CV_WRAP void setNumDisparities (int numDisparities)=0
virtual CV_WRAP int getBlockSize () const =0
virtual CV_WRAP void setBlockSize (int blockSize)=0
virtual CV_WRAP int getSpeckleWindowSize () const =0
virtual CV_WRAP void setSpeckleWindowSize (int speckleWindowSize)=0
virtual CV_WRAP int getSpeckleRange () const =0
virtual CV_WRAP void setSpeckleRange (int speckleRange)=0
virtual CV_WRAP int getDisp12MaxDiff () const =0
virtual CV_WRAP void setDisp12MaxDiff (int disp12MaxDiff)=0
- 基底クラス cv::Algorithm に属する継承公開メンバ関数
virtual CV_WRAP void clear ()
アルゴリズムの状態をクリアする[【詳解】(英語]
virtual void write (FileStorage &fs) const
アルゴリズムのパラメーターをファイルストレージに格納[【詳解】(英語]
CV_WRAP void write (const Ptr< FileStorage > &fs, const String &name=String()) const
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
virtual CV_WRAP void read (const FileNode &fn)
アルゴリズム・パラメータをファイル・ストレージから読み込みます。[【詳解】(英語]
virtual CV_WRAP bool empty () const
が空の場合はtrueを返します。Algorithmが空の場合は真を返します。[【詳解】(英語]
virtual CV_WRAP void save (const String &filename) const
virtual CV_WRAP String getDefaultName () const

静的公開メンバ関数

static CV_WRAP Ptr< 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)
視差検索範囲を作成します。StereoSGBMオブジェクト[【詳解】(英語]
- 基底クラス cv::Algorithm に属する継承静的公開メンバ関数
template<typename _Tp >
static Ptr< _Tp > read (const FileNode &fn)
ファイル・ノードからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > load (const String &filename, const String &objname=String())
ファイルからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > loadFromString (const String &strModel, const String &objname=String())
文字列からアルゴリズムを読み込む[【詳解】(英語]

その他の継承メンバ

- 基底クラス cv::Algorithm に属する継承限定公開メンバ関数
void writeFormat (FileStorage &fs) const

詳解

このクラスは,修正されたH. Hirschmullerアルゴリズムを実装しています[HH08]を実装しています.を実装しており,オリジナルのアルゴリズムとは以下のように異なります.

覚え書き
  • (Python) マッチングアルゴリズムの使用例は、opencc にあります。StereoSGBMマッチングアルゴリズムは opencv_source_code/samples/python/stereo_match.py にあります.

関数詳解

create()

static CV_WRAP 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

視差検索範囲を作成します。StereoSGBMオブジェクト

引数
minDisparity 視差の最小値.通常は0ですが,平行化アルゴリズムによって画像がずれることがあるので,このパラメータを適宜調整する必要があります.
numDisparities 最大視差量から最小視差量を引いた値.この値は常にゼロよりも大きくなります.現在の実装では,このパラメータは 16 で割り切れるものでなければなりません.
blockSize マッチしたブロックサイズ.奇数 >=1 でなければなりません.通常は,3~11の範囲内の値を指定します.
P1 視差の滑らかさを制御する最初のパラメータです.以下を参照してください.
P2 視差の滑らかさを制御する2番目のパラメータ.値が大きくなるほど,視差が滑らかになります.P1は,隣接するピクセル間のプラスマイナス1の視差の変化に対するペナルティです.P2は,隣接するピクセル間で1以上の視差の変化があった場合のペナルティです.このアルゴリズムでは,P2 > P1 である必要があります.stereo_match.cpp のサンプルには,適度な P1 と P2 の値が示されています(それぞれ,8*number_of_image_channels*blockSize*blockSize と 32*number_of_image_channels*blockSize*blockSize など).
disp12MaxDiff 左右の視差をチェックする際の最大許容差(整数ピクセル単位)。チェックを無効にするには、この値を非正の値に設定します。
preFilterCap フィルタリングされた画像のピクセルに対する切り捨て値.このアルゴリズムでは、まず各ピクセルのx-derivativeを計算し、その値を[-preFilterCap, preFilterCap]間隔で切り詰めます。その結果をBirchfield-Tomasi pixel cost functionに渡します。
uniquenessRatio Margin(マージン):計算されたコスト関数の最良(最小)の値が、2番目に良い値に「勝つ」ことで、見つかったマッチが正しいと判断される割合です。通常,5~15 の範囲内の値であれば十分です.
speckleWindowSize スムーズ視差領域のノイズスペックルを考慮して無効にする最大サイズ。0に設定するとスペックルフィルタリングを無効にします。それ以外の場合は、50-200の範囲内で設定してください。
speckleRange 各連結成分内の最大視差変動。スペックルフィルタリングを行う場合、このパラメータを正の値に設定すると、暗黙のうちに16倍されます。通常は、1または2で十分です。
mode StereoSGBM::MODE_HHに設定すると、本格的な2パス・ダイナミック・プログラミング・アルゴリズムが実行されます。これは,O(W*H*numDisparities) バイトを消費するが,640x480 ステレオでは大きく,HD サイズの画像では巨大である.デフォルトでは,false に設定されています.

最初のコンストラクタではStereoSGBMをすべてのデフォルトパラメータで初期化します。したがって,StereoSGBM::numDisparities を最小値に設定するだけでよいのです.2番目のコンストラクタでは,各パラメータをカスタム値に設定することができます.


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