点击上方“计算机视觉life”,挑选“星标”

快速取得最新干货

以下内容来自体系教程如何搞定单目/鱼眼/双目/阵列 相机标定?

点击领取相机标定材料和代码

为什么需求对相机标定?

咱们所在的国际是三维的,而相机拍照的相片却是二维的,丢掉了其中间隔/深度的信息。从数学上能够简略理解为,相机自身类似一个映射函数,其将输入的场景,经过某种关系映射为一张RGB图片,即

为什么需要对相机标定?

而相机标定,便是运用数学模型和数学办法来近似迫临这一复杂映射函数的进程。标定后的相机即具有了描述这一进程的才干,然后能够用于各种计算机视觉的任务,如深度康复、三维重建等,本质上都是对丢掉的间隔信息的康复。

为什么需要对相机标定?

为什么说是迫临,因为咱们永远也不可能百分之百得知一个真实的相机是如何投影图像的

相机标定到底在标什么?

机器视觉中,需求标定的运用场景能够简略分为如下几类:

  1. 单目视觉运用,如单帧测距、车载 ADAS 辅佐、单目SLAM等

这类运用,咱们一般需求相机自身的成像模型参数以及相机相对某个坐标系下的相对位姿。

  • 比方下图简略场景,咱们知道相机的朝向以及和地上的高度,就能够大致估计出相机某个像素对应物体的间隔(物体高度已知或贴近地上)

为什么需要对相机标定?

这种模型在一些简略的车载的任务上比较常见,比方推测前车间隔

  • 再如工业上比较常见的机器人控制,需求构建机器人坐标系和其视觉坐标系之间的相对方位关系(也便是手眼标定)

为什么需要对相机标定?
再比方单目深度康复,一些传统的单目深度康复一般运用固定尺寸的物体作为标志物,之后移动物体,经过相机中物体大小来判别实际的拍照间隔。

为什么需要对相机标定?

再比方咱们熟知的一些SLAM办法

为什么需要对相机标定?

现在有一些自监督的深度学习办法也会运用相对姿态信息作为监督,比方最近的 ManyDepth:

为什么需要对相机标定?

  1. 双目/多目/RGB-D组合

这类运用愈加常见,咱们需求获取相机自身信息,以及各个相机之间的相对位姿关系,有时也需求获取其和某固定坐标系之间的关系,举几个比如:

  • 如车载全景环视(图片来自网络)

咱们需求获取四个相机相对位姿以及其和地上坐标系的关系,才干得到最终的全景拼接成果(图片来自网络)。

  • 再如AR运用

为什么需要对相机标定?

  • 或许更复杂的相机阵列

为什么需要对相机标定?

标定办法简述

现在相机标定办法首要分为三类:

为什么需要对相机标定?
而传统相机标定中张正友标定法仅运用一个标准已知的平面标定板进行标定,制造成本较低,因而是现在干流的标定计划。

张正有标定操作进程

  1. 张正友标定计划运用平面标志物,一般是规整的棋盘格或许点阵图,如下

为什么需要对相机标定?

当然,一般情况下为了方便区别图片中棋盘格朝向,咱们一般运用宽高不同的棋盘格。

  1. 将标志物打印后,运用待标定相机拍照不同角度多组标定图画

为什么需要对相机标定?
这儿有几点需求注意:

  • 拍照数量一般为15~20张

实际上,按照标定的理论,三张图片就能够完结标定,但是为了减小标定误差,拍照图片会略微多一些

  • 标定图画需求确保平整

  • 每张图片中标志物尽量占据画面1/4以上,不同标定板角度尽量存在一个相对显着的旋转和平移

  • 拍照时应尽量确保相机参数不变

这儿首要是焦距不变,焦距改变会导致部分fov改变,然后影响简直悉数的标定参数。当然,大多数场景中相机自身焦距都是固定的,而消费级,如手机镜头因为其自身畸变不大,且焦距较短,因而影响会比较小。

  • 拍照图画的总和需求掩盖整个画面

因为圆点在含糊情况不会改变其中心点方位,精度理论上会更好一些

  • 拍照图画的总和需求掩盖整个画面

咱们知道标定自身能够理解为一个拟合各个像素方位成像的进程,假如掩盖不完全,就会导致某些区域像素处于无约束状态,然后出现标定过错。咱们常见的图片去畸变后边际扭曲大多是该原因导致的。

  1. 运用标定东西进行标定计算

不同标定板的优缺点

以下部分图片来自数据来自文章 Accurate camera calibration using iterative refinement of control points

为什么需要对相机标定?

  1. 棋盘格自身存在角点检测不准确的问题

为什么需要对相机标定?

如角点边际并不一定满意正交的要求,而这是亚像素角点提取的一种要求。

  1. 圆点检测更准确,但是会存在偏疼误差

为什么需要对相机标定?

  1. AprilTag 假如部分被遮挡也是可用的

为什么需要对相机标定?

以上内容来自体系教程如何搞定单目/鱼眼/双目/阵列 相机标定?