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

文章目录

空间六点标定法

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

相机小孔成像公式

设相机小孔成像原理为
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}, za​⎝⎛​uv1​⎠⎞​=K(R​t​)⎝⎜⎜⎛​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​γβ0​u0​v0​1​⎠⎞​,R=⎝⎛​l1​l2​l3​​m1​m2​m3​​n1​n2​n3​​⎠⎞​,t=⎝⎛​x0′​y0′​z0′​​⎠⎞​。
其中 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=⎝⎛​x0′​y0′​z0′​​⎠⎞​=−R⎝⎛​x0​y0​z0​​⎠⎞​。
这里 ( 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(R​t​),则 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​+u0​l3​βl2​+v0​l3​l3​​αm1​+γm2​+u0​m3​βm2​+v0​m3​m3​​αn1​+γn2​+u0​n3​βn2​+v0​n3​n3​​αx0′​+γy0′​+u0​z0′​βy0′​+v0​z0′​z0′​​⎠⎞​,
为方便讨论,记
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=⎝⎛​p1​p4​p7​​p2​p5​p8​​p3​p6​p9​​p10​p11​p12​​⎠⎞​,则 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​=l3​x+m3​y+n3​z+z0′​=p7​x+p8​y+p9​z+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}, (p7​xi​+p8​yi​+p9​zi​+p12​)(ui​vi​​)=(p1​xi​+p2​yi​+p3​zi​+p10​)p4​xi​+p5​yi​+p6​zi​+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 M⎝⎜⎜⎛​p1′​p2′​...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 ⎝⎜⎜⎛​p1′​p2′​...p11′​​⎠⎟⎟⎞​=(M′M)−1M′b。因 ( 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}, ⎝⎛​q1​q2​q3​​⎠⎞​=⎝⎛​αl1​+γl2​+u0​l3​βl2​+v0​l3​l3​​αm1​+γm2​+u0​m3​βm2​+v0​m3​m3​​αn1​+γn2​+u0​n3​βn2​+v0​n3​n3​​⎠⎞​,
则由于 ( 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​=q1T​q3​,v0​=q2T​q3​,再因为 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 q1T​q2​=βγ+u0​v0​,从而求得 γ \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 ⎝⎛​q1​q2​q3​​⎠⎞​=KR,所以 R = K − 1 ( q 1 q 2 q 3 ) R=K^{-1}\begin{pmatrix}q_1\\q_2\\q_3 \end{pmatrix} R=K−1⎝⎛​q1​q2​q3​​⎠⎞​。而 ( p 10 p 11 p 12 ) = K t \begin{pmatrix}p_{10}\\p_{11}\\p_{12} \end{pmatrix}=Kt ⎝⎛​p10​p11​p12​​⎠⎞​=Kt,所以 t = K − 1 ( p 10 p 11 p 12 ) t=K^{-1}\begin{pmatrix}p_{10}\\p_{11}\\p_{12} \end{pmatrix} t=K−1⎝⎛​p10​p11​p12​​⎠⎞​。

上一篇:qdoj.xyz 6.15


下一篇:廖雪峰Java12maven基础-1maven入门-2依赖管理