The class implements the modified H.
More...
#include <opencv2/calib3d.hpp>
|
static 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) |
| Creates StereoSGBM object. More...
|
|
template<typename _Tp > |
static Ptr< _Tp > | load (const String &filename, const String &objname=String()) |
| Loads algorithm from the file. More...
|
|
template<typename _Tp > |
static Ptr< _Tp > | loadFromString (const String &strModel, const String &objname=String()) |
| Loads algorithm from a String. More...
|
|
template<typename _Tp > |
static Ptr< _Tp > | read (const FileNode &fn) |
| Reads algorithm from the file node. More...
|
|
The class implements the modified H.
Hirschmuller algorithm [43] that differs from the original one as follows:
- By default, the algorithm is single-pass, which means that you consider only 5 directions instead of 8. Set mode=StereoSGBM::MODE_HH in createStereoSGBM to run the full variant of the algorithm but beware that it may consume a lot of memory.
- The algorithm matches blocks, not individual pixels. Though, setting blockSize=1 reduces the blocks to single pixels.
- Mutual information cost function is not implemented. Instead, a simpler Birchfield-Tomasi sub-pixel metric from [7] is used. Though, the color images are supported as well.
- Some pre- and post- processing steps from K. Konolige algorithm StereoBM are included, for example: pre-filtering (StereoBM::PREFILTER_XSOBEL type) and post-filtering (uniqueness check, quadratic interpolation and speckle filtering).
- Note
- (Python) An example illustrating the use of the StereoSGBM matching algorithm can be found at opencv_source_code/samples/python/stereo_match.py
◆ anonymous enum
Enumerator |
---|
DISP_SHIFT | |
DISP_SCALE | |
◆ anonymous enum
Enumerator |
---|
MODE_SGBM | |
MODE_HH | |
MODE_SGBM_3WAY | |
MODE_HH4 | |
◆ clear()
virtual void cv::Algorithm::clear |
( |
| ) |
|
|
inlinevirtualinherited |
◆ compute()
Computes disparity map for the specified stereo pair.
- Parameters
-
left | Left 8-bit single-channel image. |
right | Right image of the same size and the same type as the left one. |
disparity | Output disparity map. It has the same size as the input images. Some algorithms, like StereoBM or StereoSGBM compute 16-bit fixed-point disparity map (where each disparity value has 4 fractional bits), whereas other algorithms output 32-bit floating-point disparity map. |
◆ 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 |
Creates StereoSGBM object.
- Parameters
-
minDisparity | Minimum possible disparity value. Normally, it is zero but sometimes rectification algorithms can shift images, so this parameter needs to be adjusted accordingly. |
numDisparities | Maximum disparity minus minimum disparity. The value is always greater than zero. In the current implementation, this parameter must be divisible by 16. |
blockSize | Matched block size. It must be an odd number >=1 . Normally, it should be somewhere in the 3..11 range. |
P1 | The first parameter controlling the disparity smoothness. See below. |
P2 | The second parameter controlling the disparity smoothness. The larger the values are, the smoother the disparity is. P1 is the penalty on the disparity change by plus or minus 1 between neighbor pixels. P2 is the penalty on the disparity change by more than 1 between neighbor pixels. The algorithm requires P2 > P1 . See stereo_match.cpp sample where some reasonably good P1 and P2 values are shown (like 8*number_of_image_channels*SADWindowSize*SADWindowSize and 32*number_of_image_channels*SADWindowSize*SADWindowSize , respectively). |
disp12MaxDiff | Maximum allowed difference (in integer pixel units) in the left-right disparity check. Set it to a non-positive value to disable the check. |
preFilterCap | Truncation value for the prefiltered image pixels. The algorithm first computes x-derivative at each pixel and clips its value by [-preFilterCap, preFilterCap] interval. The result values are passed to the Birchfield-Tomasi pixel cost function. |
uniquenessRatio | Margin in percentage by which the best (minimum) computed cost function value should "win" the second best value to consider the found match correct. Normally, a value within the 5-15 range is good enough. |
speckleWindowSize | Maximum size of smooth disparity regions to consider their noise speckles and invalidate. Set it to 0 to disable speckle filtering. Otherwise, set it somewhere in the 50-200 range. |
speckleRange | Maximum disparity variation within each connected component. If you do speckle filtering, set the parameter to a positive value, it will be implicitly multiplied by 16. Normally, 1 or 2 is good enough. |
mode | Set it to StereoSGBM::MODE_HH to run the full-scale two-pass dynamic programming algorithm. It will consume O(W*H*numDisparities) bytes, which is large for 640x480 stereo and huge for HD-size pictures. By default, it is set to false . |
The first constructor initializes StereoSGBM with all the default parameters. So, you only have to set StereoSGBM::numDisparities at minimum. The second constructor enables you to set each parameter to a custom value.
◆ empty()
virtual bool cv::Algorithm::empty |
( |
| ) |
const |
|
inlinevirtualinherited |
◆ getBlockSize()
virtual int cv::StereoMatcher::getBlockSize |
( |
| ) |
const |
|
pure virtualinherited |
◆ getDefaultName()
virtual String cv::Algorithm::getDefaultName |
( |
| ) |
const |
|
virtualinherited |
◆ getDisp12MaxDiff()
virtual int cv::StereoMatcher::getDisp12MaxDiff |
( |
| ) |
const |
|
pure virtualinherited |
◆ getMinDisparity()
virtual int cv::StereoMatcher::getMinDisparity |
( |
| ) |
const |
|
pure virtualinherited |
◆ getMode()
virtual int cv::StereoSGBM::getMode |
( |
| ) |
const |
|
pure virtual |
◆ getNumDisparities()
virtual int cv::StereoMatcher::getNumDisparities |
( |
| ) |
const |
|
pure virtualinherited |
◆ getP1()
virtual int cv::StereoSGBM::getP1 |
( |
| ) |
const |
|
pure virtual |
◆ getP2()
virtual int cv::StereoSGBM::getP2 |
( |
| ) |
const |
|
pure virtual |
◆ getPreFilterCap()
virtual int cv::StereoSGBM::getPreFilterCap |
( |
| ) |
const |
|
pure virtual |
◆ getSpeckleRange()
virtual int cv::StereoMatcher::getSpeckleRange |
( |
| ) |
const |
|
pure virtualinherited |
◆ getSpeckleWindowSize()
virtual int cv::StereoMatcher::getSpeckleWindowSize |
( |
| ) |
const |
|
pure virtualinherited |
◆ getUniquenessRatio()
virtual int cv::StereoSGBM::getUniquenessRatio |
( |
| ) |
const |
|
pure virtual |
◆ load()
◆ loadFromString()
template<typename _Tp >
static Ptr<_Tp> cv::Algorithm::loadFromString |
( |
const String & |
strModel, |
|
|
const String & |
objname = String() |
|
) |
| |
|
inlinestaticinherited |
◆ read() [1/2]
virtual void cv::Algorithm::read |
( |
const FileNode & |
fn | ) |
|
|
inlinevirtualinherited |
◆ read() [2/2]
template<typename _Tp >
static Ptr<_Tp> cv::Algorithm::read |
( |
const FileNode & |
fn | ) |
|
|
inlinestaticinherited |
Reads algorithm from the file node.
This is static template method of Algorithm. It's usage is following (in the case of SVM):
Ptr<SVM> svm = Algorithm::read<SVM>(fsRead.root());
In order to make this method work, the derived class must overwrite Algorithm::read(const FileNode& fn) and also have static create() method without parameters (or with all the optional parameters)
◆ save()
virtual void cv::Algorithm::save |
( |
const String & |
filename | ) |
const |
|
virtualinherited |
Saves the algorithm to a file.
In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs).
◆ setBlockSize()
virtual void cv::StereoMatcher::setBlockSize |
( |
int |
blockSize | ) |
|
|
pure virtualinherited |
◆ setDisp12MaxDiff()
virtual void cv::StereoMatcher::setDisp12MaxDiff |
( |
int |
disp12MaxDiff | ) |
|
|
pure virtualinherited |
◆ setMinDisparity()
virtual void cv::StereoMatcher::setMinDisparity |
( |
int |
minDisparity | ) |
|
|
pure virtualinherited |
◆ setMode()
virtual void cv::StereoSGBM::setMode |
( |
int |
mode | ) |
|
|
pure virtual |
◆ setNumDisparities()
virtual void cv::StereoMatcher::setNumDisparities |
( |
int |
numDisparities | ) |
|
|
pure virtualinherited |
◆ setP1()
virtual void cv::StereoSGBM::setP1 |
( |
int |
P1 | ) |
|
|
pure virtual |
◆ setP2()
virtual void cv::StereoSGBM::setP2 |
( |
int |
P2 | ) |
|
|
pure virtual |
◆ setPreFilterCap()
virtual void cv::StereoSGBM::setPreFilterCap |
( |
int |
preFilterCap | ) |
|
|
pure virtual |
◆ setSpeckleRange()
virtual void cv::StereoMatcher::setSpeckleRange |
( |
int |
speckleRange | ) |
|
|
pure virtualinherited |
◆ setSpeckleWindowSize()
virtual void cv::StereoMatcher::setSpeckleWindowSize |
( |
int |
speckleWindowSize | ) |
|
|
pure virtualinherited |
◆ setUniquenessRatio()
virtual void cv::StereoSGBM::setUniquenessRatio |
( |
int |
uniquenessRatio | ) |
|
|
pure virtual |
◆ write() [1/2]
virtual void cv::Algorithm::write |
( |
FileStorage & |
fs | ) |
const |
|
inlinevirtualinherited |
◆ write() [2/2]
simplified API for language bindings This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
◆ writeFormat()
void cv::Algorithm::writeFormat |
( |
FileStorage & |
fs | ) |
const |
|
protectedinherited |
The documentation for this class was generated from the following file: