图像变换DIBR-3D图像变换(3D Image Warping)matlab源码
Posted MatlabQQ1575304183
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像变换DIBR-3D图像变换(3D Image Warping)matlab源码相关的知识,希望对你有一定的参考价值。
DIBR的核心就是首先利用深度信息将参考图像投影到三维欧式空间,然后再将三维空间点投影到虚拟摄像机的成像平面上。在计算机图形学中被称为3D Image Warping技术。
像素坐标系和图像坐标系
如图一所示,三维空间点在成像平面上的位置可以通过像素坐标系和图像坐标系来表示。
在直角整数像素坐标系u-v中,每个像素的坐标(u,v)T分别代表该像素在二维图像阵列中的列数和行数。由于此坐标系并未用物理单位表示出像素点在图像中的实际位置,因此需要建立以物理单位表示的图像坐标系x-y。该坐标系以图形内某一点m为原点,x和y轴分别于u,v平行。若m在u,v坐标系中的坐标为(mu,mv),每个像素在x和y轴方向上的物理尺寸为dx,dy。则图像中任意一个像素在两个坐标系下的坐标有如下关系:
(1)
用齐次坐标表示为:
(2)
针孔相机模型
我们考虑空间点到某一平面上的中心投影。令投影中心位于一个欧式坐标系的原点,而平面Z = f被称为图像平面或聚焦平面。在针孔摄像机模型下,空间坐标为X = (X, Y, Z)T的点X被映射到图像平面上的一点,该点是连接点X与投影中心的直线与图像平面的交点。图3–7对此作了说明,根据相似三角形,可以很快地算出点(X, Y, Z)T被映射到图像平面上点(fX/Z, fY /Z, f )T。因此,从世界坐标到图像坐标的中心投影是:
(3)
这是从三维欧式空间到两维欧式空间的一个映射。投影中心称为摄像机中心,也称为光心。摄像机中心到图像平面的垂线称为摄像机的主轴或主射线。而主轴与图像平面的交点称为主点,过摄像机中心平行于图像平面的平面称为摄像机的主平面。如果用其次矢量表示世界和图像点,那么中心投影可以非常简单地表示成齐次坐标之间的线性映射。
图2 针孔相机模型示意图
式子3可以写成如下矩阵形式:
(4)
该表达式中的矩阵可以写成diag(f, f, 1)[I|0],其中 diag(f, f, 1) 是对角矩阵,而
[I|0] 表示矩阵分块成一个 3 × 3 的恒等矩阵加上一个零列矢量。
我们现在引入如下记号:世界点X用 4 维齐次矢量 (X,Y,Z,1)T表示;图像点x被表示成 3 维齐次矢量的形式;P 表示 3 × 4 齐次摄像机投影矩阵,这样式4可以记为:
(5)
它定义了中心投影的针孔模型的摄像机矩阵为:
(6)
图三显示了摄像机坐标系和图像坐标系。
图3 摄像机坐标系和图像坐标系
式 3 假定图像平面的坐标原点在主点上,实际情况可能不是这样,如图3所示。此时中心投影的映射可以表示为:
(7)
其中(px, py)T是主点的坐标,该方程用齐次坐标可以表示成:
(8)
若记
(9)
则式7有一个简洁的形式:
(10)
矩阵K称为摄像机标定矩阵,在式(3–10)中我们记 (X,Y,Z,1)T为Xcam是为了强调摄像机被设定在一个欧式坐标系的原点且主轴沿着Z轴的指向,而点Xcam按此坐标系表示,这样的坐标系可以称为相机坐标系。
但有时某些 CCD 摄像机的像素可能不是正方形的。如果图像坐标以像素来测量,那么需要在每个方向上引入非等量尺度因子。具体地说,如果在x和y方向上图像坐标单位距离的像素数分别是mx和my,那么由世界坐标到像素坐标的变化由式(3–9)左乘一个附加的因子 diag(mx, my, 1)而得到。因此此类摄像机标定矩阵的一般形式是:
(11)
其中ax= fmx和ay= fmy分别把摄像机的焦距换算成x和y方向的像素量纲。同理 x 0= (u0, v0)T是用像素量纲表示的主点,它的坐标是u0= mxpx和v0= mypy。
摄像机参数
通常空间点采用不同的欧式坐标系表示,称为世界坐标系。世界坐标系和摄像机坐标系之间通过旋转和平移相联系,参看图4.
图4 世界和摄像机坐标系之间的欧式表换示意图
齐次矢量,表示世界坐标系中的某一点的坐标,而Xcam是以摄像机坐标系来表示的同一点,那么我们可以记Xcam= R(X-C),其中 C 表示摄像机中心在世界坐标系中的坐标,R是一个3 × 3 的旋转矩阵,表示摄像机坐标系的方位。这个方程在齐次坐标下可以写成:
(13)
把它与式10结合起来形成公式:
(14)
为了方便起见,通常摄像机中心不明显标出,而把世界坐标系到图像坐标系的变换表示成Xcam= RX + t。在该表示方式下摄像机矩阵简化成:
(15)
根据式14不难看出,t = RC。
3D Image Warping方程
如图5所示,设世界坐标系中某一空间的齐次矢量表示为 Pw=(Xw, Yw, Zw, 1)T,该点投影在参考视点图像平面和虚拟视点图像平面上的像素坐标分别为p1= (u1, v1, 1)T和p2= (u2, v2, 1)T。对于参考视点图像和虚拟视点图像的摄像机坐标系,其旋转矩阵和平移矩阵分别记为R1,R2和t1= R1C1,t2= R2C2。
(16)
(17)
图5 基于3D Image Warping方程的虚拟视点绘制
其中,K1,K2分别代表参考摄像机和虚拟摄像机的内参参数矩阵,而λ1,λ2则分别对应于摄像机的齐次比例缩放因子。由式16可得,空间点 Pw在三维欧式空间中坐标可以被表示为:
(18)
最终,将式18代入式17中,我们可以得到点 Pw在虚拟视点图像上的像素坐标p2:
(19)
是摄像机缩放系数,一般取值为深度值。
参考资料:
《自由视点立体电视系统的虚拟视点合成技术研究》
rows = 768 ;
cols = 1024;
numf = 1;
Color = 'Color.yuv';
Depth = 'Depth.yuv';
%Stereoscopic view generation
[L R] = cd2lr(Color,Depth,rows, cols, numf);
figure, imshow(yuv2rgb(L{1}.luma,L{1}.chroma1,L{1}.chroma2));
figure, imshow(yuv2rgb(R{1}.luma,R{1}.chroma1,R{1}.chroma2));
%Stereoscopic view generation only luma components
[L R] = cd2lrluma(Color,Depth,rows, cols, numf);
figure, imshow(uint8(L{1}.luma));
figure, imshow(uint8(R{1}.luma));
完整代码添加QQ1575304183
以上是关于图像变换DIBR-3D图像变换(3D Image Warping)matlab源码的主要内容,如果未能解决你的问题,请参考以下文章