相机标定中的相机模型

一、相机标定基本原理

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定。简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵P的过程。

无论是在图像测量或者机器视觉应用中,摄像机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响摄像机工作产生结果的准确性。其标定的目的就是为了相机内参、外参、畸变参数。

(一)、基本的坐标系

1、 世界坐标系:代表物体在真实世界里的三维坐标,坐标系用 X w , Y w , Z w X_w,Y_w, Z_w Xw,Yw,Zw表示。

2、相机坐标系:代表以相机光学中心为原点的坐标系,光轴与z轴重合,坐标系用 X c , Y c , Z c X_c,Y_c,Z_c Xc,Yc,Zc表示。

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

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

(二)世界坐标系到相机坐标系的转换

于是,从世界坐标系到相机坐标系,涉及到旋转和平移(其实所有的运动也可以用旋转矩阵和平移向量来描述)。绕着不同的坐标轴旋转不同的角度,得到相应的旋转矩阵,如下图所示,以绕Z轴转动一定角度为例:

平移也就是沿着X,Y,Z三个维度的平移,这里就不在赘述。因此,从世界坐标系到相机坐标系的转换公式如下式所示

(三)相机坐标到图像坐标系转换(中心投影)

相机坐标系到图像坐标系是透视关系,利用相似三角形进行计算。

写成齐次坐标形式的矩阵相乘为:

其中f代表焦距,即相机坐标系和图像坐标系在Z轴上的差。此时投影点p的单位还是mm,并不是pixel,不方便进行后续运算。

(四)、图像坐标系到像素坐标系的转换(离散化)

像素坐标系的原点在左上角,并且单位为像素。像素坐标系和图像坐标系都在成像平面上,只是各自的原点和度量单位不一样。图像坐标系的原点为相机光轴与成像平面的交点,通常情况下是成像平面的中点或者叫principal point。图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel,我们平常描述一个像素点都是几行几列。所以这二者之间的转换如下:其中dx和dy表示每一列和每一行分别代表多少mm,即1pixel=dx*mm

(五)、相机标定整个过程(相机模型)

故全部过程的公式如下:

称为相机的内参矩阵,内参矩阵取决于相机的内部参数。

为相机外参,外参矩阵取决于相机坐标系和世界坐标系的相对位置, R表示旋转矩阵,

T 表示平移矢量。相机标定就是为了求解这两个矩阵的参数。

二、相机畸变模型(一般只考虑径向畸变k和切向畸变p)

(一)、径向畸变(参数:k1,k2,k3)

径向畸变来自透镜形状不规则以及建模的方式,导致镜头不同部分焦距不同。光线在远离透镜中心的地方偏折更大(枕型畸变)或更小(桶形畸变)。

从径向畸变开始。实际摄像机的透镜总是在成像仪的边缘产生显著的畸变,如下图所示。对某些透镜,光线在远离透镜中心的地方比靠近中心的地方更加弯曲。

枕形畸变:畸变像点相对于理想像点沿景象向外偏移,远离中心(像一个抱枕)。

桶状畸变:径向畸点相对于理想点沿径向向中心靠拢(像圆鼓鼓的水桶)。

径向畸变的矫正公式如下:

其中,(x,y)是理想的无畸变的坐标(图像坐标系), ( x d r , y d r ) (x_{dr},y_{dr}) (xdr,ydr)是畸变后图像像素点的坐标,而且,

二、切向畸变 (参数:p1,p2)

切向畸变来自于整个摄像机的组装过程。由于透镜制造上的缺陷使得透镜本身与图像平面不平行而产生的,如下图所示:

切向畸变的矫正公式如下:

三、去畸变

Ideal point (xu,yu)为理想点

real point (xd,yd)为实际点

dr为径向畸变,参数为{k1, k2, k3}

dt为切向畸变,参数为{p1, p2}

于是通过下面的变换,可以得到没有畸变的标定结果:

相关推荐
数据库小学妹2 分钟前
AI Agent连数据库怎么控权限?只读账号的4个缺口
数据库·人工智能·安全·数据库权限·审计·ai数据库·只读账号
Rocky Ding*25 分钟前
【三年面试五年模拟】2026-10-26 携程 AI Agent一面面经全解析
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·ai agent
Zhao-Jichao27 分钟前
AI Prompting for Everyone 课程笔记 - 02 预训练知识 Pretrained knowledge
人工智能
ai_xiaogui30 分钟前
PanelAI项目实战:从AI一键生成到企业级AI基础设施操作系统PPT手搓复盘与架构落地
人工智能·架构·一键部署·panelai·企业级ai基础设施操作系统·ai智能底层操作系统·算力变现
lucas_AI33 分钟前
NPU 算力不再注水:拿量产世界模型实测芯片,700 TOPS 里 98.7% 真能干活
人工智能
CAIE研习社39 分钟前
30岁以后学习AI应用,证书能起到什么作用?
人工智能·学习
Dawson Zhu41 分钟前
【Runtime推理引擎①】Runtime架构设计:从Session到Graph Executor的完整骨架
人工智能·语言模型·架构·aigc·agi
长不大的杨瑞杰1 小时前
OpenCode v2 LSP 实战:内置语言服务器、自定义配置与诊断闭环
java·人工智能·typescript·lsp·opencode
在所不辞兄1 小时前
【零基础学智能仿真-68】本地仿真助手的工具调用
人工智能·机器学习
郝学胜-神的一滴1 小时前
AI 编程智能体 20:技术栈选型与架构落地全攻略
人工智能·python·架构·langchain·1024程序员节·智能体