【相机标定的基本原理与经验分享】https://www.bilibili.com/video/BV1eE411c7kr?vd_source=7c2b5de7032bf3907543a7675013ce3a
相机模型:
定义:
内参:就像相机的"眼睛"。它描述了相机内部的特性,比如焦距(镜头的放大能力)、主点位置(图像中心)等。简单说,这些参数决定了相机如何把外界景物映射到图像上。
外参:可以看作相机在"房间"里的位置和朝向。它描述了相机相对于实际世界(例如房间、街道)的摆放位置和角度,告诉我们相机看世界的角度和方向。
畸变参数:就像眼镜的"矫正"作用。由于相机镜头的设计缺陷,拍出来的图像会有些弯曲或失真(比如直线看起来弯曲)。畸变参数就是用来校正这种失真,使图像更接近真实场景。
坐标系:
世界坐标系:代表物体在真实世界里的三维坐标,坐标系用表示

拍摄物体时,需要将世界坐标系的物体通过刚体变换转移到相机坐标系下
相机坐标系:代表以相机光学中心为原点的坐标系,相机光轴与轴重合,坐标系用
表示

图像坐标系:代表相机拍摄图像的坐标系,原点为相机光轴与成像平面的交点,是图像的中心点,坐标系用表示

像素坐标系:由于图像的基本单位是像素,所以该坐标系是图像上点在图像存储矩阵中的像素位置,坐标原点在左上角,坐标系用表示。前三个坐标系的单位是毫米,而最后一个坐标系的单位是像素
坐标系变换:
世界坐标系到相机坐标系的变换:世界坐标系是真实世界的基准坐标系,需要知道相机坐标系下的点在真实世界中的位置,利用齐次坐标变换矩阵

相机坐标系到图像坐标系的变换:该变换可以看作是简单的射影变换(将相机看作小孔成像的模型),将三维坐标变换成二维坐标。其中为相机的焦距

图像坐标系到像素坐标系的变换:设图像x方向每毫米有个像素,y方向每毫米有
个像素,则有:

其中,是图像坐标系原点在像素坐标系下的坐标
相机畸变模型:
一般只考虑径向畸变k和切向畸变p

其中,

畸变与和原图像点的距离点有关系,若k>0,则为枕型畸变
相机标定:
相机标定参数包括内参和外参

建立目标函数:

三维点和二维展示出来的图像上的点是一一对应的,三维点经过投影
等一系列操作得到图上的点(用红色实心点表示)

为已经拍摄通过角点提取等方法计算得到的二维点
通过相机模型得到目标函数,优化参数,使二维点和三维点重合,或最优化为最小
缺点:优化量过多,若初始值不好,容易陷入局部最优
张氏标定法:
原论文:A Flexible New Technique for Camera Calibration
通过上述提到的目标函数得到很好的解,用于初始值和最优化
假设平面在世界坐标系下为,标定板为

,因此
不起作用,可以将其去除掉

表示所有相机内参数的矩阵,将
(内参乘外参的矩阵)称为
,表示一个平面和另一个平面的映射关系,可以通过两个平面求得,为已知量

推导:
H为

为刚体变换矩阵,是
,其中R为正交矩阵,列向量模长为1,由此可以得到:
①垂直于
②的模等于
的模
得到下面的方程:

进行计算和公式推导:

最终得到:
v已知,b为相机内参的未知量组合

一张照片可以提供一个2*6矩阵,至少需要三张照片,可以确定b的唯一,越多照片越可以确定,形成冗余方程,更具有稳定性
再使用目标函数,对最小二乘进行优化

一些改进:
Accurate camera calibration using iterative refinement of control points
1.明确张正友的方法没有限制棋盘格或者圆环
2.圆环与棋盘格的优缺点分别是什么?(圆的标定结果和精度大于方形)
圆环与棋盘格:

圆检测精度高,表现为中心拟合精度高,但是具有偏心误差
棋盘格检测精度低,但是不存在偏心误差
偏心误差:空间中两条直线的交点的投影为其投影直线的交点;而圆的中心投影不等于投影椭圆的中心(解决方法见下方论文)
Quasi-eccentricity error modeling and compensation in vision metrology
使用情况:若知道如何纠正偏心误差 ,使用圆的精度更高;若不知道,则使用棋盘格
标定实际操作:
1.操作
OpenCV有现成函数,如果想更方便需要自己编写一个GUI界面
cpp
error = cv::calibrateCamera(object_points,image_points,imageSize,cam_intr_para,distCoeffs,rvecs,tvecs);
2.拍摄机位和数量选择
最少拍三张,三张后达到稳定,常用为十几张到二十几张

相机正常拍摄,沿光轴旋转,需要顾及边界参数和畸变参数
3.标定结果和评判标准
使Re-projection error误差最小(二维角点减三维点投影)
该标准已成为相机标定误差的标准
重投影误差:
①图像(角点)检测精度,如果2d角点检测不准,会直接造成重投影误差,需要找到一个精度高鲁棒性的算法
②相机本身存在成像噪声
③相机分辨率,5000*3000和1000*600的相机在同情况下,前者的误差更高
④相机本身的最优化算法
其他评判标准:
三维重建:
若拍摄10组照片,得到内参数矩阵A和外参数矩阵Rt(10张照片对应10个Rt);假设其中一张照片的标定照片如下图:

在标定结束后,A、R、t都是已知的;取标定板上的左上角和右下角两个角点应该一致,按照R、t、A(内参和外参)将3d标定板上的这两个角点重新投影到图像上的两个点

4.应用
单目:
pnp问题:已知n点的对应关系,如何求解它的R和t(已知内参数,求解外参数)
设有一个立体标版,希望得知立体标版与2d图像的转换关系

opencv中有现成的函数

双目测量
