在OpenCV文档中没有充分解释Konolige的块匹配算法的应用。 CvStereoBMState的参数影响由cv :: StereoBM计算的差异的准确性。但是,没有记录这些参数。我将在下面列出这些参数并描述,我理解的内容。也许有人可以添加参数的描述,这些都不清楚。
答案 0 :(得分:3)
speckleWindowSize和speckleRange是函数cv :: filterSpeckles的参数。看一下OpenCV' documentation。 cv :: filterSpeckles用于后处理视差图。它取代了相似差异的斑点(两个相邻值的差值不超过speckleRange),其大小小于或等于speckleWindowSize(形成斑点的像素数)无效差异值(短-16或浮点-1.f) )。
答案 1 :(得分:0)
在depth map from stereo images的Python教程中对参数进行了更好的描述。参数似乎相同。
texture_threshold::过滤掉纹理不足的区域 进行可靠的匹配
散斑范围和大小:基于块的匹配器 通常会在物体边界附近产生“斑点” 匹配的窗口在一侧捕获前景,在背景捕获 在另一。在此场景中,匹配器似乎也是 在桌子上的投影纹理中找到小的虚假匹配项。 为了消除这些伪像,我们使用来对视差图像进行后处理 由speckle_size和speckle_range控制的斑点滤镜 参数。 speckle_size是像素数,低于该像素数 视差斑点被视为“斑点”。 speckle_range控制如何 价值差异悬殊,必须视为同一差异的一部分 一滴
差异数量:将窗口滑动到多少像素。 它越大,可见深度范围就越大,但更多 需要计算。
min_disparity :距x位置的偏移量 开始搜索的左侧像素的像素。
uniqueness_ratio: 另一个后过滤步骤。如果最佳匹配差异不是 远远胜过搜索范围内的所有其他差异, 像素被滤除。您可以尝试对此进行调整 texture_threshold和斑点过滤仍在通过 虚假匹配。
prefilter_size和prefilter_cap: 相位,可标准化图像亮度并增强 准备块匹配。通常您不需要调整 这些。
还请检查this ROS tutorial,以选择立体声参数。