标定学习笔记(九)-- 利用空间正交约束的相机自标定和三维重建

        本文主要内容围绕西交大的舒远、谈正和丁礼如所提出的一种利用空间正交约束的相机自标定方法进行归纳概述,谨做学习用。文章提出了一种用 2 幅存在正交约束的场景图像进行三维重建的方法,该方法不需要事先标定相机的参数,就可以实现从 2 幅手持数码相机拍摄的人造规则景物图像中恢复三维结构。


1  空间正交约束的消失成像

        同一平面中相互平行和垂直的直线构成了线状纹理表面,当相机在不同角度拍摄时,纹理梯度方向将发生变换,但可以根据其消失点位置信息来恢复纹理表面朝向。图 1 所示的平面纹理和立体结构经透视成像后分别在图像上得到 2 个和 3 个消失点。

1.1  相机空间映射变换

        空间直线 L 可表示为:L=at+b ,其中 a = [l,m,n] 定义了直线 L 的方向,b=[b_x,b_y,b_z] 为 L 上的一点,空间直线 L 经相机透视投影在成像平面所得到的直线方程为:

\begin{matrix} x=f \frac{lt+b_x}{nt+b_z} \\ y =f \frac{mt + b_y}{nt + b_z} \end{matrix}

        其中,f 为相机的焦距。

        图像上的消失点,P_a = [x_a,y_a] 可定义为:

\begin{matrix} x_a = \lim_{t \to \infty}x=f\frac{l}{n} \\ y_a = \lim_{t \to \infty}y=f\frac{m}{n} \end{matrix}

        根据上面的等式可知:当空间中 2 条平行直线所在的平面与相机的成像平面不平行时,经透视投影后这 2 条直线将在像平面相较于一点,称之为消失点。移动相机使得视角发生变化,消失点位置也随之发生变化,因此可由消失点的位置变化计算出相机的参数。

1.2  消失点位置测算

        正确测算消失点的位置使相机标定的前提。常用的 Hough 变换直线提取算法,适合轮廓分明的几何结构,采用 Burns 相位编组的改进算法,在不同方向采用不同阈值的线段长度进行过滤,去除哪些由大纹理造成的短直线。

        在提取的直线束中,以直线的倾角 \theta 为 x 轴,相同倾角的直线条数为 y 轴作直方图,找到 3 个局部最大角度 \theta_i ,去除其他方向的直线段,得到对应 3 个空间正交方向的 3 组直线束,这些提取出的直线束就是空间景物中需要找到的平行直线。

        假设在空间中的某个方向经过聚类后有 n 条直线,两两相交共得到 n(n+1)/2 个交点,其几何中心为:

X = \frac{2}{n(n+1)}\sum_{k=1}^{n(n+1)/2}X_k

        考虑到图像的噪声、纹理干扰、成像畸变等对消失点位置测量的影响,采用切尾均值修正的数据优化算法对消失点位置进行修正,按各消失点样本的方差对样本数据进行排序,切尾均值定义为:

\tilde{X}=\sum_{j=pn+1}^{(1-p)n}\frac{X_j}{(1-2p)n}

        其中,n 为样本数;p 为切尾百分比,选为 5% 。

        要想得到空间某个方向在成像平面上的消失点,一般只需要找到 2 条管线的直线求其相交点即可。

2  相机参数标定

        三维空间点用齐次笛卡尔坐标可以表示为 x=[x_1,x_2,x_3]^T,根据射影几何定理,二次曲线可以用一个 3X3 的对称矩阵 C 来表示,如果点 x 在二次曲线 C 上,则满足:

x^TCx =0

        x 和 C 确定的一条直线 l=Cx 称为 x 关于二次曲线 C 的极线,x 称为 l 关于二次曲线 C 的极点。如果 w 是二次曲线 C 在成像平面上的投影,v_1,v_2,v_3 是图像上互相垂直的 3 个方向的消失点,则它们形成了一个自极三角形,如图 2 所示,且满足下列条件:

v_1^Twv_2=v_1^Tv_3=v_2^Twv_3=0

        上式为关于 w 的 3 个线性方程组,因此可由空间中 3 个相互垂直的方向在成像平面的消失点位置来计算相机内参数。

2.1  相机内参数标定

        常用的相机模型为线性针孔模型,从欧式三维空间点 \tilde{X}=[X,Y,Z]^T 到二维成像点 \tilde{x}=[x,y] 的透视投影变换可以用一个 3X4 的投影矩阵 P 描述:

\lambda \tilde{x}=P\tilde{X}=K\begin{bmatrix}R & t \end{bmatrix}\tilde{X}

        其中,\lambda 为非 0 尺度因子;R 是 3X3 的旋转矩阵;t 是 3X1 的平移向量;R,t 描述的是相机在世界坐标系的面向和位置参数;K 是相机的内参数,为 5 参数的上三角矩阵:

K = \begin{bmatrix} d_x & s & u_0 \\ 0 & d_y & v_0 \\ 0 & 0 & 1 \end{bmatrix}

        其中,u_0,v_0 表示光轴与成像面的交点坐标;d_x,d_y 为成像平面像素和空间物理长度单位之间的转换因子;s 为倾斜因子,当 d_x/d_y \approx 1 时,可认为像素为矩形,此时 s=0

        假设 v_i = [l_i,m_i,n_i](i=1,2,3) 为空间中 3 个相互正交的单位矢量,在成像平面上检测出的 3 个消失点分别为 (x_i,y_i)_{i=1,2,3},由于 v_i 相互正交,则满足 v_iv_j=0(i \neq j),即:

