如何创建视差图?

发布于 2024-12-17 08:53:21 字数 221 浏览 1 评论 0原文

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

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

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

Okay so I have implemented a stereo correspondence algorithm which takes a stereo image pair, matches a point on the left image with a point on the right image, and finds the disparity between the points. I need to write this to a disparity map.

The disparity maps I have found are grayscale images, with lighter grays meaning less depth and darker grays meaning more depth. How do I translate my set of disparities into a grayscale image like this? My disparities are very small, ie only a distance of two between pixels, how does this translate into a grayscale pixel value?

There must be a standard way of compiling disparity maps but all my searching has yielded nothing thus far.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

策马西风 2024-12-24 08:53:21

创建视差图时的一个简单解决方案是,最大距离变为黑色,即 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 有一篇很好的博客,解释了如何编程

希望有帮助!

A simple solution when creating a disparity map the largest distance becomes black ie rgb(0,0,0) and the smallest distance - which is 0 - becomes white ie rgb(255,255,255). If you divide 255 by the largest distance then you find the increment value. Finally just go through all the disparities and set each rgb value to 255 minus the disparity times the increment value. Viola, you have your disparity map.

So in your example it sounds like your largest distance is only 2 pixals (which unfortunately means your map isn't going to have a lot of detail). Anyways 255 / 2 = 127.5. This means that 127.5 is the increment value. So everywhere that the disparity is 0, the rgb value is 255 - (0 * 127.5) or rgb(255,255,255), anywhere the disparity is 1 the rgb value is 255 - (1 * 127.5), we'll round to 128 so rgb(128,128,128) and anywhere the disparity is 2 the rgb value is 255 - (2 * 127.5) or rgb(0,0,0).

Here are some more resources:

How MathWorks does it
Jay Rambhia has a good blog explaining how to program one

Hope that helps!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文