このクラスは、修正版のH. Hirschmullerアルゴリズム[129]を実装したものであり、オリジナルとは以下の点が異なる: 続き...
#include <opencv2/stereo.hpp>
|
| static Ptr< 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) |
| | StereoSGBMオブジェクトを生成する。
|
| |
| 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()) |
| | 文字列からアルゴリズムを読み込む。
|
| |
| template<typename _Tp > |
| static Ptr< _Tp > | read (const FileNode &fn) |
| | ファイルノードからアルゴリズムを読み込む。
|
| |
このクラスは、修正版の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
◆ 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 |
このクラス詳解は次のファイルから抽出されました: