空间六点标定法 ——湖南Zeta

本文详细介绍了空间六点标定法用于求解相机内外参数的过程,包括相机小孔成像公式、P矩阵处理、线性齐次方程组的求解方法。通过已知的空间点和像素坐标,建立方程组并求解,最终得出相机的内参矩阵K和旋转平移矩阵Rt,以及世界坐标系原点到相机平面的距离。讨论了避免奇异性以及如何从求得的解中恢复内参数和外参数的具体步骤。
摘要由CSDN通过智能技术生成

空间六点标定法

具体小孔成像原理推理过程参见如下另一篇文章
小孔成像原理和多张照片的张氏标定

相机小孔成像公式

设相机小孔成像原理为
z a ( u v 1 ) = K ( R t ) ( x y z 1 ) , z_a\begin{gathered} \begin{pmatrix} u \\ v\\1\end{pmatrix}=K\begin{pmatrix} R &t\end{pmatrix}\begin{pmatrix}x\\y\\z\\1\end{pmatrix} \end{gathered}, zauv1=K(Rt)xyz1
这里
K = ( α γ u 0 0 β v 0 0 0 1 ) , R = ( l 1 m 1 n 1 l 2 m 2 n 2 l 3 m 3 n 3 ) , t = ( x 0 ′ y 0 ′ z 0 ′ ) 。 K=\begin{pmatrix} \alpha&\gamma&u_0 \\ 0&\beta&v_0\\0&0&1\end{pmatrix},R=\begin{pmatrix} l_1&m_1&n_1\\l_2&m_2&n_2\\l_3&m_3&n_3\end{pmatrix},t=\begin{pmatrix}x'_0\\y'_0\\z'_0\end{pmatrix}。 K=α00γβ0u0v01,R=l1l2l3m1m2m3n1n2n3,t=x0y0z0
其中 t = ( x 0 ′ y 0 ′ z 0 ′ ) = − R ( x 0 y 0 z 0 ) 。 t=\begin{pmatrix}x'_0\\y'_0\\z'_0\end{pmatrix}=-R\begin{pmatrix}x_0\\y_0\\z_0\end{pmatrix}。 t=x0y0z0=Rx0y0z0
这里 ( x 0 , y 0 , z 0 ) T (x_0,y_0,z_0)^T (x0,y0,z0)T为小孔的世界坐标, z a z_a za为物点到小孔坐标系“水平”平面的距离,该“水平”平面有时可称为相机平面。

P矩阵的处理

P = K ( R t ) P=K\begin{pmatrix} R &t\end{pmatrix} P=K(Rt),则 P = ( α l 1 + γ l 2 + u 0 l 3 α m 1 + γ m 2 + u 0 m 3 α n 1 + γ n 2 + u 0 n 3 α x 0 ′ + γ y 0 ′ + u 0 z 0 ′ β l 2 + v 0 l 3 β m 2 + v 0 m 3 β n 2 + v 0 n 3 β y 0 ′ + v 0 z 0 ′ l 3 m 3 n 3 z 0 ′ ) , P=\begin{pmatrix}\alpha l_1+\gamma l_2+u_0l_3&\alpha m_1+\gamma m_2+u_0m_3& \alpha n_1+\gamma n_2+u_0n_3&\alpha x'_0+\gamma y'_0+u_0z'_0\\ \beta l_2+v_0l_3& \beta m_2+v_0m_3& \beta n_2+v_0n_3&\beta y'_0+v_0z'_0\\l_3&m_3&n_3&z'_0\end{pmatrix}, P=αl1+γl2+u0l3βl2+v0l3l3αm1+γm2+u0m3βm2+v0m3m3αn1+γn2+u0n3βn2+v0n3n3αx0+γy0+u0z0βy0+v0z0z0,
为方便讨论,记
P = ( p 1 p 2 p 3 p 10 p 4 p 5 p 6 p 11 p 7 p 8 p 9 p 12 ) , P=\begin{pmatrix}p_1&p_2&p_3&p_{10}\\p_4&p_5&p_6&p_{11}\\p_7&p_8&p_9&p_{12}\end{pmatrix}, P=p1p4p7p2p5p8p3p6p9p10p11p12 z a = l 3 x + m 3 y + n 3 z + z 0 ′ = p 7 x + p 8 y + p 9 z + p 12 , z_a=l_3x+m_3y+n_3z+z'_0=p_7x+p_8y+p_9z+p_{12}, za=l3x+m3y+n3z+z0=p7x+p8y+p9z+p12,
已知空间6点的世界坐标 ( x i , y i , z i ) T , i = 1 , 2... , 6 (x_i,y_i,z_i)^T,i=1,2...,6 (xi,yi,zi)T,i=1,2...,6以及对应的像素坐标 ( u i , v i ) T , i = 1 , 2... , 6 (u_i,v_i)^T,i=1,2...,6 (ui,vi)T,i=1,2...,6,可以根据成像公式,有
( p 7 x i + p 8 y i + p 9 z i + p 12 ) ( u i v i ) = ( p 1 x i + p 2 y i + p 3 z i + p 10 ) p 4 x i + p 5 y i + p 6 z i + p 11 ) , \begin{gathered} (p_7x_i+p_8y_i+p_9z_i+p_{12})\begin{pmatrix} u_i \\ v_i\end{pmatrix}=\begin{pmatrix} p_1x_i+p_2y_i+p_3z_i+p_{10})\\ p_4x_i+p_5y_i+p_6z_i+p_{11}\end{pmatrix}\end{gathered}, (p7xi+p8yi+p9zi+p12)(uivi)=(p1xi+p2yi+p3zi+p10)p4xi+p5yi+p6zi+p11)
也就是每点可以建立两个如上方程,6点可以建立12个如上方程构成方程组。

