相机标定中的相机模型

一、相机标定基本原理

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

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

相关推荐
AI视觉网奇3 分钟前
python 求内轮廓
python·opencv·计算机视觉
lczdyx4 分钟前
从Flask到智能体:装饰器模式在AI系统中的架构迁移实践
人工智能·python·语言模型·架构·flask·装饰器模式
Acrelgq2311 分钟前
政策支持与市场驱动:充电桩可持续发展的双轮引擎
人工智能
软件测试小仙女16 分钟前
AI测试工具Testim——告别自动化测试维护难题
自动化测试·软件测试·人工智能·测试工具·单元测试·集成测试·压力测试
xieyan081139 分钟前
MCP之一_MCP协议解析
人工智能
小华同学ai44 分钟前
2.1k star! 抓紧冲,DeepChat:连接AI与个人世界的智能助手的开源项目
人工智能·ai·开源·github·工具
界面开发小八哥1 小时前
智能Python开发工具PyCharm v2025.1——AI层级功能重磅升级
ide·人工智能·python·pycharm·开发工具
汀丶人工智能1 小时前
Qwen3强势来袭:推理力爆表、语言超百种、智能体协作领先,引领AI开源大模型
人工智能
Blossom.1181 小时前
可解释人工智能(XAI):让机器决策透明化
人工智能·驱动开发·深度学习·目标检测·机器学习·aigc·硬件架构
极客智谷1 小时前
Spring AI应用系列——基于Alibaba DashScope的聊天记忆功能实现
人工智能·后端