该类实现了修改后的 H. Hirschmuller 算法 [126],它与原始算法的不同之处如下:更多...
#include <opencv2/stereo.hpp>
|
static Ptr< 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) |
| 创建 StereoSGBM 对象。
|
|
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) |
| 从文件节点读取算法。
|
|
该类实现了修改后的 H. Hirschmuller 算法 [126],它与原始算法的不同之处如下
- 默认情况下,算法是单通道的,这意味着您只考虑 5 个方向而不是 8 个方向。在 createStereoSGBM 中设置 mode=StereoSGBM::MODE_HH 以运行该算法的完整变体,但请注意,它可能会消耗大量内存。
- 该算法匹配块,而不是单个像素。但是,设置 blockSize=1 会将块缩减为单个像素。
- 没有实现互信息成本函数。相反,使用来自 [28] 的更简单的 Birchfield-Tomasi 子像素度量。但是,也支持彩色图像。
- 包含来自 K. Konolige 算法 StereoBM 的一些预处理和后处理步骤,例如:预过滤 (StereoBM::PREFILTER_XSOBEL 类型) 和后过滤(唯一性检查、二次插值和斑点过滤)。
- 注意
- (Python) 说明如何使用 StereoSGBM 匹配算法的示例可在 opencv_source_code/samples/python2/stereo_match.py 中找到
◆ 匿名枚举
◆ 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 | ) |
|
|
纯虚 |
该类的文档从以下文件生成