如何创建视差图?

时间:2011-11-22 15:47:15

标签: java image pixel disparity-mapping

好吧所以我已经实现了立体对应算法,该算法采用立体图像对,将左图像上的点与右图像上的点匹配,并找出点之间的差异。我需要将其写入视差图。

我发现的视差图是灰度图像,较浅的灰色意味着较少的深度,较暗的灰色意味着更深的灰度。如何将我的差异集转换为这样的灰度图像?我的差异非常小,即像素之间只有两个距离,这如何转化为灰度像素值?

必须有一种标准的方法来编制视差图,但到目前为止,我所有的搜索都没有产生任何结果。

1 个答案:

答案 0 :(得分:0)

创建视差图时的一个简单解决方案,最大距离变为黑色,即rgb(0,0,0),最小距离 - 即0 - 变为白色,即rgb(255,255,255)。如果将255除以最大距离,则可以找到增量值。最后,只需检查所有差异并将每个rgb值设置为255减去差异乘以增量值。中提琴,你有你的视差图。

所以在你的例子中,听起来你的最大距离只有2个像素(不幸的是,这意味着你的地图不会有很多细节)。无论如何255/2 = 127.5。这意味着127.5是增量值。因此,在视差为0的任何地方,rgb值为255 - (0 * 127.5)或rgb(255,255,255),在视差为1且rgb值为255 - (1 * 127.5)的任何地方,我们将舍入到128所以rgb (128,128,128),在差异为2的任何地方,rgb值为255 - (2 * 127.5)或rgb(0,0,0)。

以下是一些资源:
How MathWorks does it
Jay Rambhia has a good blog explaining how to program one
希望有所帮助!