张氏标定法原理详解

简介: 张氏标定法原理详解

张氏标定

🌴写在前面

  在读这篇之前建议大家对四系坐标系之间的转换有一个较为清晰的认识,如若有不了解的可参考我之前的博文:相机模型与几何关系推导+四系坐标转换


🌴原理详解

🍉🍉🍉四系坐标转化时我们已经得到了如下公式:image.png

通过上述公式,我们易得到:image.png

  其中m表示图像平面的像素坐标(u,v,1),M表示世界坐标系的坐标点( xw ,yw ,zw )。R,T表示旋转和平移矩阵、s表示尺度因子(只是为了方便运算,对于齐次坐标,尺度因子不会改变坐标值的) 、A表示相机的内参矩阵,表达式如下:image.png

其中τ代表像素点在x,y方向上尺度的偏差。


这里插入介绍一个概念:单应性变换


单应性变换是将一个平面内的点映射到另一个平面内的二维投影变换。(平面是指图像或者三维中的平面表面),对应的变换矩阵称为单应性矩阵 。


在进行张氏标定的时候,我们所选择的标定物是平面(往往是棋盘格),所以我们可以把世界坐标系构造在Z=0的平面上。然后进行单应性计算。令Z=0可以将上文公式转换为如下形式:image.png

image.png

H是一个3x3的矩阵,一共有9个元素。但上式是一个齐次坐标,因此,H有8个未知量待解。

  这里是不是有疑问了呢?为什么只有8个未知量呢?其实这个在之前也讲到过,就是齐次方程的伸缩不变性。下面通过这个例子再次叙述一遍。我们看如下方程:image.png

其中H为3x3的矩阵:image.png

则:image.png

上式可表述为:image.png

也即:image.png

将上式写成AH=0的形式:image.png

下面我们再来看这样的方程:image.png

则:image.png

  可以发现单应性矩阵H和aH是完全一样的,即点(X,Y)无论经过H还是aH映射,变化后都是(u,v)。此时我们取 ,则有:image.png

可以看出H只有8个未知量待解。

明白了H有八个未知量,那么要想解出这八个未知量,我们就需要八个方程。通过上面的分析可知,我们通过一组对应的(x,y)-(u,v)可以获得两个方程。其中(x,y)作为标定物的坐标,可以由设计者人为控制,是已知量。(u,v)是像素坐标,我们可以直接通过摄像机获得。那么这样的话要想解出八个未知量,就需要四个对应点,也就是说我们只要给出四组点,就可以算出图像平面到世界平面的单应性矩阵H。这也是张氏标定采用四个角点的棋盘格作为标定物的一个原因。

image.png

上式有两个约束条件,分别为:

image.png

上面两个约束均为旋转矩阵的性质。

我们由公式1可得:image.png

image.png


  上面我想已经把求解相机内参的过程描述清楚了,接下来是对上面的公式的一些数学变化,没有什么物理上的含义。

首先另:image.png

接下来有:image.png

其中,

image.png

结合公式3、公式4、公式5可得:

image.png

进一步写成矩阵的形式如下:image.png

公式6其实是和公式3、4所表达的含义是一样的。


  通过上面的一系列运算,我们算是把相机的内参矩阵求出来了,对于外参矩阵,我们很容易通过下面的矩阵进行求解:

image.png

🌴最后唠唠

  这部分的内容其实写了很久了,但由于是word编辑的并含有大量的公式,放到博客中会乱码,于是就没有整理,这次稍微整理了一下,但是大多数公式放的是图片,这样不知道会不会影响大家的观感,如果想要公式不是图片的,可以留言获取📝📝📝


目录
打赏
0
0
0
0
78
分享
相关文章
Yolov5双目测距-双目相机计数及测距教程(附代码)
Yolov5双目测距-双目相机计数及测距教程(附代码)
|
9月前
标定系列三、9点标定实际应用场景分析
标定系列三、9点标定实际应用场景分析
240 0
3D激光SLAM:LeGO-LOAM---两步优化的帧间里程计及代码分析
**LeGO-LOAM**的全称是 Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain 其中LeGO就是轻量级和利用地面优化,轻量级的实现就是通过两步的优化方式,利用地面优化的部分也在两步优化的第一步中。 和原始LOAM一样,通过前后两帧点云来估计两帧之间的运动,从而累加得到前端里程计的输出,和上述方法使用线面约束同时优化六自由度帧间位姿不同,LeGO-LOAM的前端分成两个步骤,每个步骤估计三自由度的变量。 通过这种方式进行帧间里程计的运算,可以提供运算效率,使得可以在嵌入式平台
3D激光SLAM:LeGO-LOAM---两步优化的帧间里程计及代码分析
三维球体空间中光线反射模拟与三维点云提取matlab仿真
本项目使用MATLAB2022A模拟三维椭球体内光线反射并提取三维点云。通过设置椭球模型作为墙壁,根据几何光学原理计算光线在曲面上的反射路径,记录每次反射点坐标,生成三维点云图。核心代码实现多次反射的循环计算与绘图,并展示反射点的位置变化及其平滑处理结果。最终,通过光线追踪技术模拟真实场景中的光线行为,生成精确的三维点云数据,适用于计算机图形学和光学仿真领域。
145 27
标定系列二、9点标定以及5点圆心标定过程(代码详解)
标定系列二、9点标定以及5点圆心标定过程(代码详解)
1356 0
标定系列一、手眼标定基础介绍
标定系列一、手眼标定基础介绍
351 0
Halcon 学习笔记五:几何定位+仿射变换+测量
Halcon 学习笔记五:几何定位+仿射变换+测量
852 0
3D激光SLAM:ALOAM:激光雷达的运动畸变补偿代码解析
**什么是激光雷达的运动畸变 ?** 激光雷达的一帧数据是过去一周期内形成的所有数据,数据仅有一时间戳,而非某个时刻的数据,因此在这一帧时间内的激光雷达或者其载体通常会发生运动,因此,这一帧的原点不一致,会导致一些问题,这个问题就是**运动畸变**
3D激光SLAM:ALOAM:激光雷达的运动畸变补偿代码解析