Class computing stereo correspondence using the belief propagation algorithm. More...
#include "cudastereo.hpp"
Public Types | |
enum | { DISP_SHIFT = 4, DISP_SCALE = (1 << DISP_SHIFT) } |
Public Member Functions | |
virtual void | clear () |
Clears the algorithm state. More... | |
virtual void | compute (InputArray left, InputArray right, OutputArray disparity, Stream &stream)=0 |
virtual void | compute (InputArray data, OutputArray disparity, Stream &stream=Stream::Null())=0 |
Enables the stereo correspondence operator that finds the disparity for the specified data cost. 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 double | getDataWeight () const =0 |
data weight More... | |
virtual String | getDefaultName () const |
Returns the algorithm string identifier. More... | |
virtual double | getDiscSingleJump () const =0 |
discontinuity single jump More... | |
virtual int | getDisp12MaxDiff () const =0 |
virtual double | getMaxDataTerm () const =0 |
truncation of data cost More... | |
virtual double | getMaxDiscTerm () const =0 |
truncation of discontinuity cost More... | |
virtual int | getMinDisparity () const =0 |
virtual int | getMsgType () const =0 |
type for messages (CV_16SC1 or CV_32FC1) More... | |
virtual int | getNumDisparities () const =0 |
virtual int | getNumIters () const =0 |
number of BP iterations on each level More... | |
virtual int | getNumLevels () const =0 |
number of levels More... | |
virtual int | getSpeckleRange () const =0 |
virtual int | getSpeckleWindowSize () 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 | setDataWeight (double data_weight)=0 |
virtual void | setDiscSingleJump (double disc_single_jump)=0 |
virtual void | setDisp12MaxDiff (int disp12MaxDiff)=0 |
virtual void | setMaxDataTerm (double max_data_term)=0 |
virtual void | setMaxDiscTerm (double max_disc_term)=0 |
virtual void | setMinDisparity (int minDisparity)=0 |
virtual void | setMsgType (int msg_type)=0 |
virtual void | setNumDisparities (int numDisparities)=0 |
virtual void | setNumIters (int iters)=0 |
virtual void | setNumLevels (int levels)=0 |
virtual void | setSpeckleRange (int speckleRange)=0 |
virtual void | setSpeckleWindowSize (int speckleWindowSize)=0 |
virtual void | write (FileStorage &fs) const |
Stores algorithm parameters in a file storage. More... | |
Static Public Member Functions | |
static void | estimateRecommendedParams (int width, int height, int &ndisp, int &iters, int &levels) |
Uses a heuristic method to compute the recommended parameters ( ndisp, iters and levels ) for the specified image size ( width and height ). 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 |
Class computing stereo correspondence using the belief propagation algorithm.
:
The class implements algorithm described in [26] . It can compute own data cost (using a truncated linear model) or use a user-provided data cost.
\[width \_ step \cdot height \cdot ndisp \cdot 4 \cdot (1 + 0.25)\]
and for data cost storage:
\[width\_step \cdot height \cdot ndisp \cdot (1 + 0.25 + 0.0625 + \dotsm + \frac{1}{4^{levels}})\]
width_step is the number of bytes in a line including padding.
StereoBeliefPropagation uses a truncated linear model for the data cost and discontinuity terms:
\[DataCost = data \_ weight \cdot \min ( \lvert Img_Left(x,y)-Img_Right(x-d,y) \rvert , max \_ data \_ term)\]
\[DiscTerm = \min (disc \_ single \_ jump \cdot \lvert f_1-f_2 \rvert , max \_ disc \_ term)\]
For more details, see [26] .
By default, StereoBeliefPropagation uses floating-point arithmetics and the CV_32FC1 type for messages. But it can also use fixed-point arithmetics and the CV_16SC1 message type for better performance. To avoid an overflow in this case, the parameters must satisfy the following requirement:
\[10 \cdot 2^{levels-1} \cdot max \_ data \_ term < SHRT \_ MAX\]
|
inlinevirtualinherited |
Clears the algorithm state.
Reimplemented in cv::FlannBasedMatcher, cv::DescriptorMatcher, and cv::cuda::DescriptorMatcher.
|
pure virtual |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
pure virtual |
Enables the stereo correspondence operator that finds the disparity for the specified data cost.
data | User-specified data cost, a matrix of msg_type type and Size(<image columns>*ndisp, <image rows>) size. |
disparity | Output disparity map. If disparity is empty, the output type is CV_16SC1 . Otherwise, the type is retained. In 16-bit signed format, the disparity values do not have fractional bits. |
stream | Stream for the asynchronous version. |
|
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. |
|
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.
|
static |
Uses a heuristic method to compute the recommended parameters ( ndisp, iters and levels ) for the specified image size ( width and height ).
|
pure virtualinherited |
|
pure virtual |
data weight
|
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 virtual |
discontinuity single jump
|
pure virtualinherited |
|
pure virtual |
truncation of data cost
|
pure virtual |
truncation of discontinuity cost
|
pure virtualinherited |
|
pure virtual |
type for messages (CV_16SC1 or CV_32FC1)
|
pure virtualinherited |
|
pure virtual |
number of BP iterations on each level
|
pure virtual |
number of levels
|
pure virtualinherited |
|
pure virtualinherited |
|
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 virtual |
|
pure virtual |
|
pure virtualinherited |
|
pure virtual |
|
pure virtual |
|
pure virtualinherited |
|
pure virtual |
|
pure virtualinherited |
|
pure virtual |
|
pure virtual |
|
pure virtualinherited |
|
pure virtualinherited |
|
inlinevirtualinherited |
Stores algorithm parameters in a file storage.
Reimplemented in cv::FlannBasedMatcher, cv::DescriptorMatcher, and cv::Feature2D.
|
protectedinherited |