线性齐次方程组的求解

p 12 = z 0 ′ p_{12}=z'_0 p12=z0,可以根据 z 0 ′ z'_0 z0表示世界坐标系原点在小孔坐标系坐标的第三个分量,即世界坐标系原点到相机平面距离,可以恰当建立世界坐标系,使得 z 0 ′ ≠ 0 z'_0\neq 0 z0=0,12个如上方程构成方程组中,可以令 p 12 = 1 p_{12}=1 p12=1将齐次问题变为非齐次问题,求得一组解 P 0 P_0 P0,与真实解相差一个常系数 λ \lambda λ,可以利用 ( p 7 , p 8 , p 9 ) T = ( l 3 , m 3 , n 3 ) T (p_7,p_8,p_9)^T=(l_3,m_3,n_3)^T (p7,p8,p9)T=(l3,m3,n3)T为单位向量确定 λ \lambda λ值,从而求出 P P P。当然这里的6个点若全来自一个平面的话,会导致奇异性,使得非齐次线性方程组的解空间的维数 ≥ 1 \geq1 1,从而无法求得正确的 P P P值,所以尽量让空间点具有空间性,而不能使所有点接近于一个平面。再有更多的点可以用最小二乘方法得到的广义逆公式求出,比如令 p 12 = 1 p_{12}=1 p12=1后将齐次问题变为了非齐次问题: M ( p 1 ′ p 2 ′ . . . p 11 ′ ) = b M\begin{pmatrix}p'_1\\p'_2\\...\\p'_{11}\end{pmatrix}=b Mp1p2...p11=b,则最小二乘解为
( p 1 ′ p 2 ′ . . . p 11 ′ ) = ( M ′ M ) − 1 M ′ b \begin{pmatrix}p'_1\\p'_2\\...\\p'_{11}\end{pmatrix}=(M'M)^{-1}M'b p1p2...p11=(MM)1Mb。因 ( p 1 ′ , p 2 ′ , . . . , p 11 ′ ) T (p'_1,p'_2,...,p'_{11})^T (p1,p2,...,p11)T与真实 ( p 1 , p 2 , . . . , p 11 ) T (p_1,p_2,...,p_{11})^T (p1,p2,...,p11)T相差一个常系数 λ \lambda λ,然后利用 ( p 7 , p 8 , p 9 ) T = ( l 3 , m 3 , n 3 ) T (p_7,p_8,p_9)^T=(l_3,m_3,n_3)^T (p7,p8,p9)T=(l3,m3,n3)T为单位向量确定 λ \lambda λ

已知 P P P求内外参数

利用分块矩阵令 ( q 1 q 2 q 3 ) = ( α l 1 + γ l 2 + u 0 l 3 α m 1 + γ m 2 + u 0 m 3 α n 1 + γ n 2 + u 0 n 3 β l 2 + v 0 l 3 β m 2 + v 0 m 3 β n 2 + v 0 n 3 l 3 m 3 n 3 ) , \begin{pmatrix}q_1\\q_2\\q_3 \end{pmatrix}=\begin{pmatrix}\alpha l_1+\gamma l_2+u_0l_3&\alpha m_1+\gamma m_2+u_0m_3& \alpha n_1+\gamma n_2+u_0n_3\\ \beta l_2+v_0l_3& \beta m_2+v_0m_3& \beta n_2+v_0n_3\\l_3&m_3&n_3\end{pmatrix}, q1q2q3=αl1+γl2+u0l3βl2+v0l3l3αm1+γm2+u0m3βm2+v0m3m3αn1+γn2+u0n3βn2+v0n3n3,
则由于 ( l i , m i , n i ) T (l_i,m_i,n_i)^T (li,mi,ni)T为单位向量且相互垂直,利用内积有 u 0 = q 1 T q 3 , v 0 = q 2 T q 3 u_0=q_1^Tq_3,v_0=q_2^Tq_3 u0=q1Tq3,v0=q2Tq3,再因为 q 2 2 = β 2 + v 0 2 q_2^2=\beta^2+v_0^2 q22=β2+v02,求得 β \beta β,而 q 1 T q 2 = β γ + u 0 v 0 q_1^Tq_2=\beta \gamma+u_0v_0 q1Tq2=βγ+u0v0,从而求得 γ \gamma γ,最后由 q 1 2 = α 2 + γ 2 + u 0 2 q_1^2=\alpha^2+\gamma^2+u_0^2 q12=α2+γ2+u02求得 α \alpha α,由此求得所有内参数。
( q 1 q 2 q 3 ) = K R \begin{pmatrix}q_1\\q_2\\q_3 \end{pmatrix}=KR q1q2q3=KR,所以 R = K − 1 ( q 1 q 2 q 3 ) R=K^{-1}\begin{pmatrix}q_1\\q_2\\q_3 \end{pmatrix} R=K1q1q2q3。而 ( p 10 p 11 p 12 ) = K t \begin{pmatrix}p_{10}\\p_{11}\\p_{12} \end{pmatrix}=Kt p10p11p12=Kt,所以 t = K − 1 ( p 10 p 11 p 12 ) t=K^{-1}\begin{pmatrix}p_{10}\\p_{11}\\p_{12} \end{pmatrix} t=K1p10p11p12

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值