OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
cv::cuda::StereoBeliefPropagation 类参考抽象类

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

#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 继承的公共成员函数
 算法 ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除算法状态。
 
virtual bool empty () const
 如果算法为空(例如,在开始时或读取失败后),则返回 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 的静态公共成员函数
模板<typename _Tp >
静态 Ptr< _Tpload (const String &filename, const String &objname=String())
 从文件中加载算法。
 
模板<typename _Tp >
静态 Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 从字符串加载算法。
 
模板<typename _Tp >
静态 Ptr< _Tpread (const FileNode &fn)
 从文件节点读取算法。
 

继承的其它成员

- 继承自 cv::StereoMatcher 的公共类型
枚举 {
  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]

虚函数 void cv::cuda::StereoBeliefPropagation::compute ( 输入数组 data,
输出数组 disparity,
& stream = Stream::Null() )
纯虚函数

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

参数
data用户指定的数据代价,一个 msg_type 类型的矩阵,大小为 (图像列数 * ndisp, 图像行数)。
disparity输出视差图。如果 disparity 为空,则输出类型为 CV_16SC1。否则,类型保持不变。在 16 位有符号格式中,视差值没有小数位。
stream异步版本的

◆ compute() [2/2]

虚函数 void cv::cuda::StereoBeliefPropagation::compute ( 输入数组 left,
输入数组 right,
输出数组 disparity,
& stream )
纯虚函数

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

◆ estimateRecommendedParams()

静态函数 void cv::cuda::StereoBeliefPropagation::estimateRecommendedParams ( int width,
int height,
int & ndisp,
int & iters,
int & levels )
静态

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

◆ getDataWeight()

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

数据权重

◆ getDiscSingleJump()

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

不连续单跳

◆ getMaxDataTerm()

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

数据代价的截断值

◆ getMaxDiscTerm()

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

不连续代价的截断值

◆ getMsgType()

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

消息类型 (CV_16SC1 或 CV_32FC1)

◆ getNumIters()

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

每个级别上的 BP 迭代次数

◆ getNumLevels()

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

级别数量

◆ setDataWeight()

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

◆ setDiscSingleJump()

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

◆ setMaxDataTerm()

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

◆ setMaxDiscTerm()

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

◆ setMsgType()

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

◆ setNumIters()

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

◆ setNumLevels()

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

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