摄相机标定的基本原理

【相机标定的基本原理与经验分享】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中有现成的函数

双目测量

相关推荐
Toady 元气满满17 分钟前
下载魔塔社区模型文件
人工智能·git·ai
开发者每周简报1 小时前
GPT-4.5
人工智能
阿正的梦工坊1 小时前
解析 PyTorch 中的 torch.multinomial 函数
人工智能·pytorch·python
芥子沫2 小时前
一文了解Conda使用
人工智能
轻松Ai享生活2 小时前
你是不是也曾经在代码中"迷路"?
人工智能·代码规范
巫山老妖2 小时前
全球首款通用 AI 智能体 Manus 来袭,AI 圈沸腾了!
人工智能
虾球xz2 小时前
游戏引擎学习第137天
人工智能·学习·游戏引擎
一水鉴天2 小时前
为AI聊天工具添加一个知识系统 之135 详细设计之76 通用编程语言 之6
开发语言·人工智能·架构
He.Tech2 小时前
DeepSeek大模型+RAGFlow实战指南:构建知识驱动的智能问答系统
人工智能·ai
康谋自动驾驶2 小时前
康谋分享 | 3DGS:革新自动驾驶仿真场景重建的关键技术
人工智能·科技·3d·数据分析·自动驾驶·汽车