opencv sgbm自定义最小每像素差异

时间:2015-04-28 22:56:33

标签: c++ opencv image-processing computer-vision stereo-3d

我想使用sgbm来计算差异,而不是设置我想要的每个像素值的最小和最大差异的全局参数(因此每个像素将有自己的搜索范围)。 我知道opencv中的sgbm不支持,所以我必须稍微改变它的源代码。我不太了解实现的细节,但我知道他们使用动态编程来解决它。

for( int d = minD; d < maxD; d++ )
            {
                int v = prow2[width-x-1 + d];
                int v0 = buffer[width-x-1 + d];
                int v1 = buffer[width-x-1 + d + width2];
                int c0 = std::max(0, u - v1); c0 = std::max(c0, v0 - u);
                int c1 = std::max(0, v - u1); c1 = std::max(c1, u0 - v);

                cost[x*D + d] = (CostType)(cost[x*D+d] + (std::min(c0, c1) >> diff_scale));
            }

这是source.cpp的代码示例 第240行和第250行之间的https://github.com/Itseez/opencv/blob/master/modules/calib3d/src/stereosgbm.cpp。 是否足以使用当前像素X的值更改minD和maxD。我不确定这是否会弄乱计算。如果有人对此源代码有经验,我将非常感谢您的帮助。

0 个答案:

没有答案