相机标定:关键点法 vs 直接法

相机标定中最常见的方法是关键点法,比如 OpenCV 和 MatLab 中使用棋盘格、圆阵列等二维图案进行标定,这上面的棋盘格角点和圆心就是所谓的关键点。虽然关键点法有很多优点,但在某些情况下容易遇到标定数据不够的情况,因此便有了基于光度误差的直接法相机标定。本文介绍了关键点法和直接法的大致原理和优缺点。

关键点法原理

关键点法计算相机参数的原理简单来说就是最小化重投影误差。

相机成像过程可以表示为:
u = π ( T ( x ) ) \bold{u} = \pi\bigl(T(\bold{x})\bigr) u=π(T(x))
其中 x = [ x   y   z ] T \bold{x}=[x\ y\ z]^T x=[x y z]T 为世界坐标系下的三维点坐标, u = [ u   v ] T \bold{u}=[u\ v]^T u=[u v]T 为图像上的二维点坐标。

T ( ) T() T() 为三维刚体变换,即旋转平移,包含 6 个自由度,优化过程中一般用旋转向量/四元数+平移向量来表示,其作用是将三位坐标从世界坐标系转换到相机坐标系下。在关键点法中,世界坐标系建立在标定板平面上,所以这里的旋转平移也可以理解为标定板在相机坐标系下的位姿,即外参。

π ( ) \pi() π() 为相机投影函数,可以拆分为针孔投影 P ( ) P() P() 和畸变 D ( ) D() D() 两个过程: π ( x ′ ) = D ( P ( x ′ ) ) \pi(\bold{x}') = D\bigl( P(\bold{x}') \bigr) π(x)=D(P(x)),参数有焦距 ( f x , f y f_x, f_y fx,fy)、主点 ( c x , c y c_x, c_y cx,cy) 和畸变参数 (与畸变模型相关),统称相机内参。

内外参可以通过一些算法或者先验信息获得初始估计,而标定板上的关键点三维坐标是已知的,投影到图像上与提取到的关键点实际图像坐标 ( u ′ u' u) 作差,可以构建优化问题:
arg min ⁡ { 1 2 ∑ [ π ( T ( x ) ) − u ′ ] 2 } \argmin \Bigl\{\dfrac{1}{2}\sum{\Big[ \pi\bigl(T(\bold{x})\bigr) - u' \Bigr]^2}\Bigr\} argmin{21[π(T(x))u]2}
通过非线性优化即可得到精确的内外参。

优点:关键点法模型较为简单,计算也相对简单、快速。特制的标定板图案能够非常容易地进行关键点提取和解码 (识别每个关键点的唯一 ID)。关键点的提取通常不容易受光照、噪声等因素影响。

缺点:关键点本身是一种稀疏特征,浪费了一些有用的图像信息。比如棋盘格标定板图像中,有用的其实不只有角点,方格的每条边都有很强的梯度信息能够用于标定,但它们在关键点法中被忽略了。因此关键点法的图像信息利用率较低,往往需要通过大量采图来弥补。

直接法原理

直接法这个词来源于 SLAM (基于直接法的前端跟踪),原理与光流比较相近,即最小化光度误差。

记前述相机成像过程为 u = L ( x ) = π ( T ( x ) ) \bold{u} = L(\bold{x}) = \pi\bigl(T(\bold{x})\bigr) u=L(x)=π(T(x))。显然当 x \bold{x} x 存在 z = 0 z=0 z=0 的约束时, L ( ) L() L() 是可逆的,记为 x = L − 1 ( u ) \bold{x} = L^{-1}(\bold{u}) x=L1(u)。也就是说,已知内外参的情况下,图像上的任意点可以找到其在标定板上的坐标。而标定板图案是已知的,可以表示为: v x = I b ( x ) v_x = I_b(\bold{x}) vx=Ib(x),即给定其上任意点坐标可以得到具体像素值。因此我们可以得到图像上每个点“应该”的像素值:
v u = I b ( L − 1 ( u ) ) v_u = I_b(\bold{L^{-1}(\bold{u})}) vu=Ib(L1(u))
基于上式能够仿真标定图像,而在直接法标定中则可以与实际像素值 ( v u ′ v_u' vu) 作差 (即光度误差),构建优化问题:
arg min ⁡ { 1 2 ∑ [ v u − v u ′ ] 2 } \argmin \Bigl\{\dfrac{1}{2}\sum{\Big[ v_u - v_u' \Bigr]^2}\Bigr\} argmin{21[vuvu]2}
理论上图像上每个点都能提供光度误差信息 (不考虑标定板未覆盖的区域),但实际上灰度梯度较小的点对优化问题求解基本没有贡献,反倒平白增加计算量。因此可以先对标定图像做梯度分析 (Sobel),只将梯度较大的点和它们附近的点加入到优化问题求解中。

优点:直接法能够充分使用图像像素信息,提高图像利用效率,从而降低标定图像采集量的要求。另外,通过合理地建模,直接法还可以解算相机曝光的相关参数 (曝光时间、卷帘曝光的行延迟等)。

缺点:由于常见的畸变模型 (Brown、KB) 的逆运算没有解析解,去畸变过程 ( L − 1 ( ) L^{-1}() L1() 函数的一部分) 需要迭代计算,而且每张图中的残差数量远大于特征点法,导致直接法标定速度很慢。另一方面,如果在简化的直接法模型中不考虑曝光参数,光度误差会受到亮度值偏差和光照不均匀的影响,不过这个问题可以通过图像亮度匹配和亮度均匀化算法解决。

参考资料:

  1. Rehder, Joern, Janosch Nikolic, Thomas Schneider, and Roland Siegwart. “A Direct Formulation for Camera Calibration,” n.d., 8.
  2. Hannemose, Morten, Jakob Wilm, and Jeppe R. Frisvad. “Superaccurate Camera Calibration via Inverse Rendering.” In Modeling Aspects in Optical Metrology VII, edited by Bernd Bodermann, Karsten Frenner, and Richard M. Silver, 40. Munich, Germany: SPIE, 2019. https://doi.org/10.1117/12.2531769.
  3. Usenko, Vladyslav, Nikolaus Demmel, and Daniel Cremers. “The Double Sphere Camera Model.” In 2018 International Conference on 3D Vision (3DV), 552–60. Verona: IEEE, 2018. https://doi.org/10.1109/3DV.2018.00069.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值