3d浮雕创建算法,使用深度图图像:在哪里找到



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

这个算法被使用,例如,在Photoshop中,但我找不到一个可读的解释来复制它。

谢谢

经过一番研究,我找到了我要找的东西。首先,我读了一些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来计算的("优化"矩阵是最好的)。

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

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

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

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

一旦你有了左边和右边的图像,你通过一个青色过滤器和一个红色过滤器。如果你有RGB源,这就像从一张图像中提取红色通道并将其与另一张图像中的绿色和蓝色通道相结合一样简单。

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

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

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..]

最新更新