我正在寻找一种通用算法来计算从原始图像和他的黑白深度图开始的红色/ cian立体图(例如:http://www.swell3d.com/2008/07/turn-2d-painting-into-3d-anagl.html)
例如,在Photoshop中使用了这个algorythm,但我无法找到重现它的可读解释。
由于
答案 0 :(得分:4)
经过一些研究,我发现了我在找什么。 首先,我介绍了一些描述如何从两个输入制作浮雕的Photoshop / Gimp教程:图像及其灰度深度图。该过程的核心是使用“置换工具”和深度图作为置换贴图。 几个youtube教程之一:http://www.youtube.com/watch?v=gfYMe_vYhu4
因此,我通过查看此http://docs.gimp.org/en/plug-in-displace.html并直接查看该工具的源代码(该方法与Asgeir提出的方法非常类似),获取了一些关于Gimp的Displace Tool的文档。
这使我们可以通过查看深度图从输入中生成两个立体图像。通过阅读此页http://3dtv.at/Knowhow/AnaglyphComparison_en.aspx(“优化”矩阵是最好的矩阵)计算每个图像的红色和青色。
然后,两个图像的总和将产生最终的立体图。谢谢大家。
答案 1 :(得分:3)
涉及两种算法。第一个使用原始图像和深度图来产生左图像和右图像。第二个将这些图像组合成红色的青色立体图像。
有几种方法可以完成第一部分。一种是将原始图像和纹理映射到平面在XY平面上的精细网格上。然后根据深度图中的对应值调整网格中每个顶点的Z值。你基本上创造了一个纹理浅浮雕。然后使用3D渲染算法从水平偏移少量的两个有利位置渲染图像(基本上从人的左眼和右眼的有利位置观察浮雕)。
可能有一种方法可以直接左右移动像素,这是我上面描述的快速近似。
一旦你有左右图像,你可以通过一个青色滤镜,一个通过一个红色滤镜。如果您有RGB源,就像从一个图像中获取红色通道并将其与另一个图像中的绿色和蓝色通道组合一样简单。
浮雕最适合柔和的色彩。如果你有强烈的初选,它看起来不会那么好。您可以在开始之前使用算法降低原始图像的颜色饱和度。
答案 2 :(得分:1)
根据您提供的链接中的说明,我会假设它类似于
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表示最大距离。