\left\{\begin{matrix} l_il_j+ m_im_j +n_in_j = 0\\ i \neq j\\ i,j =1,2,3 \end{matrix}\right.

        代入消失点公式,可得:

\left\{\begin{matrix} x_ix_j+y_iy_j+f^2 =0\\ i \neq j \\ i,j =1,2,3 \end{matrix}\right.

        图像采样后,空间坐标 (x,y) 与图像坐标 (u,v) 变换为:

\left\{\begin{matrix} u_i=\frac{x_i}{d_x}+u_0\\ v_i = \frac{y_i}{d_y}+v_0 \end{matrix}\right.

        带入上述消失点公式可得:

\left\{\begin{matrix} (u_i-u_0)(u_j-u_0)d_x^2+(v_i-v_0)(v_j-v_0)d_y^2 + f^2 = 0\\ i \neq j \\ i,j = 1,2,3 \end{matrix}\right.

        上述方程是空间 3 个正交方向经过相机投影后得到的约束方程,包括了相机的 u_0,v_0,d_x,d_y,f 参数。

        定义k=\frac{d_y}{d_x},f_x=\frac{f}{d_x}, f_y = \frac{f}{d_y} ,对上面的方程进行化简可得:K

\left\{\begin{matrix} (u_i-u_0)(u_j-u_0)+(v_i-v_0)(v_j-v_0)k^2+f_x=0\\ i \neq j \\ i,j = 1,2,3 \end{matrix}\right.

        从上面的推到中可知,从 1 幅成像图的 3 个消失点只能得到相机参数的 3 个约束方程。假定 K 保持不变,通过相机在不同视角拍摄同一场景的 2 幅图像,则可建立 6 个方程,该 6 个方程组合后消去 f_x 可得:

\left\{\begin{matrix} (u_2 - u_3)u_0 + (v_2 - v_3)k^2v_0 - v_1(v_2-v_3)k^2 = u_1(u_2 - u_3)\\ (u_1 - u_3)u_0 + (v_1 - v_3)k^2v_0 - v_2(v_1-v_3)k^2 = u_2(u_1 - u_3)\\ (u_5 - u_6)u_0 + (v_5 - v_6)k^2v_0 - v_4(v_5-v_6)k^2 = u_4(u_5 - u_6)\\ (u_4 - u_6)u_0 + (v_4 - v_6)k^2v_0 - v_5(v_4-v_6)k^2 = u_5(u_4 - u_6)\\ (u_1+u_2-u_5-u_6)u_0 + (v_1+v_2-v_5-v_6)k^2v_0 - (v_1v_2 - v_5v_6)k^2 = u_1u_2 - u_5u_6 \end{matrix}\right.

        上述方程组是关于 u_0,k^2v_0,k^2 的线性超定方程组,使用最小二乘法可求解出参数 u_0,v_0,k 再带入前面的方程组可以求出 f_x,f_y,f ,据此可以线性求解出相机的内参矩阵 K

2.2  相机运动参数估计

        在得出相机的内参后,还需要计算相机在 2 个不同视角的运动参数,这样才能进行场景图像的三维重建,如果采用 2 幅图像的匹配特征点和已知的内参,计算相机在 2 个视角的运动参数,其结果受噪声和图像畸变的影响很大。因此,采用从提取出的线段信息中恢复相机运动参数的方法。

        用归一化处理后的单位矢量 V_1 = K^{-1}v_1/||K_{-1}v_1||,V_2 = K_{-1}v_2 /||K_{-1}v_2|| 表示消失点 v_1 和 v_2 对应的空间直线的方向,由于相机平移并不改变消失点的位置,则旋转矩阵 R 可由相机在 2 个不同视角成像得到的 3 对消失点位置求出:

(v_2^1,v_2^2,v_2^3) = R(v_1^1,v_1^2,v_1^3)

        考虑到空间一条直线在不同视角的成像位置与相机的平移存在着对应关系,在相机内参数和旋转矩阵已知的前提下,利用关联线段来计算相机在 2 个视角的平移量 T = [T_x,T_y,T_z] 。

        经过之先提取后,找到如图 3 所示空间中 3 条相互垂直且教育一点的 Y 型结构,如建筑物最常见的一个屋顶角,假设空间点 A 的三维坐标为 X_A = [X_A,Y_A,Z_A] ,则对应的左右 2 幅图像的像点为:左 x_A,右 x_A',剩下的 B、C、O点类似。

        由空间直线 AO、BO、CO 相互垂直可得:

\left\{\begin{matrix} (X_A - X_O)(X_B - X_O) + (Y_A - Y_O)(Y_B - Y_O) + (Z_A - Z_O)(Z_B - Z_O) = 0\\ (X_A - X_O)(X_C - X_O) + (Y_A - Y_O)(Y_C - Y_O) + (Z_A - Z_O)(Z_C - Z_O) = 0\\ (X_B - X_O)(X_C - X_O) + (Y_B - Y_O)(Y_C - Y_O) + (Z_B - Z_O)(Z_C - Z_O) = 0 \end{matrix}\right.

        在相机内参和旋转矩阵都求出后,将投影矩阵 P 和 P' 展开,带入上面的方程组,可得到关于 T = [T_x, T_y ,T_z] 的 3 个未知量的方程组,求解后即可得到相机的平移量。至此,通过充分利用空间中的正交信息和对应线段求出了相机的内外参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值