该类实现了改进的H. Hirschmuller算法[128],其与原始算法的不同之处如下:更多...
#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算法[128],其与原始算法的不同之处如下
- 默认情况下,该算法是单趟的,这意味着您只考虑5个方向而不是8个。在createStereoSGBM中将mode设置为StereoSGBM::MODE_HH以运行算法的完整变体,但请注意它可能会消耗大量内存。
- 该算法匹配的是块,而不是单个像素。不过,将blockSize=1可以使块缩减为单个像素。
- 互信息代价函数未实现。相反,使用了来自[29]的更简单的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或减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 立体图像来说很大,对于高清尺寸图像来说是巨大的。默认情况下,它设置为 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 | 值 | ) |
|
|
纯虚函数 |
◆ 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 | 值 | ) |
|
|
纯虚函数 |
◆ setUniquenessRatio()
| virtual void cv::stereo::StereoBinarySGBM::setUniquenessRatio |
( |
int | uniquenessRatio | ) |
|
|
纯虚函数 |
该类的文档生成自以下文件