张氏相机标定心得体会——湖南泽塔{Zeta}
相机标定
\quad \quad 学习相机标定一年有余,发现当前网上资料或不详细,或有些有错误,虽感受不是特别好,但或多或少给我提供了很宝贵的线索。乘凉了这么久,也种棵树,让后面的朋友方便乘凉。
\quad \quad 第一次在CSDN发文,这次就以张正友的多张照片标定来展开讨论吧。
小孔成像原理
\quad \quad 在相机外为了测量标定板和标定物而建立的坐标系称为世界坐标系或物坐标系,记为 { O ; x w , y w , z w } \{O;x_w,y_w,z_w\} {
O;xw,yw,zw},这里下标 w w w表示world。因相机凸镜较小,且接收感光屏幕在固定位置强制获取成像,所以不能用凸镜成像原理来分析,这里适合用小孔成像原理来进行分析,但需要考虑畸变因素,目前认为的畸变主要包括径向畸变、切向畸变和薄棱镜畸变,因目前的普通相机(区别于鱼眼镜头和超广角镜头这种畸变较大的镜头)拍照和视频畸变处理相对较好了,本文不展开讨论畸变。后文将相机凸镜中心称为小孔 O ′ O' O′,小孔处凸镜中心轴线记为 z ′ z' z′轴,将小孔作为原点,原点处垂直于 z ′ z' z′轴的平面顺势建立 x ′ O ′ y ′ x'O'y' x′O′y′平面,本文称该坐标系为小孔坐标系 { O ′ ; x ′ , y ′ , z ′ } \{O';x',y',z'\} {
O′;x′,y′,z′}。
对于相机外一点 P P P,设其世界坐标为 ( x , y , z ) (x,y,z) (x,y,z),其小孔坐标为 ( x ′ , y ′ , z ′ ) (x',y',z') (x′,y′,z′),设 x ′ x' x′轴上正方向单位向量 i ⃗ ′ \vec i' i′在世界坐标系下坐标为 ( l 1 , m 1 , n 1 ) T (l_1,m_1,n_1)^T (l1,m1,n1)T; y ′ y' y′轴上正方向单位向量 j ⃗ ′ \vec j' j′在世界坐标为 ( l 2 , m 2 , n 2 ) T (l_2,m_2,n_2)^T (l2,m2,n2)T; z ′ z' z′轴上正方向单位向量 k ⃗ ′ \vec k' k′在世界坐标为 ( l 3 , m 3 , n 3 ) T (l_3,m_3,n_3)^T (l3,m3,n3)T;设小孔的世界坐标为 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0,y0,z0)。则根据空间解析几何相关知识有
( x y z ) = ( l 1 l 2 l 3 m 1 m 2 m 3 n 1 n 2 n 3 ) ( x ′ y ′ z ′ ) + ( x 0 y 0 z 0 ) , \begin{gathered} \quad \begin{pmatrix} x \\y\\z \end{pmatrix}=\begin{pmatrix} l_1 & l_2&l_3 \\ m_1& m_2&m_3\\n_1&n_2&n_3 \end{pmatrix}\begin{pmatrix} x' \\y'\\z' \end{pmatrix}+\begin{pmatrix} x _0\\y_0\\z_0 \end{pmatrix} \end{gathered},
xyz
=
l1m1n1l2m2n2l3m3n3
x′y′z′
+
x0y0z0
,
这里
T = ( l 1 l 2 l 3 m 1 m 2 m 3 n 1 n 2 n 3 ) \begin{gathered} T=\begin{pmatrix} l_1 & l_2&l_3 \\ m_1& m_2&m_3\\n_1&n_2&n_3 \end{pmatrix} \end{gathered} T=
l1m1n1l2m2n2l3m3n3
为过渡矩阵,是正交矩阵,所以
( x ′ y ′ z ′ ) = ( l 1 m 1 n 1 l 2 m 2 n 2 l 3 m 3 n 3 ) ( x y z ) + ( x 0 ′ y 0 ′ z 0 ′ ) , \begin{gathered} \quad \begin{pmatrix} x' \\y'\\z' \end{pmatrix}=\begin{pmatrix} l_1 & m_1&n_1 \\ l_2& m_2&n_2\\l_3&m_3&n_3 \end{pmatrix}\begin{pmatrix} x \\y\\z\end{pmatrix}+\begin{pmatrix} x' _0\\y'_0\\z'_0 \end{pmatrix} \end{gathered},
x′y′z′
=
l1l2l3m1m2m3n1n2n3
xyz
+
x0′y0′z0′
,
这里
( x 0 ′ y 0 ′ z 0 ′ ) = − ( l 1 m 1 n 1 l 2 m 2 n 2 l 3 m 3 n 3 ) ( x 0 y 0 z 0 ) 。 \begin{gathered} \begin{pmatrix} x' _0\\y'_0\\z'_0 \end{pmatrix}=-\begin{pmatrix} l_1 & m_1&n_1 \\ l_2& m_2&n_2\\l_3&m_3&n_3 \end{pmatrix}\begin{pmatrix} x_0 \\y_0\\z_0\end{pmatrix} \end{gathered}。
x0′y0′z0′
=−
l1l2l3m1m2m3n1n2n3
x0y0z0
。
可以将旋转与平移写到一个矩阵运算,得如下形式:
( x ′ y ′ z ′ ) = ( l 1 m 1 n 1 x 0 ′ l 2 m 2 n 2 y 0 ′ l 3 m 3 n 3 z 0 ′ ) ( x y z 1 ) , \begin{gathered} \quad \begin{pmatrix} x' \\y'\\z' \end{pmatrix}=\begin{pmatrix} l_1 & m_1&n_1 &x' _0\\ l_2& m_2&n_2&y'_0\\l_3&m_3&n_3&z'_0 \end{pmatrix}\begin{pmatrix} x \\y\\z\\1\end{pmatrix} \end{gathered},
x′y′z′
=
l1l2l3m1m

本文深入探讨了相机的小孔成像原理,介绍了从世界坐标到像素坐标的转换过程,并详细阐述了多张照片的张氏标定法。通过数学推导,解释了如何利用多张不同角度的照片来确定相机的内参数矩阵和单应性矩阵,最终求解相机的内参、外参以及畸变参数。内容涵盖了相机标定的基本概念和关键技术,适合对计算机视觉和图像处理感兴趣的读者学习。

2万+

被折叠的 条评论
为什么被折叠?



