随着3D电影的火爆,3D正在逐渐为渗透到人们的生活中。3D技术主要解决的是对现实世界三维空间的构建,让人能够在虚拟中有现实之感。DIBR技术即(depth image based rendering),基于深度图的图像绘制,解决的主要技术是根据当前视点的彩色数据和深度数据,得到周围任意点的视点数据。电影院的3D电影可以认为是两路数据的叠加,而裸眼3D技术需要的数据量远远超过两路,这对数据的传输产生了极大的挑战。DIBR技术旨在显示终端合成各个视点的数据,为裸眼3D提供必要的技术支撑。
DIBR技术可以看作是一种三维的空间图像变换,在计算机图形学中被称为3D Image Warping技术。核心是深度信息的利用,通过深度信息构建当前视点的三维信息,进而通过映射变换,得到其他视点的三维信息。技术理解的过程中,首先我们必须要了解图像和摄像机的模型。人眼可以看作是双目相机模型,进而我们通过人眼的基本参数,如果期望DIBR视觉效果良好,在合成过程中又必须要深入人眼的结构机理。
首先来看3D变换中涉及到的四个坐标系:
以上四个坐标系相互之间联系紧密,涉及到从物理世界到实际的图像世界的运算,而DIBR技术中深度信息的加入又增加了对现实世界的进一步理解。逐一分析四个坐标系下彩色图像和深度图像之间的转换。
首先是图像坐标系和像素坐标系。这两者之间的关系很直观的就可以看到,图像坐标系相当于像素坐标系进行了平移。一般在用matlab或者opencv进行图像操作的时候,我们使用的都是像素坐标系,即对图像的某一行或者某一列进行操作。像素坐标系不具有实际的物理意义,仅仅限于图像的操作,而在某些实际操作或者图像特征提取中,需要进行归一化或者解释实际一个像素单位代表的物理距离或者特征信息就需要将像素坐标系转换为图像坐标系。如下图所示:
转换公式如下:
u,v是像素坐标系下坐标,x,y为物理坐标,dx,dy代表一个像素间水平和垂直方向上的物理距离(单位为mm/像素),mu和mv表示平移关系。
化成齐次坐标形式如下:
摄像机坐标系与摄像机的成像模型紧密相关。目前大多数相机采用的是针孔相机模型,也有其他模型的,核心关键都是焦距和成像之间的关系,我们介绍针孔相机。上述大图中,可以看到实际物理世界中的一点P,在摄像机平面成像为P1,这里摄像机的成像和像素坐标系的平面重合。摄像机坐标系的X,Y坐标方向与图像坐标系方向相同。将三维空间拉伸为二维如下:
通过三角形关系我们可以很容易得到摄像机坐标系和图像坐标系之间的关系,右边中的f就是摄像机中最重要的一个参数,焦距。而在实际的是使用过程中,主点不一定在图像成像平面的中心,为了准确表示光轴中可能存在的偏移,引入在x和y方向上的偏移参数cx,cy;除此之外,很多情况下,单个像素在低价的成像仪上是矩形,而不是正方形,也就意味着在x方向和y方向上的焦距不一样,实际上,即使非常良好的成像也会存在不同,微软给出的一个数据库中就非常细致的给出了精准的参数,这里我们设为,fx和fy,那么空间中的X点在图像平面上的位置为:
化成齐次坐标形式为:
必须明确,上述摄像机坐标系到图像坐标系的转换方式也就是摄像机内部捕捉成像的过程,因而我们会得到常常在文献中看到的3*3的摄像机内参矩阵,即
[fx 0 cx
0 fy cy
0 0 1]
在更加复杂的成像模型中,认为,摄像机的坐标系中x和y也不一定的垂直的,于是有了一个偏移角的概念。
于是我们在微软给出的数据中会看到如下的相机内参矩阵:
矩阵中数据的单位是图像坐标系中两个水平相邻像素之间的距离单位。
我们通常所说的相机标定指的就是通过程序方法确定相机的内部参数,特别是fx和fy的确定,这两个参数直接决定后续三维重建抑或相机跟踪的精度。
世界坐标系。上述主要是相机内部的坐标系转换,即从图像的像素坐标系到成像得到的图像平面坐标系再到实际的摄像机坐标系。除此之外,还需要解决从相机坐标系到世界坐标系的转换,这就是通常我们所说的相机外参矩阵,即旋转平移关系。如下所示:
旋转矩阵为3*3的表示形式,表示XYZ三轴在世界坐标系和相机坐标系中的旋转关系,t表示平移关系,将两者结合起来就得到一个3*4的矩阵,这就是相机的外部参数矩阵。若Xc,Yc,Zc表示摄像机坐标系,Xw,Yw,Zw表示世界坐标系,两者的关系如下所示:
其中R为旋转矩阵,t为平移矩阵。
将相机的内参矩阵和外参矩阵相乘,就可以得到我们常说的投影关系。
这里(X, Y, Z)是一个点的世界坐标,(u, v)是点投影在图像平面的坐标,以像素为单位。A就是摄像机矩阵,或者内参数矩阵,这里是标准形式。(cx, cy)是基准点(通常在图像的中心),fx, fy是以像素为单位的焦距。所以如果因为某些因素对来自于摄像机的一幅图像升采样或者降采样,所有这些参数(fx, fy, cx和cy)都将被缩放(乘或者除)同样的尺度。内参数矩阵不依赖场景的视图,一旦计算出,可以被重复使用(只要焦距固定)。矩阵[R|t]就是外参数矩阵,它用来描述相机相对于一个固定场景的运动,或者相反,物体围绕相机的的刚性运动。也就是[R|t]将点(X, Y, Z)的坐标变换到某个坐标系,这个坐标系相对于摄像机来说是固定不变的。这样,我们就可以将三维空间中的任意一点,映射到图像中对应的某个像素,完成了现实世界和图像之间的对应关系,即3D Image Warping,是视点合成的基础。
视点合成分为3D映射和1D映射。上述讲述的四个坐标系之间的各种转换是3D映射的基础,它是基于对物体的世界坐标系所呈现形态的精准刻画,然后进行物理映射到不同的位置,得到不同的视觉角度,获得最佳的感官体验。而1D映射是简单的图像运算处理,它通过对深度图和原图的换算处理,得到另一视点下的图像,但这两个视点的具体距离并不确定,可以通过调整让人获得一定的3D体验。1D映射只能够完成虚拟视点与原视点在同一个基线的情况下的运算,即两个视点不能有垂直视差,而3D映射不受此限制,可以合成任意位置的视点图像,只是当视点距离比较远时,图像质量可能不好。
不论是3D映射还是1D映射,合成的新的视点图像,由于与存在遮挡,视差较大等等因素,合成的图像质量需要进一步的算法处理解决存在的各种各样的问题,其中最难解决的是空洞问题。这是由于新的视点图像会包含原视点不同的场景信息,这些信息在陌生的,需要通过算法进行补全,以获得好的体验,这也是三维成像中还需要做很多很多工作的一个领域,需要研究者不断的努力与探索。