类 StereoSGBM


  • public class StereoSGBM
    extends StereoMatcher
    该类实现了改进的H. Hirschmuller算法 CITE: HH08,它与原始算法的不同之处如下:
    • 默认情况下,该算法是单遍的,这意味着您只考虑5个方向而不是8个。在createStereoSGBM中设置mode=StereoSGBM::MODE_HH以运行算法的完整版本,但要注意它可能会消耗大量内存。
    • 该算法匹配块,而不是单个像素。但是,设置blockSize=1会将块缩减为单个像素。
    • 未实现互信息代价函数。相反,使用了来自CITE: BT98的更简单的Birchfield-Tomasi亚像素度量。但是,也支持彩色图像。
    • 包含了来自K. Konolige算法StereoBM的一些预处理和后处理步骤,例如:预滤波(StereoBM::PREFILTER_XSOBEL类型)和后滤波(唯一性检查、二次插值和斑点滤波)。
    注意
    • (Python) 一个演示StereoSGBM匹配算法用法的示例可以在opencv_source_code/samples/python/stereo_match.py中找到。
    • 构造函数详情

      • StereoSGBM

        protected StereoSGBM​(long addr)
    • 方法详情

      • __fromPtr__

        public static StereoSGBM __fromPtr__​(long addr)
      • getPreFilterCap

        public int getPreFilterCap()
      • setPreFilterCap

        public void setPreFilterCap​(int preFilterCap)
      • getUniquenessRatio

        public int getUniquenessRatio()
      • setUniquenessRatio

        public void setUniquenessRatio​(int uniquenessRatio)
      • getP1

        public int getP1()
      • setP1

        public void setP1​(int P1)
      • getP2

        public int getP2()
      • setP2

        public void setP2​(int P2)
      • getMode

        public int getMode()
      • setMode

        public void setMode​(int mode)
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities,
                                        int blockSize,
                                        int P1,
                                        int P2,
                                        int disp12MaxDiff,
                                        int preFilterCap,
                                        int uniquenessRatio,
                                        int speckleWindowSize,
                                        int speckleRange,
                                        int mode)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须是16的倍数。
        blockSize - 匹配块大小。它必须是一个奇数 >=1 。通常,它应该在3..11范围内。
        P1 - 控制视差平滑度的第一个参数。见下文。
        P2 - 控制视差平滑度的第二个参数。值越大,视差越平滑。P1是相邻像素之间视差变化正负1的惩罚。P2是相邻像素之间视差变化大于1的惩罚。该算法要求P2 > P1。参见stereo_match.cpp示例,其中显示了一些合理良好的P1和P2值(例如,分别为8\*图像通道数\*blockSize\*blockSize和32\*图像通道数\*blockSize\*blockSize)。
        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。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities,
                                        int blockSize,
                                        int P1,
                                        int P2,
                                        int disp12MaxDiff,
                                        int preFilterCap,
                                        int uniquenessRatio,
                                        int speckleWindowSize,
                                        int speckleRange)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须是16的倍数。
        blockSize - 匹配块大小。它必须是一个奇数 >=1 。通常,它应该在3..11范围内。
        P1 - 控制视差平滑度的第一个参数。见下文。
        P2 - 控制视差平滑度的第二个参数。值越大,视差越平滑。P1是相邻像素之间视差变化正负1的惩罚。P2是相邻像素之间视差变化大于1的惩罚。该算法要求P2 > P1。参见stereo_match.cpp示例,其中显示了一些合理良好的P1和P2值(例如,分别为8\*图像通道数\*blockSize\*blockSize和32\*图像通道数\*blockSize\*blockSize)。
        disp12MaxDiff - 左-右视差检查中允许的最大差异(以整数像素单位)。将其设置为非正值以禁用检查。
        preFilterCap - 预滤波图像像素的截断值。该算法首先计算每个像素的x导数,并将其值裁剪到[-preFilterCap, preFilterCap]区间。结果值将传递到Birchfield-Tomasi像素代价函数。
        uniquenessRatio - 百分比的裕度,其中最佳(最小)计算代价函数值应“胜过”第二好的值,以认为找到的匹配是正确的。通常,5-15范围内的值就足够了。
        speckleWindowSize - 用于考虑视差区域平滑度并将其无效噪点滤除的最大尺寸。将其设置为 0 可禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。
        speckleRange - 每个连通分量内最大的视差变化。如果进行斑点滤波,则将参数设置为正值,它将隐式乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您只需要至少设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities,
                                        int blockSize,
                                        int P1,
                                        int P2,
                                        int disp12MaxDiff,
                                        int preFilterCap,
                                        int uniquenessRatio,
                                        int speckleWindowSize)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须是16的倍数。
        blockSize - 匹配块大小。它必须是一个奇数 >=1 。通常,它应该在3..11范围内。
        P1 - 控制视差平滑度的第一个参数。见下文。
        P2 - 控制视差平滑度的第二个参数。值越大,视差越平滑。P1是相邻像素之间视差变化正负1的惩罚。P2是相邻像素之间视差变化大于1的惩罚。该算法要求P2 > P1。参见stereo_match.cpp示例,其中显示了一些合理良好的P1和P2值(例如,分别为8\*图像通道数\*blockSize\*blockSize和32\*图像通道数\*blockSize\*blockSize)。
        disp12MaxDiff - 左-右视差检查中允许的最大差异(以整数像素单位)。将其设置为非正值以禁用检查。
        preFilterCap - 预滤波图像像素的截断值。该算法首先计算每个像素的x导数,并将其值裁剪到[-preFilterCap, preFilterCap]区间。结果值将传递到Birchfield-Tomasi像素代价函数。
        uniquenessRatio - 百分比的裕度,其中最佳(最小)计算代价函数值应“胜过”第二好的值,以认为找到的匹配是正确的。通常,5-15范围内的值就足够了。
        speckleWindowSize - 用于考虑视差区域平滑度并将其无效噪点滤除的最大尺寸。将其设置为 0 可禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,则将参数设置为正值,它将隐式乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您只需要至少设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities,
                                        int blockSize,
                                        int P1,
                                        int P2,
                                        int disp12MaxDiff,
                                        int preFilterCap,
                                        int uniquenessRatio)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须是16的倍数。
        blockSize - 匹配块大小。它必须是一个奇数 >=1 。通常,它应该在3..11范围内。
        P1 - 控制视差平滑度的第一个参数。见下文。
        P2 - 控制视差平滑度的第二个参数。值越大,视差越平滑。P1是相邻像素之间视差变化正负1的惩罚。P2是相邻像素之间视差变化大于1的惩罚。该算法要求P2 > P1。参见stereo_match.cpp示例,其中显示了一些合理良好的P1和P2值(例如,分别为8\*图像通道数\*blockSize\*blockSize和32\*图像通道数\*blockSize\*blockSize)。
        disp12MaxDiff - 左-右视差检查中允许的最大差异(以整数像素单位)。将其设置为非正值以禁用检查。
        preFilterCap - 预滤波图像像素的截断值。该算法首先计算每个像素的x导数,并将其值裁剪到[-preFilterCap, preFilterCap]区间。结果值将传递到Birchfield-Tomasi像素代价函数。
        uniquenessRatio - 最佳(最小)计算出的代价函数值应该比第二佳值“胜出”的百分比裕度,以认为找到的匹配正确。通常,5-15 范围内的值就足够了。并将其无效。将其设置为 0 可禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,则将参数设置为正值,它将隐式乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您只需要至少设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities,
                                        int blockSize,
                                        int P1,
                                        int P2,
                                        int disp12MaxDiff,
                                        int preFilterCap)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须是16的倍数。
        blockSize - 匹配块大小。它必须是一个奇数 >=1 。通常,它应该在3..11范围内。
        P1 - 控制视差平滑度的第一个参数。见下文。
        P2 - 控制视差平滑度的第二个参数。值越大,视差越平滑。P1是相邻像素之间视差变化正负1的惩罚。P2是相邻像素之间视差变化大于1的惩罚。该算法要求P2 > P1。参见stereo_match.cpp示例,其中显示了一些合理良好的P1和P2值(例如,分别为8\*图像通道数\*blockSize\*blockSize和32\*图像通道数\*blockSize\*blockSize)。
        disp12MaxDiff - 左-右视差检查中允许的最大差异(以整数像素单位)。将其设置为非正值以禁用检查。
        preFilterCap - 预滤波图像像素的截断值。算法首先计算每个像素的 x 导数,并将其值裁剪到 [-preFilterCap, preFilterCap] 区间。结果值将传递给 Birchfield-Tomasi 像素代价函数。“胜出”的百分比裕度,以认为找到的匹配正确。通常,5-15 范围内的值就足够了。并将其无效。将其设置为 0 可禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,则将参数设置为正值,它将隐式乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您只需要至少设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities,
                                        int blockSize,
                                        int P1,
                                        int P2,
                                        int disp12MaxDiff)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须是16的倍数。
        blockSize - 匹配块大小。它必须是一个奇数 >=1 。通常,它应该在3..11范围内。
        P1 - 控制视差平滑度的第一个参数。见下文。
        P2 - 控制视差平滑度的第二个参数。值越大,视差越平滑。P1是相邻像素之间视差变化正负1的惩罚。P2是相邻像素之间视差变化大于1的惩罚。该算法要求P2 > P1。参见stereo_match.cpp示例,其中显示了一些合理良好的P1和P2值(例如,分别为8\*图像通道数\*blockSize\*blockSize和32\*图像通道数\*blockSize\*blockSize)。
        disp12MaxDiff - 在左右视差检查中允许的最大差异(以整数像素单位)。将其设置为非正值可禁用检查。计算每个像素的 x 导数,并将其值裁剪到 [-preFilterCap, preFilterCap] 区间。结果值将传递给 Birchfield-Tomasi 像素代价函数。“胜出”的百分比裕度,以认为找到的匹配正确。通常,5-15 范围内的值就足够了。并将其无效。将其设置为 0 可禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,则将参数设置为正值,它将隐式乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您只需要至少设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities,
                                        int blockSize,
                                        int P1,
                                        int P2)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须是16的倍数。
        blockSize - 匹配块大小。它必须是一个奇数 >=1 。通常,它应该在3..11范围内。
        P1 - 控制视差平滑度的第一个参数。见下文。
        P2 - 控制视差平滑度的第二个参数。值越大,视差越平滑。P1 是相邻像素之间视差变化加一或减一的惩罚。P2 是相邻像素之间视差变化大于 1 的惩罚。算法要求 P2 > P1。请参阅 stereo_match.cpp 示例,其中显示了一些相当不错的 P1 和 P2 值(例如,分别为 8\*number_of_image_channels\*blockSize\*blockSize 和 32\*number_of_image_channels\*blockSize\*blockSize)。视差检查。将其设置为非正值可禁用检查。计算每个像素的 x 导数,并将其值裁剪到 [-preFilterCap, preFilterCap] 区间。结果值将传递给 Birchfield-Tomasi 像素代价函数。“胜出”的百分比裕度,以认为找到的匹配正确。通常,5-15 范围内的值就足够了。并将其无效。将其设置为 0 可禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,则将参数设置为正值,它将隐式乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您只需要至少设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities,
                                        int blockSize,
                                        int P1)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须是16的倍数。
        blockSize - 匹配块大小。它必须是一个奇数 >=1 。通常,它应该在3..11范围内。
        P1 - 控制视差平滑度的第一个参数。见下文。值越大,视差越平滑。P1 是相邻像素之间视差变化加一或减一的惩罚。P2 是相邻像素之间视差变化大于 1 的惩罚。算法要求 P2 > P1。请参阅 stereo_match.cpp 示例,其中显示了一些相当不错的 P1 和 P2 值(例如,分别为 8\*number_of_image_channels\*blockSize\*blockSize 和 32\*number_of_image_channels\*blockSize\*blockSize)。视差检查。将其设置为非正值可禁用检查。计算每个像素的 x 导数,并将其值裁剪到 [-preFilterCap, preFilterCap] 区间。结果值将传递给 Birchfield-Tomasi 像素代价函数。“胜出”的百分比裕度,以认为找到的匹配正确。通常,5-15 范围内的值就足够了。并将其无效。将其设置为 0 可禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,则将参数设置为正值,它将隐式乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您只需要至少设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities,
                                        int blockSize)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须是16的倍数。
        blockSize - 匹配块大小。必须是大于等于 1 的奇数。通常,它应该在 3..11 范围内。视差越平滑。P1 是相邻像素之间视差变化正负 1 的惩罚。P2 是相邻像素之间视差变化大于 1 的惩罚。算法要求 P2 > P1。请参阅 stereo_match.cpp 示例,其中显示了一些合理良好的 P1 和 P2 值(例如分别为 8\*number_of_image_channels\*blockSize\*blockSize 和 32\*number_of_image_channels\*blockSize\*blockSize)。视差检查。将其设置为非正值以禁用检查。计算每个像素的 x 导数,并将其值裁剪到 [-preFilterCap, preFilterCap] 区间。结果值将传递给 Birchfield-Tomasi 像素代价函数。值应该“胜过”第二好的值才能认为找到的匹配是正确的。通常,5-15 范围内的值就足够了。并使之无效。将其设置为 0 以禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,将参数设置为正值,它将隐式地乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您至少只需要设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity,
                                        int numDisparities)
        创建StereoSGBM对象
        参数
        minDisparity - 最小视差值。通常为零,但有时校正算法可能会移动图像,因此需要相应地调整此参数。
        numDisparities - 最大视差减去最小视差。该值始终大于零。在当前实现中,此参数必须能被 16 整除。通常,它应该在 3..11 范围内。视差越平滑。P1 是相邻像素之间视差变化正负 1 的惩罚。P2 是相邻像素之间视差变化大于 1 的惩罚。算法要求 P2 > P1。请参阅 stereo_match.cpp 示例,其中显示了一些合理良好的 P1 和 P2 值(例如分别为 8\*number_of_image_channels\*blockSize\*blockSize 和 32\*number_of_image_channels\*blockSize\*blockSize)。视差检查。将其设置为非正值以禁用检查。计算每个像素的 x 导数,并将其值裁剪到 [-preFilterCap, preFilterCap] 区间。结果值将传递给 Birchfield-Tomasi 像素代价函数。值应该“胜过”第二好的值才能认为找到的匹配是正确的。通常,5-15 范围内的值就足够了。并使之无效。将其设置为 0 以禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,将参数设置为正值,它将隐式地乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您至少只需要设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create​(int minDisparity)
        创建StereoSGBM对象
        参数
        minDisparity - 最小可能的视差值。通常为零,但有时校正算法会移动图像,因此需要相应地调整此参数。零。在当前实现中,此参数必须能被 16 整除。通常,它应该在 3..11 范围内。视差越平滑。P1 是相邻像素之间视差变化正负 1 的惩罚。P2 是相邻像素之间视差变化大于 1 的惩罚。算法要求 P2 > P1。请参阅 stereo_match.cpp 示例,其中显示了一些合理良好的 P1 和 P2 值(例如分别为 8\*number_of_image_channels\*blockSize\*blockSize 和 32\*number_of_image_channels\*blockSize\*blockSize)。视差检查。将其设置为非正值以禁用检查。计算每个像素的 x 导数,并将其值裁剪到 [-preFilterCap, preFilterCap] 区间。结果值将传递给 Birchfield-Tomasi 像素代价函数。值应该“胜过”第二好的值才能认为找到的匹配是正确的。通常,5-15 范围内的值就足够了。并使之无效。将其设置为 0 以禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,将参数设置为正值,它将隐式地乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您至少只需要设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • create

        public static StereoSGBM create()
        创建 StereoSGBM 对象 校正算法可能会移动图像,因此需要相应地调整此参数。零。在当前实现中,此参数必须能被 16 整除。通常,它应该在 3..11 范围内。视差越平滑。P1 是相邻像素之间视差变化正负 1 的惩罚。P2 是相邻像素之间视差变化大于 1 的惩罚。算法要求 P2 > P1。请参阅 stereo_match.cpp 示例,其中显示了一些合理良好的 P1 和 P2 值(例如分别为 8\*number_of_image_channels\*blockSize\*blockSize 和 32\*number_of_image_channels\*blockSize\*blockSize)。视差检查。将其设置为非正值以禁用检查。计算每个像素的 x 导数,并将其值裁剪到 [-preFilterCap, preFilterCap] 区间。结果值将传递给 Birchfield-Tomasi 像素代价函数。值应该“胜过”第二好的值才能认为找到的匹配是正确的。通常,5-15 范围内的值就足够了。并使之无效。将其设置为 0 以禁用斑点滤波。否则,将其设置为 50-200 范围内的某个值。滤波,将参数设置为正值,它将隐式地乘以 16。通常,1 或 2 就足够了。算法。它将消耗 O(W\*H\*numDisparities) 字节,对于 640x480 立体图像来说很大,对于高清图像来说则非常大。默认情况下,它设置为 false。第一个构造函数使用所有默认参数初始化 StereoSGBM。因此,您至少只需要设置 StereoSGBM::numDisparities。第二个构造函数允许您将每个参数设置为自定义值。
        返回值
        自动生成
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        重写
        finalize 在类 StereoMatcher
        抛出
        java.lang.Throwable