[论文实现]stereo match - 3

第四部分 平面优化

定义一个标签f,使得对每个片段clip_image002,都有对应的平面clip_image004

标签f的能量方程计算如下:

clip_image006 

其中

clip_image008

clip_image010

SN表示所有相邻的片段的集合,clip_image012是不连续性惩罚,包括边界长度和平均颜色相似性。

Loppy Belief Propagation用于计算最小能量的优化的标签。

这部分我一度犹豫究竟要不要实现出来,因为我对loopy belief propagation一点都不了解。幸运的是,论文所引用的论文已经有代码了,虽然跟实际应用很大不同,但也帮助我轻松的把那篇论文给看懂了。就是用最原始的求message的公式去求。

只是这里需要注意两个能量方程数量级差别很大,我事先进行了标准化,虽然不知道这样对不对,但对我本来的结果有很大的提高。而且不连续性惩罚我也有所修改,采用的是边界长度比例而不是边界长度。因为我自我感觉,对于两个相邻的segment,如果一个很大一个很小,相互之间的影响应该是不一样的。

大致伪代码

void StereoMatch::PlainAssign()

{

    初始化各种能量函数值

    for iter = 0 to ITERNUMBER

    {

         计算每个segment对之间的message

    }

    为每个segment的CostSP加上对应的message值,选择最小cost的disparity值。

}

起初写代码写的很顺,写到这里却觉得很艰难,速度都慢下来了。结果在修改程序的过程中,发现改动最小的也是在这块。其他模块虽然写起来行云流水,却多少有考虑不周的地方。这里我想的很仔细,虽然痛苦但结果却没怎么令我失望。只是论文讲到这里已经很概述了,我始终无法实现论文那样好的效果,应该还是有很多细节没有考虑到吧。

dispimL

本文原创,转载请注明出处

http://www.cnblogs.com/luluathena/

你可能感兴趣的:(match)