3

我目前正在尝试了解 OpenCV 的 SGBM 视差算法是如何工作的,我知道像素成本计算遵循 Birchfield 和 Tomasi 算法。 http://robotics.stanford.edu/~birch/publications/dissimilarity_pami1998.pdf

我似乎无法弄清楚什么是 clipTab[TAB_SIZE] 以及为什么以这种方式填充。

int ftzero = std::max(params.preFilterCap, 15) | 1;
PixType clipTab[TAB_SIZE];

for( k = 0; k < TAB_SIZE; k++ )
    clipTab[k] = (PixType)(std::min(std::max(k - TAB_OFS, -ftzero), ftzero) + ftzero);

可以使用此链接找到完整的代码:

https://github.com/opencv/opencv/blob/master/modules/calib3d/src/stereosgbm.cpp

4

1 回答 1

0

它是 sobel 过滤器后剪辑运算符的剪辑选项卡。

它将在calcPixelCostBT期间使用。在我看来,如果您注意到“tab += tabOfs;”,选项卡的有用价值只是索引形式(TAB_OFS - ftzero)到(TAB_OFS + ftzero)。在calcPixelCostBT期间。该区域的tab值为[0, 2 * ftzero],可以从clip规则中得到。 剪辑规则:

于 2017-11-20T03:36:51.603 回答