![]() |
OpenCV 4.12.0
开源计算机视觉
|
使用置信传播算法计算立体匹配的类。: 更多...
#include <opencv2/cudastereo.hpp>
公共成员函数 | |
| 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) |
| 使用启发式方法计算指定图像尺寸(width 和 height)的推荐参数(ndisp、iters 和 levels)。 | |
从 cv::Algorithm 继承的静态公共成员函数 | |
| template<typename _Tp > | |
| static Ptr< _Tp > | load (const String &filename, const String &objname=String()) |
| 从文件中加载算法。 | |
| template<typename _Tp > | |
| static Ptr< _Tp > | loadFromString (const String &strModel, const String &objname=String()) |
| 从字符串加载算法。 | |
| template<typename _Tp > | |
| static Ptr< _Tp > | read (const FileNode &fn) |
| 从文件节点读取算法。 | |
附加继承成员 | |
从 cv::StereoMatcher 继承的公共类型 | |
| 枚举 | { DISP_SHIFT = 4 , DISP_SCALE = (1 << DISP_SHIFT) } |
从 cv::Algorithm 继承的受保护成员函数 | |
| void | writeFormat (FileStorage &fs) const |
使用置信传播算法计算立体匹配的类。
该类实现了 [89] 中描述的算法。它可以使用截断线性模型计算自己的数据成本,也可以使用用户提供的数据成本。
\[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)\]
欲了解更多详情,请参阅 [89] 。
默认情况下,StereoBeliefPropagation 对消息使用浮点算术和 CV_32FC1 类型。但它也可以使用定点算术和 CV_16SC1 消息类型以获得更好的性能。为了避免在这种情况下发生溢出,参数必须满足以下要求
\[10 \cdot 2^{levels-1} \cdot max \_ data \_ term < SHRT \_ MAX\]
|
纯虚函数 |
启用立体匹配运算符,该运算符根据指定的数据成本查找视差。
| data | 用户指定的数据成本,一个 msg_type 类型和 Size(<图像列数>*ndisp, <图像行数>) 大小的矩阵。 |
| disparity | 输出视差图。如果 disparity 为空,则输出类型为 CV_16SC1。否则,类型将保留。在 16 位有符号格式中,视差值没有小数位。 |
| 流 | 用于异步版本的 Stream。 |
|
纯虚函数 |
这是一个重载成员函数,为方便起见而提供。它与上述函数唯一的区别在于接受的参数。
|
static |
使用启发式方法计算指定图像尺寸(width 和 height)的推荐参数(ndisp、iters 和 levels)。
|
纯虚函数 |
数据权重
|
纯虚函数 |
不连续单跳
|
纯虚函数 |
数据代价截断
|
纯虚函数 |
不连续代价截断
|
纯虚函数 |
消息类型 (CV_16SC1 或 CV_32FC1)
|
纯虚函数 |
每个级别的BP迭代次数
|
纯虚函数 |
级别数
|
纯虚函数 |
|
纯虚函数 |
|
纯虚函数 |
|
纯虚函数 |
|
纯虚函数 |
|
纯虚函数 |
|
纯虚函数 |