OpenCV  4.10.0
开源计算机视觉库
正在加载...
正在搜索...
没有匹配项
公有成员函数 | 静态公有成员函数 | 所有成员列表
cv::cuda::StereoBeliefPropagation 类参考abstract

使用置信传播算法计算立体匹配的类:更多...

#include <opencv2/cudastereo.hpp>

cv::cuda::StereoBeliefPropagation 的协作图

公有成员函数

virtual void compute (InputArray data, OutputArray disparity, Stream &stream=Stream::Null())=0
 启用立体匹配运算符,该运算符查找指定数据成本的视差。
 
virtual void compute (InputArray left, InputArray right, OutputArray disparity, Stream &stream)=0
 
virtual double getDataWeight () const =0
 数据权重
 
virtual double getDiscSingleJump () const =0
 不连续单跳
 
virtual double getMaxDataTerm () const =0
 数据成本的截断
 
virtual double getMaxDiscTerm () const =0
 不连续成本的截断
 
virtual int getMsgType () const =0
 消息类型(CV_16SC1 或 CV_32FC1)
 
virtual int getNumIters () const =0
 每个级别的 BP 迭代次数
 
virtual int getNumLevels () const =0
 级别数
 
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
 
- 从 cv::StereoMatcher 继承的公有成员函数
virtual void compute (InputArray left, InputArray right, OutputArray disparity)=0
 计算指定立体对的视差图。
 
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
 
- 从 cv::Algorithm 继承的公有成员函数
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除算法状态。
 
virtual bool empty () const
 如果 Algorithm 为空(例如,在最开始或读取失败后),则返回 true。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 从文件存储区读取算法参数。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 将算法参数存储到文件存储区。
 
void write (FileStorage &fs, const String &name) const
 

静态公有成员函数

static void estimateRecommendedParams (int width, int height, int &ndisp, int &iters, int &levels)
 使用启发式方法计算指定图像大小(宽度和高度)的推荐参数(ndisp、iters 和 levels)。
 
- 从 cv::Algorithm 继承的静态公有成员函数
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 从文件中加载算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 从字符串中加载算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 从文件节点中读取算法。
 

附加继承成员

- 从 cv::StereoMatcher 继承的公有类型
enum  {
  DISP_SHIFT = 4 ,
  DISP_SCALE = (1 << DISP_SHIFT)
}
 
- 从 cv::Algorithm 继承的受保护成员函数
void writeFormat (FileStorage &fs) const
 

详细描述

使用置信传播算法计算立体匹配的类。

该类实现了在 [87] 中描述的算法。它可以计算自己的数据成本(使用截断线性模型)或使用用户提供的数据成本。

注意
StereoBeliefPropagation 需要大量内存用于消息存储

\[width \_ step \cdot height \cdot ndisp \cdot 4 \cdot (1 + 0.25)\]

以及数据成本存储

\[width\_step \cdot height \cdot ndisp \cdot (1 + 0.25 + 0.0625 + \dotsm + \frac{1}{4^{levels}})\]

width_step 是包括填充在内的一行的字节数。

StereoBeliefPropagation 使用截断线性模型来表示数据成本和不连续项

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

有关更多详细信息,请参见 [87]

默认情况下,StereoBeliefPropagation 使用浮点运算和 CV_32FC1 类型来表示消息。但它也可以使用定点运算和 CV_16SC1 消息类型以获得更好的性能。为了避免在这种情况下发生溢出,参数必须满足以下要求

\[10 \cdot 2^{levels-1} \cdot max \_ data \_ term < SHRT \_ MAX\]

另请参见
StereoMatcher

成员函数文档

◆ compute() [1/2]

virtual void cv::cuda::StereoBeliefPropagation::compute ( InputArray  data,
OutputArray  disparity,
Stream stream = Stream::Null() 
)
纯虚函数

启用立体匹配运算符,该运算符查找指定数据成本的视差。

参数
data用户指定的数据成本,一个 msg_type 类型且大小为 Size(<图像列数>*ndisp, <图像行数>) 的矩阵。
disparity输出视差图。如果 disparity 为空,则输出类型为 CV_16SC1。否则,类型将被保留。在 16 位有符号格式中,视差值不包含小数位。
streamStream 用于异步版本。

◆ compute() [2/2]

virtual void cv::cuda::StereoBeliefPropagation::compute ( InputArray  ,
InputArray  ,
OutputArray  disparity,
Stream stream 
)
纯虚函数

这是一个重载的成员函数,为了方便提供。它与上述函数的区别仅在于它接受的参数。

◆ estimateRecommendedParams()

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

使用启发式方法计算指定图像大小(宽度和高度)的推荐参数(ndisp、iters 和 levels)。

◆ getDataWeight()

virtual double cv::cuda::StereoBeliefPropagation::getDataWeight ( ) const
纯虚函数

数据权重

◆ getDiscSingleJump()

virtual double cv::cuda::StereoBeliefPropagation::getDiscSingleJump ( ) const
纯虚函数

不连续单跳

◆ getMaxDataTerm()

virtual double cv::cuda::StereoBeliefPropagation::getMaxDataTerm ( ) const
纯虚函数

数据成本的截断

◆ getMaxDiscTerm()

virtual double cv::cuda::StereoBeliefPropagation::getMaxDiscTerm ( ) const
纯虚函数

不连续成本的截断

◆ getMsgType()

virtual int cv::cuda::StereoBeliefPropagation::getMsgType ( ) const
纯虚函数

消息类型(CV_16SC1 或 CV_32FC1)

◆ getNumIters()

virtual int cv::cuda::StereoBeliefPropagation::getNumIters ( ) const
纯虚函数

每个级别的 BP 迭代次数

◆ getNumLevels()

virtual int cv::cuda::StereoBeliefPropagation::getNumLevels ( ) const
纯虚函数

级别数

◆ setDataWeight()

virtual void cv::cuda::StereoBeliefPropagation::setDataWeight ( double  data_weight)
纯虚函数

◆ setDiscSingleJump()

virtual void cv::cuda::StereoBeliefPropagation::setDiscSingleJump ( double  disc_single_jump)
纯虚函数

◆ setMaxDataTerm()

virtual void cv::cuda::StereoBeliefPropagation::setMaxDataTerm ( double  max_data_term)
纯虚函数

◆ setMaxDiscTerm()

virtual void cv::cuda::StereoBeliefPropagation::setMaxDiscTerm ( double  max_disc_term)
纯虚函数

◆ setMsgType()

virtual void cv::cuda::StereoBeliefPropagation::setMsgType ( int  msg_type)
纯虚函数

◆ setNumIters()

virtual void cv::cuda::StereoBeliefPropagation::setNumIters ( int  iters)
纯虚函数

◆ setNumLevels()

virtual void cv::cuda::StereoBeliefPropagation::setNumLevels ( int  levels)
纯虚函数

此类的文档是从以下文件生成的