【基于三维标定物的相机标定】

本文介绍了在计算机视觉中,如何使用三维标定物替代二维标定板进行相机标定,详细解释了解析求解过程,以及如何利用Ceres库进行优化。着重展示了从三维点到像素坐标的转换公式和标定参数的计算方法。
摘要由CSDN通过智能技术生成

介绍

之前博客中介绍了基于二维标定板的张正友相机标定法,本文介绍基于三维标定物的相机标定。相比于二维标定板,使用三维标定物的优点是只需拍摄一张图片就能实现相机标定,效率较高,缺点是标定物成本高。

与二维标定板标定类似,三维标定物的标定也需要先进行解析求解,获得忽略畸变情况下的初值,然后再进行最优化求解。先前给出的张正友标定法C++代码中,Ceres的优化求解是支持使用三维标定物坐标进行优化求解的,本文不再赘述。这里主要介绍如何使用三维标定物坐标进行解析求解。

推导

物体坐标系中的三维点 P = [ X , Y , Z ] T P=[X,Y,Z]^T P=[X,Y,Z]T,经过旋转平移、透视投影、像素采样后,成为像素坐标系中的二维点 U = [ u , v ] T U=[u,v]^T U=[u,v]T,过程表示为 U = K [ R ∣ t ] P [ u v 1 ] ⋍ [ f x 0 c x 0 f y c y 0 0 1 ] [ r 11 r 12 r 13 t 1 r 21 r 22 r 23 t 2 r 31 r 32 r 33 t 3 ] [ X Y Z 1 ] U=K[R|t]P\\ \begin{bmatrix}u\\v\\1\end{bmatrix}\backsimeq\begin{bmatrix}f_x&0&c_x\\0&f_y&c_y\\0&0&1\end{bmatrix}\begin{bmatrix}r_{11}&r_{12}&r_{13}&t_1\\r_{21}&r_{22}&r_{23}&t_2\\r_{31}&r_{32}&r_{33}&t_3\end{bmatrix}\begin{bmatrix}X\\Y\\Z\\1\end{bmatrix} U=K[Rt]P uv1 fx000fy0cxcy1 r11r21r31r12r22r32r13r23r33t1t2t3 XYZ1 其中, K K K为内参矩阵, R R R为旋转矩阵, t t t为平移向量。
令矩阵 Q = K [ R ∣ t ] Q=K[R|t] Q=K[Rt],则有
u = q 11 X + q 12 Y + q 13 Z + q 14 q 31 X + q 32 Y + q 33 Z + q 34 v = q 21 X + q 22 Y + q 23 Z + q 24 q 31 X + q 32 Y + q 33 Z + q 34 u=\frac{q_{11}X+q_{12}Y+q_{13}Z+q_{14}}{q_{31}X+q_{32}Y+q_{33}Z+q_{34}}\\ v=\frac{q_{21}X+q_{22}Y+q_{23}Z+q_{24}}{q_{31}X+q_{32}Y+q_{33}Z+q_{34}} u=q31X+q32Y+q33Z+q34q11X+q12Y+q13Z+q14v=q31X+q32Y+q33Z+q34q21X+q22Y+q23Z+q24写成矩阵形式
[ X Y Z 1 0 0 0 0 − u X − u Y − u Z − u 0 0 0 0 X Y Z 1 − v X − v Y − v Z − v ] [ q 11 q 12 q 13 q 14 q 21 q 22 q 23 q 24 q 31 q 32 q 33 q 34 ] = 0 \begin{bmatrix}X&Y&Z&1&0&0&0&0&-uX&-uY&-uZ&-u\\0&0&0&0&X&Y&Z&1&-vX&-vY&-vZ&-v\end{bmatrix}\begin{bmatrix}q_{11}\\q_{12}\\q_{13}\\q_{14}\\q_{21}\\q_{22}\\q_{23}\\q_{24}\\q_{31}\\q_{32}\\q_{33}\\q_{34}\\\end{bmatrix}=0 [X0Y0Z0100X0Y0Z01uXvXuYvYuZvZuv] q11q12q13q14q21q22q23q24q31q32q33q34 =0同样是求解 A x = 0 Ax=0 Ax=0问题,需要六个三维点提供十二组约束来求解。求解得到 Q Q Q后,将结果除以 q 34 q_{34} q34进行归一化。将 Q Q Q其拆分为 3 × 3 3\times3 3×3 3 × 1 3\times1 3×1的矩阵,表示为 Q = [ B ∣ b ] Q=[B|b] Q=[Bb],则有 B = η K R b = η K t B = \eta KR\\b=\eta Kt B=ηKRb=ηKt其中, η \eta η为求解上述 A x = 0 Ax=0 Ax=0问题时引入的未知尺度。利用旋转矩阵的正交性,有 B B T = K R η η R T K T = η 2 K K T BB^T=KR\eta\eta R^TK^T=\eta^2KK^T BBT=KRηηRTKT=η2KKT A = B B T A=BB^T A=BBT,则有
A = [ a 11 a 12 a 13 a 12 a 22 a 23 a 13 a 23 a 33 ] = η 2 [ f x 2 + c x 2 c x c y c x c x c y f y 2 + c y 2 c y c x c y 1 ] = η 2 K K T A=\begin{bmatrix}a_{11}&a_{12}&a_{13}\\a_{12}&a_{22}&a_{23}\\a_{13}&a_{23}&a_{33}\end{bmatrix}=\eta^2\begin{bmatrix}f_x^2+c_x^2&c_xc_y&c_x\\c_xc_y&f_y^2+c_y^2&c_y\\c_x&c_y&1\end{bmatrix}=\eta^2KK^T A= a11a12a13a12a22a23a13a23a33 =η2 fx2+cx2cxcycxcxcyfy2+cy2cycxcy1 =η2KKT
可得
η = a 33 c x = a 13 / η 2 c y = a 23 / η 2 f x = a 11 / η 2 − c x 2 f y = a 22 / η 2 − c y 2 \eta=\sqrt{a_{33}}\\c_x=a_{13}/\eta^2\\c_y=a_{23}/\eta^2\\f_x=\sqrt{a_{11}/\eta^2-c_x^2}\\f_y=\sqrt{a_{22}/\eta^2-c_y^2} η=a33 cx=a13/η2cy=a23/η2fx=a11/η2cx2 fy=a22/η2cy2 求解得到内参矩阵 K K K和未知尺度 η \eta η后,可得 R = K − 1 B / η t = K − 1 b / η R=K^{-1}B/\eta\\t=K^{-1}b/\eta R=K1B/ηt=K1b/η

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值