OpenCV: cv::cuda::StereoBeliefPropagation Class Reference

| OpenCV 3.4.2 Open Source Computer Vision

Public Member Functions | Static Public Member Functions | List of all members
cv::cuda::StereoBeliefPropagation Class Referenceabstract
Core functionality » OpenGL interoperability » CUDA-accelerated Computer Vision » Stereo Correspondence

Class computing stereo correspondence using the belief propagation algorithm. : More...

`#include "cudastereo.hpp"`

Inheritance diagram for cv::cuda::StereoBeliefPropagation:

## Public Member Functions
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 double | getDataWeight () const =0
| data weight More...
virtual double | getDiscSingleJump () const =0
| discontinuity single jump More...
virtual double | getMaxDataTerm () const =0
| truncation of data cost More...
virtual double | getMaxDiscTerm () const =0
| truncation of discontinuity cost More...
virtual int | getMsgType () const =0
| type for messages (CV_16SC1 or CV_32FC1) More...
virtual int | getNumIters () const =0
| number of BP iterations on each level More...
virtual int | getNumLevels () const =0
| number of levels More...
virtual void | setDataWeight (double data_weight)=0
virtual void | setDiscSingleJump (double disc_single_jump)=0
virtual void | setMaxDataTerm (double max_data_term)=0
virtual void | setMaxDiscTerm (double max_disc_term)=0
virtual void | setMsgType (int msg_type)=0
virtual void | setNumIters (int iters)=0
virtual void | setNumLevels (int levels)=0
Public Member Functions inherited from cv::StereoMatcher
virtual void | compute (InputArray left, InputArray right, OutputArray disparity)=0
| Computes disparity map for the specified stereo pair. More...
virtual int | getBlockSize () const =0
virtual int | getDisp12MaxDiff () const =0
virtual int | getMinDisparity () const =0
virtual int | getNumDisparities () const =0
virtual int | getSpeckleRange () const =0
virtual int | getSpeckleWindowSize () const =0
virtual void | setBlockSize (int blockSize)=0
virtual void | setDisp12MaxDiff (int disp12MaxDiff)=0
virtual void | setMinDisparity (int minDisparity)=0
virtual void | setNumDisparities (int numDisparities)=0
virtual void | setSpeckleRange (int speckleRange)=0
virtual void | setSpeckleWindowSize (int speckleWindowSize)=0
Public Member Functions inherited from cv::Algorithm
| Algorithm ()
virtual | ~Algorithm ()
virtual void | clear ()
| Clears the algorithm state. More...
virtual bool | empty () const
| Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read. More...
virtual String | getDefaultName () const
virtual void | read (const FileNode &fn)
| Reads algorithm parameters from a file storage. More...
virtual void | save (const String &filename) const
virtual void | write (FileStorage &fs) const
| Stores algorithm parameters in a file storage. More...
void | write (const Ptr< FileStorage > &fs, const String &name=String()) const
| 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. 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...
Static Public Member Functions inherited from cv::Algorithm
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...

## Additional Inherited Members
Public Types inherited from cv::StereoMatcher
enum | { DISP_SHIFT = 4, DISP_SCALE = (1 << DISP_SHIFT) }
Protected Member Functions inherited from cv::Algorithm
void | writeFormat (FileStorage &fs) const

## Detailed Description

Class computing stereo correspondence using the belief propagation algorithm. :

The class implements algorithm described in [Felzenszwalb2006] . It can compute own data cost (using a truncated linear model) or use a user-provided data cost.

Note
  StereoBeliefPropagation requires a lot of memory for message storage:

\[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 [Felzenszwalb2006] .

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\]

See also
  StereoMatcher

## Member Function Documentation

## ◆ compute() [1/2]

virtual void cv::cuda::StereoBeliefPropagation::compute | ( | InputArray | left,
|  | InputArray | right,
|  | OutputArray | disparity,
|  | Stream & | stream
| ) |  |
| pure virtual

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

## ◆ compute() [2/2]

virtual void cv::cuda::StereoBeliefPropagation::compute | ( | InputArray | data,
|  | OutputArray | disparity,
|  | Stream & | stream = `Stream::Null()`
| ) |  |
| pure virtual

Enables the stereo correspondence operator that finds the disparity for the specified data cost.

Parameters

  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.

## ◆ estimateRecommendedParams()

static void cv::cuda::StereoBeliefPropagation::estimateRecommendedParams | ( | int | width,
|  | int | height,
|  | int & | ndisp,
|  | int & | iters,
|  | int & | levels
| ) |  |
| static

Uses a heuristic method to compute the recommended parameters ( ndisp, iters and levels ) for the specified image size ( width and height ).

## ◆ getDataWeight()

virtual double cv::cuda::StereoBeliefPropagation::getDataWeight | ( |  | ) | const
| pure virtual

data weight

## ◆ getDiscSingleJump()

virtual double cv::cuda::StereoBeliefPropagation::getDiscSingleJump | ( |  | ) | const
| pure virtual

discontinuity single jump

## ◆ getMaxDataTerm()

virtual double cv::cuda::StereoBeliefPropagation::getMaxDataTerm | ( |  | ) | const
| pure virtual

truncation of data cost

## ◆ getMaxDiscTerm()

virtual double cv::cuda::StereoBeliefPropagation::getMaxDiscTerm | ( |  | ) | const
| pure virtual

truncation of discontinuity cost

## ◆ getMsgType()

virtual int cv::cuda::StereoBeliefPropagation::getMsgType | ( |  | ) | const
| pure virtual

type for messages (CV_16SC1 or CV_32FC1)

## ◆ getNumIters()

virtual int cv::cuda::StereoBeliefPropagation::getNumIters | ( |  | ) | const
| pure virtual

number of BP iterations on each level

## ◆ getNumLevels()

virtual int cv::cuda::StereoBeliefPropagation::getNumLevels | ( |  | ) | const
| pure virtual

number of levels

## ◆ setDataWeight()

virtual void cv::cuda::StereoBeliefPropagation::setDataWeight | ( | double | data_weight | ) |
| pure virtual

## ◆ setDiscSingleJump()

virtual void cv::cuda::StereoBeliefPropagation::setDiscSingleJump | ( | double | disc_single_jump | ) |
| pure virtual

## ◆ setMaxDataTerm()

virtual void cv::cuda::StereoBeliefPropagation::setMaxDataTerm | ( | double | max_data_term | ) |
| pure virtual

## ◆ setMaxDiscTerm()

virtual void cv::cuda::StereoBeliefPropagation::setMaxDiscTerm | ( | double | max_disc_term | ) |
| pure virtual

## ◆ setMsgType()

virtual void cv::cuda::StereoBeliefPropagation::setMsgType | ( | int | msg_type | ) |
| pure virtual

## ◆ setNumIters()

virtual void cv::cuda::StereoBeliefPropagation::setNumIters | ( | int | iters | ) |
| pure virtual

## ◆ setNumLevels()

virtual void cv::cuda::StereoBeliefPropagation::setNumLevels | ( | int | levels | ) |
| pure virtual

The documentation for this class was generated from the following file:

- cudastereo/include/opencv2/cudastereo.hpp