2

好的,所以我已经实现了一个立体对应算法,它采用立体图像对,将左侧图像上的一个点与右侧图像上的一个点进行匹配,并找到这些点之间的差异。我需要将其写入视差图。

我发现的视差图是灰度图像,浅灰色表示深度较浅,深灰色表示深度较深。如何将我的一组视差转换为这样的灰度图像?我的差异非常小,即像素之间只有两个距离,这如何转化为灰度像素值?

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

4

1 回答 1

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)。

这里有一些更多的资源:
MathWorks 是如何做到
的 Jay Rambhia 有一个很好的博客,解释了如何编程
希望能有所帮助!

于 2015-06-30T04:14:31.737 回答