摄相机标定的基本原理

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

双目测量

相关推荐
新智元18 分钟前
o3 全网震撼实测:AGI 真来了?最强氛围编程秒杀人类,却被曝捏造事实
人工智能·openai
新智元22 分钟前
何恺明 ResNet 登顶,Transformer 加冕!Nature 独家揭秘 25 篇高被引论文
人工智能·openai
新智元42 分钟前
OpenAI 震撼发布 o3/o4-mini,直逼视觉推理巅峰!首用图像思考,十倍算力爆表
人工智能·openai
newxtc1 小时前
【随行付-注册安全分析报告-无验证方式导致隐患】
人工智能·安全·网易易盾·极验
计算所陈老师1 小时前
基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(二)
人工智能·个人开发·信息抽取
Dlimeng1 小时前
OpenAI发布GPT-4.1系列模型——开发者可免费使用
人工智能·ai·chatgpt·openai·ai编程·agents·gpt-41
zhuyasen1 小时前
与AI深度融合的Go开发框架sponge,解决使用cursor、trae等AI辅助编程工具开发项目时的部分痛点
人工智能·低代码·golang
啥都鼓捣的小yao2 小时前
实战5:Python使用循环神经网络生成诗歌
开发语言·人工智能·python·rnn·深度学习
机器之心2 小时前
刚刚,OpenAI发布最强推理模型o3!图像深度思考首秀,开源编程智能体已揽5k+star
人工智能·chatgpt
Blossom.1182 小时前
重新定义“边缘”:边缘计算如何重塑人类与数据的关系
人工智能·深度学习·机器学习·智能合约·边缘计算·sklearn·多模态融合