【问题标题】:3D-Anaglyph creation algorithm, using depth map image: where to find?3D-Anaglyph 创建算法,使用深度图图像:在哪里可以找到?
【发布时间】:2011-10-10 14:31:04
【问题描述】:

我正在寻找一种通用算法来从原始图像和他的黑白深度图开始计算红色/cian 立体图(例如:http://www.swell3d.com/2008/07/turn-2d-painting-into-3d-anagl.html)

例如,在 Photoshop 中使用了该算法,但我找不到可读的解释来重现它。

谢谢

【问题讨论】:

标签: algorithm map depth anaglyph-3d


【解决方案1】:

经过一些研究,我找到了我想要的东西。 首先,我阅读了一些 Photoshop/Gimp 教程,这些教程描述了如何从两个输入中制作立体图:图像及其灰度深度图。该过程的核心是使用“置换工具”和深度图作为置换图。 几个 youtube 教程之一:http://www.youtube.com/watch?v=gfYMe_vYhu4

所以,我通过查看http://docs.gimp.org/en/plug-in-displace.html 并直接查看该工具的源代码(该方法与 Asgeir 提出的方法非常相似)获取了一些关于 Gimp 置换工具的文档。

这让我们可以通过查看深度图从输入中生成两个立体图像。通过阅读此页面http://3dtv.at/Knowhow/AnaglyphComparison_en.aspx 计算每张图像的红色和青色(“优化”矩阵是最好的)。

然后,两个图像的总和将产生最终的浮雕。谢谢大家。

【讨论】:

    【解决方案2】:

    涉及两种算法。第一个使用原始图像和深度图来生成左右图像。第二个将这些图像组合成一个红青色立体图。

    有几种方法可以完成第一部分。一种是将原始图像和纹理映射到位于 XY 平面上的精细网格上。然后根据深度图中的相应值调整网格中每个顶点的 Z 值。您基本上已经创建了带纹理的浅浮雕。然后,您使用 3D 渲染算法从水平偏移少量的两个有利位置渲染图像(主要是从一个人的左右眼观看浅浮雕的有利位置)。

    可能有一种方法可以直接左右移动像素,这是我上面描述的一个很好的快速近似值。

    获得左右图像后,您将一张通过青色滤镜,另一张通过红色滤镜。如果您有 RGB 源,这就像从一张图像中获取红色通道并将其与另一张图像中的绿色和蓝色通道组合一样简单。

    浮雕最适合搭配柔和的颜色。如果你有很强的初选,它看起来不会那么好。在开始之前,您可以使用一种算法来降低原始图像的色彩饱和度。

    【讨论】:

    • 真的,真的很有趣。我假设第一个涉及的算法是最难的部分,是的,可能有一种方法可以通过直接读取深度图的较暗/较亮区域来左右移动像素。我正在寻找这种方法,因为您描述的渲染 3d 网格的方法看起来不错,但对于我的需要来说太复杂了。第二步更容易,我已经选择了一些网站,这些网站显示了许多不同的颜色调整,以获得更好的渲染效果。现在非常感谢,但我已经完成了 50% 的工作:)
    • 显然,如果您可以发布一些有关第一步的有用链接,他们将不胜感激
    【解决方案3】:

    根据您提供的链接中的描述,我认为它类似于

    for each pixel in depthmap
        x_offset = (depthmap[x][y] / 255.0f) * MAX_PIXEL_OFFSET * DIRECTION
        output[x + x_offset][y] = color_buffer[x][y]
    
    blend output with color_buffer
    

    其中 MAX_PIXEL_OFFSET 是像素的最大偏移,DIRECTION 是一种颜色的 -1 和另一种颜色的 1。这是假设深度缓冲区是每个像素一个字节,范围 [0..255] 并且深度缓冲区中的 0 表示最大距离。

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      相关资源
      最近更新 更多