相机标定原理与张氏标定法

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

张氏相机标定心得体会——湖南泽塔{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' xOy平面,本文称该坐标系为小孔坐标系 { 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 xyz + 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}, xyz = l1l2l3m1m2m3n1n2n3 xyz + x0y0z0 ,
这里
( 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}。 x0y0z0 = 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}, xyz = l1l2l3m1m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值