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

该类实现了修改后的 H. Hirschmuller 算法 [126],它与原始算法的不同之处如下:更多...

#include <opencv2/stereo.hpp>

cv::stereo::StereoBinarySGBM 的协作图

公共类型

枚举  {
  MODE_SGBM = 0 ,
  MODE_HH = 1
}
 
- 从 cv::stereo::StereoMatcher 继承的公共类型
枚举  {
  DISP_SHIFT = 4 ,
  DISP_SCALE = (1 << DISP_SHIFT)
}
 

公共成员函数

virtual int getBinaryKernelType () const =0
 
virtual int getMode () const =0
 
virtual int getP1 () const =0
 
virtual int getP2 () const =0
 
virtual int getPreFilterCap () const =0
 
virtual int getSpekleRemovalTechnique () const =0
 
virtual int getSubPixelInterpolationMethod () const =0
 
virtual int getUniquenessRatio () const =0
 
virtual void setBinaryKernelType (int value)=0
 
virtual void setMode (int mode)=0
 
virtual void setP1 (int P1)=0
 
virtual void setP2 (int P2)=0
 
virtual void setPreFilterCap (int preFilterCap)=0
 
virtual void setSpekleRemovalTechnique (int factor)=0
 
virtual void setSubPixelInterpolationMethod (int value)=0
 
virtual void setUniquenessRatio (int uniquenessRatio)=0
 
- 从 cv::stereo::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 Ptr< cv::stereo::StereoBinarySGBMcreate (int minDisparity, int numDisparities, int blockSize, int P1=100, int P2=1000, int disp12MaxDiff=1, int preFilterCap=0, int uniquenessRatio=5, int speckleWindowSize=400, int speckleRange=200, int mode=StereoBinarySGBM::MODE_SGBM)
 创建 StereoSGBM 对象。
 
- 从 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::Algorithm 继承的保护成员函数
void writeFormat (FileStorage &fs) const
 

详细说明

该类实现了修改后的 H. Hirschmuller 算法 [126],它与原始算法的不同之处如下

注意
  • (Python) 说明如何使用 StereoSGBM 匹配算法的示例可在 opencv_source_code/samples/python2/stereo_match.py 中找到

成员枚举文档

◆ 匿名枚举

匿名枚举
枚举器
MODE_SGBM 
MODE_HH 

成员函数文档

◆ create()

static Ptr< cv::stereo::StereoBinarySGBM > cv::stereo::StereoBinarySGBM::create ( int  minDisparity,
int  numDisparities,
int  blockSize,
int  P1 = 100,
int  P2 = 1000,
int  disp12MaxDiff = 1,
int  preFilterCap = 0,
int  uniquenessRatio = 5,
int  speckleWindowSize = 400,
int  speckleRange = 200,
int  mode = StereoBinarySGBM::MODE_SGBM 
)
static

创建 StereoSGBM 对象。

参数
minDisparity最小可能的视差值。通常,它为零,但有时校正算法会移动图像,因此需要相应地调整此参数。
numDisparities最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须可被 16 整除。
blockSize匹配块大小。它必须为奇数 >=1。通常,它应该在 3..11 范围内。
P1控制视差平滑度的第一个参数。此参数用于倾斜表面(非正向平行)的情况。
P2控制视差平滑度的第二个参数。此参数用于“解决”深度不连续性问题。值越大,视差越平滑。P1 是相邻像素之间视差变化正负 1 的惩罚。P2 是相邻像素之间视差变化大于 1 的惩罚。算法要求 P2 > P1。请参阅 stereo_match.cpp 示例,其中显示了一些合理好的 P1 和 P2 值(例如,分别为 8*number_of_image_channels*SADWindowSize*SADWindowSize 和 32*number_of_image_channels*SADWindowSize*SADWindowSize)。
disp12MaxDiff左右视差检查中允许的最大差异(以整数像素单位表示)。将其设置为非正值以禁用检查。
preFilterCap预滤波图像像素的截断值。该算法首先计算每个像素的 x 导数,并将其值裁剪为 [-preFilterCap, preFilterCap] 区间。结果值将传递给 Birchfield-Tomasi 像素成本函数。
uniquenessRatio最佳(最小)计算成本函数值应“赢得”第二最佳值的百分比边距,以将找到的匹配视为正确。通常,5-15 范围内的值就足够了。
speckleWindowSize要考虑其噪声斑点并使其无效的平滑视差区域的最大尺寸。将其设置为 0 以禁用斑点过滤。否则,将其设置为 50-200 范围内的某个值。
speckleRange每个连通组件内允许的最大视差变化。如果执行斑点过滤,则将参数设置为正值,它将隐式乘以 16。通常,1 或 2 就足够了。
mode将其设置为 StereoSGBM::MODE_HH 以运行全面的双通道动态规划算法。它将消耗 O(W*H*numDisparities) 字节,对于 640x480 立体声来说很大,而对于 HD 尺寸的图片来说则非常大。默认情况下,它被设置为 false。

第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您只需要设置 StereoSGBM::numDisparities 作为最小值。第二个构造函数允许您将每个参数设置为自定义值。

◆ getBinaryKernelType()

virtual int cv::stereo::StereoBinarySGBM::getBinaryKernelType ( ) const
纯虚

◆ getMode()

virtual int cv::stereo::StereoBinarySGBM::getMode ( ) const
纯虚

◆ getP1()

virtual int cv::stereo::StereoBinarySGBM::getP1 ( ) const
纯虚

◆ getP2()

virtual int cv::stereo::StereoBinarySGBM::getP2 ( ) const
纯虚

◆ getPreFilterCap()

virtual int cv::stereo::StereoBinarySGBM::getPreFilterCap ( ) const
纯虚

◆ getSpekleRemovalTechnique()

virtual int cv::stereo::StereoBinarySGBM::getSpekleRemovalTechnique ( ) const
纯虚

◆ getSubPixelInterpolationMethod()

virtual int cv::stereo::StereoBinarySGBM::getSubPixelInterpolationMethod ( ) const
纯虚

◆ getUniquenessRatio()

virtual int cv::stereo::StereoBinarySGBM::getUniquenessRatio ( ) const
纯虚

◆ setBinaryKernelType()

virtual void cv::stereo::StereoBinarySGBM::setBinaryKernelType ( int  value)
纯虚

◆ setMode()

virtual void cv::stereo::StereoBinarySGBM::setMode ( int  mode)
纯虚

◆ setP1()

virtual void cv::stereo::StereoBinarySGBM::setP1 ( int  P1)
纯虚

◆ setP2()

virtual void cv::stereo::StereoBinarySGBM::setP2 ( int  P2)
纯虚

◆ setPreFilterCap()

virtual void cv::stereo::StereoBinarySGBM::setPreFilterCap ( int  preFilterCap)
纯虚

◆ setSpekleRemovalTechnique()

virtual void cv::stereo::StereoBinarySGBM::setSpekleRemovalTechnique ( int  factor)
纯虚

◆ setSubPixelInterpolationMethod()

virtual void cv::stereo::StereoBinarySGBM::setSubPixelInterpolationMethod ( int  value)
纯虚

◆ setUniquenessRatio()

virtual void cv::stereo::StereoBinarySGBM::setUniquenessRatio ( int  uniquenessRatio)
纯虚

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