基于单幅图像的2D转3D算法研究
最近,3D影片盛行,3D电视技术也层出不穷,3D技术在带给大家非凡的视觉冲击同时,也在告诉大家这背后隐藏了太多的商机。
目前的3D技术大体分为两种:软件技术和硬件技术。所谓硬件技术就是在拍摄影片时采用多摄像头及各种3D相关设备来拍摄片源;所谓软件技术就是将2D片源通过一定的软件转换为3D格式。
如何使用软件技术将2D转为3D呢?今天我们来研究一种基于单幅图像的3D转换算法。
首先,我们要了解一种最简单的红蓝3D技术,所谓的2D图像转3D图像,它需要两幅有视差的图像来合成一张具有3D信息的效果图,实际上就是用一幅图像包含两张图像的信息。如何实现这一点呢?我们知道在RGB颜色空间中,图像中的每个像素都可以都包含R,G,B三个颜色分量,比如:纯红色(255,0,0),纯绿色(0,255,0),纯蓝色(0,0,255)等。
纯红色(255,0,0)的补色为青色(0,255,255),这两种颜色互不包含,是互补的关系,也就是说,基于这种补色关系,我们有如下结果:
假设图像A的像素M(x,y)的RBG为(R1,G1,B1),图像B的像素N(x,y)的RGB为(R2,G2,B2),我们所需要的3D图像S对应像素O(x,y)的RGB值可计算如下(红蓝模式):
O(R,G,B) = (R1,G2,B2) 或
O(R,G,B) = (R2,G1,B1)
以上两个公式中,任何一个,都包含了其中一张图像的R信息,和另一张图像的G,B信息,由于红色的补色是青色,这两个是互不包含的关系,因此,以上公式得到的结果中就包含了两张图像的信息了。
对于红蓝眼镜,其中两个镜片的颜色正是红色和青色,这样,图像经过镜片进入我们眼睛时,实际上就包含了两幅图像信息(一幅图像的R信息,另一幅图像的G,B信息),从而产生了立体感觉。
基于以上原理,我们可以用PS,方便的将如下两张有视差的图像转换为一张红蓝3D图像:
注:以上原始图1,2像来自于网络
4,按照前文所述红蓝3D原理,将图像A,C转为S,S就是一副3D图像了。
这里附上我自己的效果图: