相机标定中的相机模型

ops/2024/12/23 2:07:01/

一、相机标定基本原理

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为相机标定。简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵P的过程。
无论是在图像测量或者机器视觉应用中,摄像机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响摄像机工作产生结果的准确性。其标定的目的就是为了相机内参、外参、畸变参数。

(一)、基本的坐标系

1、 世界坐标系:代表物体在真实世界里的三维坐标,坐标系用 X w , Y w , Z w X_w,Y_w, Z_w XwYwZw表示。
在这里插入图片描述

2、相机坐标系:代表以相机光学中心为原点的坐标系,光轴与z轴重合,坐标系用 X c , Y c , Z c X_c,Y_c,Z_c XcYcZc表示。
在这里插入图片描述
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}
于是通过下面的变换,可以得到没有畸变的标定结果:
在这里插入图片描述


http://www.ppmy.cn/ops/144192.html

相关文章

本地maven项目打包部署到maven远程私库

目的:在自己的maven项目中,要把当前maven项目部署到maven私库,供其他人引入依赖使用。 首先要确保你当前能访问到你的私库,能拉私库的maven依赖即可。 maven部署命令: mvn deploy:deploy-file -Dmaven.test.skiptrue -…

STM外设介绍2(Timer)

1. 定时器概述 在 STM32 系列微控制器中,定时器(Timer)是一个非常重要的外设,它能够提供精确的时间延时、定时控制、PWM 输出、事件计数、脉冲宽度调制(PWM)等多种功能。定时器通常用于定时中断、时间计数…

wpf mvvm 数据绑定数据(按钮文字表头都可以),根据长度进行换行,并把换行的文字居中

今天遇到了一个问题,就是数据表头按钮的文字换行后不能居中,如何查找资料后,也是挺简单的,就是绑定控件的文字,进行进行操作,下来我们以按钮为例。 在WPF中使用MVVM模式时,可以通过绑定按钮的文…

VTK知识学习(27)- 图像基本操作(二)

1、图像类型转换 1)vtkImageCast 图像数据类型转换在数字图像处理中会频繁用到。一些常用的图像算子(例如梯度算子)在计算时出于精度的考虑,会将结果存储为float或double类型,但在图像显示时,一般要求图像为 unsigned char 类型,…

鸿蒙项目云捐助第十讲鸿蒙App应用分类页面二级联动功能实现

鸿蒙项目云捐助第十讲鸿蒙App应用分类页面二级联动功能实现 在之前的教程中完成了分类页面的左右两侧的列表结构,如下图所示。 接下来需要实现左侧分类导航项的点击操作,可以友好的提示用户选择了哪一个文字分类导航项。 一、左侧文字分类导航的处理 …

Java基本概念6-JVM2

(如上图)各个区域的功能: 方法区:方法区是所有线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。静态方法和变量会提前分配空间,不需要再次分配&#…

解锁报表在线设计新高度:FastReport Online Designer 2025.1 正式上线!

我们非常高兴地向大家宣布,FastReport Online Designer 2025.1 版本正式发布!这一全新的版本不仅进一步优化了用户体验,还引入了众多实用的新功能与改进,帮助您在浏览器中轻松设计模板和报表。以下为您带来本次更新的亮点&#xf…

Element@2.15.14-tree checkStrictly 状态实现父项联动子项,实现节点自定义编辑、新增、删除功能

背景:现在有一个新需求,需要借助树结构来实现词库的分类管理,树的节点是不同的分类,不同的分类可以有自己的词库,所以父子节点是互不影响的;同样为了选择的方便性,提出了新需求,选择…