类 StereoBM


  • public class StereoBM
    extends StereoMatcher
    使用块匹配算法计算立体对应的类,由 K. Konolige 引入并贡献给 OpenCV。此类实现了一种用于立体对应的块匹配算法,该算法用于从立体图像对计算视差图。它提供了微调参数的方法,例如预过滤、纹理阈值、唯一性比率和感兴趣区域 (ROI),以优化性能和准确性。
    • 字段详细信息

      • PREFILTER_NORMALIZED_RESPONSE

        public static final int PREFILTER_NORMALIZED_RESPONSE
        参见
        常量字段值
      • PREFILTER_XSOBEL

        public static final int PREFILTER_XSOBEL
        参见
        常量字段值
    • 构造函数详细信息

      • StereoBM

        protected StereoBM​(long addr)
    • 方法详细信息

      • __fromPtr__

        public static StereoBM __fromPtr__​(long addr)
      • getPreFilterType

        public int getPreFilterType()
        获取算法中当前使用的预过滤类型。
        返回
        当前预过滤类型:0 表示 PREFILTER_NORMALIZED_RESPONSE,1 表示 PREFILTER_XSOBEL。
      • setPreFilterType

        public void setPreFilterType​(int preFilterType)
        设置算法中使用的预过滤类型。
        参数
        preFilterType - 要使用的预过滤器类型。 可能的值为: - PREFILTER_NORMALIZED_RESPONSE (0):使用归一化响应进行预过滤。 - PREFILTER_XSOBEL (1):使用 X-Sobel 算子进行预过滤。 预过滤类型影响在计算视差图之前如何准备图像。 不同的预过滤方法可以增强特定的图像特征或减少噪声,从而影响视差图的质量。
      • getPreFilterSize

        public int getPreFilterSize()
        获取预过滤核的当前大小。
        返回
        当前预过滤器大小。
      • setPreFilterSize

        public void setPreFilterSize​(int preFilterSize)
        设置预过滤核的大小。
        参数
        preFilterSize - 预过滤器内核的大小。 必须为奇数整数,通常在 5 到 255 之间。 预过滤器大小决定了预过滤操作的空间范围,该操作通过归一化亮度并增强纹理来为视差计算准备图像。 较大的尺寸会减少噪声,但可能会模糊细节,而较小的尺寸会保留细节,但更容易受到噪声的影响。
      • getPreFilterCap

        public int getPreFilterCap()
        获取预过滤像素的当前截断值。
        返回
        当前预过滤上限值。
      • setPreFilterCap

        public void setPreFilterCap​(int preFilterCap)
        设置预过滤像素的截断值。
        参数
        preFilterCap - 截断值。 通常在 [1, 63] 范围内。 此值将预过滤器的输出限制为 [-preFilterCap, preFilterCap],有助于减少预过滤图像中噪声和异常值的影响。
      • getTextureThreshold

        public int getTextureThreshold()
        获取当前纹理阈值。
        返回
        当前纹理阈值。
      • setTextureThreshold

        public void setTextureThreshold​(int textureThreshold)
        设置用于过滤低纹理区域的阈值。
        参数
        textureThreshold - 阈值。 必须是非负数。 此参数会滤除纹理较低的区域,在这些区域中建立对应关系很困难,从而减少视差图中的噪声。 较高的值会更积极地进行过滤,但可能会丢弃有效信息。
      • getUniquenessRatio

        public int getUniquenessRatio()
        获取当前唯一性比率。
        返回
        当前唯一性比率。
      • setUniquenessRatio

        public void setUniquenessRatio​(int uniquenessRatio)
        设置用于过滤模糊匹配的唯一性比率。
        参数
        uniquenessRatio - 唯一性比率值。 通常在 [5, 15] 范围内,但可以从 0 到 100。 此参数确保最佳匹配明显优于次佳匹配,从而减少误报。 较高的值更严格,但可能会滤除困难区域中的有效匹配。
      • getSmallerBlockSize

        public int getSmallerBlockSize()
        获取用于纹理检查的较小块的当前大小。
        返回
        当前的较小块大小。
      • setSmallerBlockSize

        public void setSmallerBlockSize​(int blockSize)
        设置用于纹理检查的较小块的大小。
        参数
        blockSize - 较小块的大小。 必须是介于 5 和 255 之间的奇数整数。 此参数确定用于计算纹理方差的块的大小。 较小的块捕获更精细的细节,但对噪声更敏感,而较大的块更鲁棒,但可能会遗漏精细的细节。
      • getROI1

        public Rect getROI1()
        获取左图像的当前感兴趣区域 (ROI)。
        返回
        左侧图像的当前 ROI。
      • setROI1

        public void setROI1​(Rect roi1)
        设置左图像的感兴趣区域 (ROI)。
        参数
        roi1 - 左侧图像的 ROI 矩形。 通过设置 ROI,立体匹配计算仅限于指定的区域,从而通过关注图像的相关部分来提高性能并可能提高准确性。
      • getROI2

        public Rect getROI2()
        获取右图像的当前感兴趣区域 (ROI)。
        返回
        右侧图像的当前 ROI。
      • setROI2

        public void setROI2​(Rect roi2)
        设置右图像的感兴趣区域 (ROI)。
        参数
        roi2 - 右侧图像的 ROI 矩形。 与 setROI1 类似,这会将计算限制为右侧图像中的指定区域。
      • create

        public static StereoBM create​(int numDisparities,
                                      int blockSize)
        创建 StereoBM 对象
        参数
        numDisparities - 视差搜索范围。 对于每个像素,算法将找到从 0(默认最小视差)到 numDisparities 的最佳视差。 可以通过更改最小视差来移动搜索范围。
        blockSize - 算法比较的块的线性大小。 大小应为奇数(因为块以当前像素为中心)。 较大的块大小意味着更平滑,但准确性较低的视差图。 较小的块大小提供更详细的视差图,但算法更有可能找到错误的对应关系。
        返回
        指向创建的 StereoBM 对象的指针。 该函数创建一个 StereoBM 对象。 然后,您可以调用 StereoBM::compute() 来计算特定立体图像对的视差。
      • create

        public static StereoBM create​(int numDisparities)
        创建 StereoBM 对象
        参数
        numDisparities - 视差搜索范围。 对于每个像素,算法将找到从 0(默认最小视差)到 numDisparities 的最佳视差。 可以通过更改最小视差来移动搜索范围。
        返回
        指向创建的 StereoBM 对象的指针。 该函数创建一个 StereoBM 对象。 然后,您可以调用 StereoBM::compute() 来计算特定立体图像对的视差。
      • create

        public static StereoBM create()
        创建 StereoBM 对象
        返回
        指向创建的 StereoBM 对象的指针。 该函数创建一个 StereoBM 对象。 然后,您可以调用 StereoBM::compute() 来计算特定立体图像对的视差。
      • finalize

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