The class implements the modified H. More...
#include "calib3d.hpp"
Public Types | |
enum | { DISP_SHIFT = 4, DISP_SCALE = (1 << DISP_SHIFT) } |
enum | { MODE_SGBM = 0, MODE_HH = 1, MODE_SGBM_3WAY = 2 } |
Public Member Functions | |
virtual void | clear () |
Clears the algorithm state. More... | |
virtual void | compute (InputArray left, InputArray right, OutputArray disparity)=0 |
Computes disparity map for the specified stereo pair. More... | |
virtual bool | empty () const |
Returns true if the Algorithm is empty (e.g. More... | |
virtual int | getBlockSize () const =0 |
virtual String | getDefaultName () const |
Returns the algorithm string identifier. More... | |
virtual int | getDisp12MaxDiff () const =0 |
virtual int | getMinDisparity () const =0 |
virtual int | getMode () const =0 |
virtual int | getNumDisparities () const =0 |
virtual int | getP1 () const =0 |
virtual int | getP2 () const =0 |
virtual int | getPreFilterCap () const =0 |
virtual int | getSpeckleRange () const =0 |
virtual int | getSpeckleWindowSize () const =0 |
virtual int | getUniquenessRatio () const =0 |
virtual void | read (const FileNode &fn) |
Reads algorithm parameters from a file storage. More... | |
virtual void | save (const String &filename) const |
Saves the algorithm to a file. More... | |
virtual void | setBlockSize (int blockSize)=0 |
virtual void | setDisp12MaxDiff (int disp12MaxDiff)=0 |
virtual void | setMinDisparity (int minDisparity)=0 |
virtual void | setMode (int mode)=0 |
virtual void | setNumDisparities (int numDisparities)=0 |
virtual void | setP1 (int P1)=0 |
virtual void | setP2 (int P2)=0 |
virtual void | setPreFilterCap (int preFilterCap)=0 |
virtual void | setSpeckleRange (int speckleRange)=0 |
virtual void | setSpeckleWindowSize (int speckleWindowSize)=0 |
virtual void | setUniquenessRatio (int uniquenessRatio)=0 |
virtual void | write (FileStorage &fs) const |
Stores algorithm parameters in a file storage. More... | |
Static Public Member Functions | |
static Ptr< StereoSGBM > | create (int minDisparity, int numDisparities, int blockSize, 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... | |
Protected Member Functions | |
void | writeFormat (FileStorage &fs) const |
The class implements the modified H.
Hirschmuller algorithm [39] that differs from the original one as follows:
|
inlinevirtualinherited |
Clears the algorithm state.
Reimplemented in cv::FlannBasedMatcher, cv::DescriptorMatcher, and cv::cuda::DescriptorMatcher.
|
pure virtualinherited |
Computes disparity map for the specified stereo pair.
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. |
|
static |
Creates StereoSGBM object.
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.
|
inlinevirtualinherited |
Returns true if the Algorithm is empty (e.g.
in the very beginning or after unsuccessful read
Reimplemented in cv::DescriptorMatcher, cv::ml::StatModel, cv::Feature2D, cv::BaseCascadeClassifier, and cv::cuda::DescriptorMatcher.
|
pure virtualinherited |
|
virtualinherited |
Returns the algorithm string identifier.
This string is used as top level xml/yml node tag when the object is saved to a file or string.
|
pure virtualinherited |
|
pure virtualinherited |
|
pure virtual |
|
pure virtualinherited |
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtualinherited |
|
pure virtualinherited |
|
pure virtual |
|
inlinestaticinherited |
Loads algorithm from the file.
filename | Name of the file to read. |
objname | The optional name of the node to read (if empty, the first top-level node will be used) |
This is static template method of Algorithm. It's usage is following (in the case of SVM):
In order to make this method work, the derived class must overwrite Algorithm::read(const FileNode& fn).
References cv::Ptr< T >::empty(), cv::FileNode::empty(), cv::FileStorage::getFirstTopLevelNode(), and cv::FileStorage::READ.
|
inlinestaticinherited |
Loads algorithm from a String.
strModel | The string variable containing the model you want to load. |
objname | The optional name of the node to read (if empty, the first top-level node will be used) |
This is static template method of Algorithm. It's usage is following (in the case of SVM):
References CV_WRAP, cv::Ptr< T >::empty(), cv::FileNode::empty(), cv::FileStorage::getFirstTopLevelNode(), cv::FileStorage::MEMORY, and cv::FileStorage::READ.
|
inlinevirtualinherited |
Reads algorithm parameters from a file storage.
Reimplemented in cv::FlannBasedMatcher, cv::DescriptorMatcher, and cv::Feature2D.
|
inlinestaticinherited |
Reads algorithm from the file node.
This is static template method of Algorithm. It's usage is following (in the case of SVM):
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)
References cv::Ptr< T >::empty().
|
virtualinherited |
Saves the algorithm to a file.
In order to make this method work, the derived class must implement Algorithm::write(FileStorage& fs).
|
pure virtualinherited |
|
pure virtualinherited |
|
pure virtualinherited |
|
pure virtual |
|
pure virtualinherited |
|
pure virtual |
|
pure virtual |
|
pure virtual |
|
pure virtualinherited |
|
pure virtualinherited |
|
pure virtual |
|
inlinevirtualinherited |
Stores algorithm parameters in a file storage.
Reimplemented in cv::FlannBasedMatcher, cv::DescriptorMatcher, and cv::Feature2D.
|
protectedinherited |