类 StereoBM
- java.lang.Object
-
- org.opencv.core.Algorithm
-
- org.opencv.calib3d.StereoMatcher
-
- org.opencv.calib3d.StereoBM
-
public class StereoBM extends StereoMatcher
使用块匹配算法计算立体对应的类,由 K. Konolige 引入并贡献给 OpenCV。此类实现了一种用于立体对应的块匹配算法,该算法用于从立体图像对计算视差图。它提供了微调参数的方法,例如预过滤、纹理阈值、唯一性比率和感兴趣区域 (ROI),以优化性能和准确性。
-
-
字段摘要
字段 修饰符和类型 字段 描述 static intPREFILTER_NORMALIZED_RESPONSEstatic intPREFILTER_XSOBEL-
从类继承的字段 org.opencv.calib3d.StereoMatcher
DISP_SCALE, DISP_SHIFT
-
-
构造函数摘要
构造函数 修饰符 构造函数 描述 保护StereoBM(long addr)
-
方法摘要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 描述 static StereoBM__fromPtr__(long addr)static StereoBMcreate()创建 StereoBM 对象static StereoBMcreate(int numDisparities)创建 StereoBM 对象static StereoBMcreate(int numDisparities, int blockSize)创建 StereoBM 对象protected voidfinalize()intgetPreFilterCap()获取预过滤像素的当前截断值。intgetPreFilterSize()获取预过滤核的当前大小。intgetPreFilterType()获取算法中当前使用的预过滤类型。RectgetROI1()获取左图像的当前感兴趣区域 (ROI)。RectgetROI2()获取右图像的当前感兴趣区域 (ROI)。intgetSmallerBlockSize()获取用于纹理检查的较小块的当前大小。intgetTextureThreshold()获取当前纹理阈值。intgetUniquenessRatio()获取当前唯一性比率。voidsetPreFilterCap(int preFilterCap)设置预过滤像素的截断值。voidsetPreFilterSize(int preFilterSize)设置预过滤核的大小。voidsetPreFilterType(int preFilterType)设置算法中使用的预过滤类型。voidsetROI1(Rect roi1)设置左图像的感兴趣区域 (ROI)。voidsetROI2(Rect roi2)设置右图像的感兴趣区域 (ROI)。voidsetSmallerBlockSize(int blockSize)设置用于纹理检查的较小块的大小。voidsetTextureThreshold(int textureThreshold)设置用于过滤低纹理区域的阈值。voidsetUniquenessRatio(int uniquenessRatio)设置用于过滤模糊匹配的唯一性比率。-
从类继承的方法 org.opencv.calib3d.StereoMatcher
compute, getBlockSize, getDisp12MaxDiff, getMinDisparity, getNumDisparities, getSpeckleRange, getSpeckleWindowSize, setBlockSize, setDisp12MaxDiff, setMinDisparity, setNumDisparities, setSpeckleRange, setSpeckleWindowSize
-
从类继承的方法 org.opencv.core.Algorithm
clear, empty, getDefaultName, getNativeObjAddr, save
-
-
-
-
方法详细信息
-
__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
-
-