摄相机标定的基本原理

【相机标定的基本原理与经验分享】https://www.bilibili.com/video/BV1eE411c7kr?vd_source=7c2b5de7032bf3907543a7675013ce3a

相机模型:

定义:

内参:就像相机的"眼睛"。它描述了相机内部的特性,比如焦距(镜头的放大能力)、主点位置(图像中心)等。简单说,这些参数决定了相机如何把外界景物映射到图像上。

外参:可以看作相机在"房间"里的位置和朝向。它描述了相机相对于实际世界(例如房间、街道)的摆放位置和角度,告诉我们相机看世界的角度和方向。

畸变参数:就像眼镜的"矫正"作用。由于相机镜头的设计缺陷,拍出来的图像会有些弯曲或失真(比如直线看起来弯曲)。畸变参数就是用来校正这种失真,使图像更接近真实场景。

坐标系:

世界坐标系:代表物体在真实世界里的三维坐标,坐标系用表示

拍摄物体时,需要将世界坐标系的物体通过刚体变换转移到相机坐标系下

相机坐标系:代表以相机光学中心为原点的坐标系,相机光轴与轴重合,坐标系用表示

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

像素坐标系:由于图像的基本单位是像素,所以该坐标系是图像上点在图像存储矩阵中的像素位置,坐标原点在左上角,坐标系用表示。前三个坐标系的单位是毫米,而最后一个坐标系的单位是像素

坐标系变换:

世界坐标系到相机坐标系的变换:世界坐标系是真实世界的基准坐标系,需要知道相机坐标系下的点在真实世界中的位置,利用齐次坐标变换矩阵

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

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

其中,是图像坐标系原点在像素坐标系下的坐标

相机畸变模型:

一般只考虑径向畸变k和切向畸变p

其中,

畸变与和原图像点的距离点有关系,若k>0,则为枕型畸变

相机标定:

相机标定参数包括内参和外参

建立目标函数:

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

为已经拍摄通过角点提取等方法计算得到的二维点

通过相机模型得到目标函数,优化参数,使二维点和三维点重合,或最优化为最小

缺点:优化量过多,若初始值不好,容易陷入局部最优

张氏标定法:

原论文:A Flexible New Technique for Camera Calibration

详解及代码:【三维重建】摄像机标定(张正友相机标定法)_张正友标定法-CSDN博客

通过上述提到的目标函数得到很好的解,用于初始值和最优化

假设平面在世界坐标系下为,标定板为

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

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

推导:

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中有现成的函数

双目测量

相关推荐
红衣小蛇妖21 分钟前
神经网络-Day46
人工智能·深度学习·神经网络
带电的小王1 小时前
【动手学深度学习】3.1. 线性回归
人工智能·深度学习·线性回归
谢尔登1 小时前
结合 AI 生成 mermaid、plantuml 等图表
人工智能
VR最前沿1 小时前
【应用】Ghost Dance:利用惯性动捕构建虚拟舞伴
人工智能·科技
说私域1 小时前
内容力重塑品牌增长:开源AI大模型驱动下的智能名片与S2B2C商城赋能抖音生态种草范式
人工智能·小程序·开源·零售
l1t1 小时前
三种读写传统xls格式文件开源库libxls、xlslib、BasicExcel的比较
c++·人工智能·开源·mfc
AI浩2 小时前
【Block总结】EBlock,快速傅里叶变换(FFT)增强输入图像的幅度|即插即用|CVPR2025
人工智能·目标检测·计算机视觉
Vertira2 小时前
Pytorch安装后 如何快速查看经典的网络模型.py文件(例如Alexnet,VGG)(已解决)
人工智能·pytorch·python
Listennnn2 小时前
信号处理基础到进阶再到前沿
人工智能·深度学习·信号处理
奔跑吧邓邓子2 小时前
DeepSeek 赋能智能养老:情感陪伴机器人的温暖革新
人工智能·机器人·deepseek·智能养老·情感陪伴