python 倒数两列_相机标定之张正友标定法数学原理详解(含python源码)

一、相机标定的目的

我们首先要明白两个问题:1、相机是如何成像的?2、相机标定的目的是什么?

1、相机是如何成像的呢?

相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。对于这四个坐标系中之间的关系还不太明白成像原理的同学需要先查一查学习一下。

ec98a9374343dec238d72104ca9cceff.png

这四个坐标系之间的转化关系为:

81619959cd86638faf4afb8d0b875b39.png

其中,

为在世界坐标系下一点的物理坐标,
为该点对应的在像素坐标系下的像素坐标,
为尺度因子。

我们将矩阵:

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

为像距,
分别表示
方向上的一个像素在相机感光板上的物理长度(即一个像素在感光板上是多少毫米),
分别表示相机感光板中心在像素坐标系下的坐标,
表示感光板的横边和纵边之间的角度(
表示无误差)。

我们将矩阵:

称为相机的外参矩阵,外参矩阵取决于相机坐标系和世界坐标系的相对位置,
表示旋转矩阵,
表示平移矢量。

即单点无畸变的相机成像模型如下:

2、相机标定的目的是什么?

为什么要进行相机标定呢?比如,当我们拿到一张图片,进行识别之后,得到的两部分之间的距离为多少多少像素,但是这多少多少像素究竟对应实际世界中的多少米呢?这就需要利用相机标定的结果来将像素坐标转换到物理坐标来计算距离(当然这里值得说明,仅仅利用单目相机标定的结果,是无法直接从像素坐标转化到物理坐标的,因为透视投影丢失了一个维度的坐标,所以测距其实需要双目相机)。

相机标定的目的其实很简单,我们要想对一个成像系统建模,进而进行相应的计算,所必须的参数就是相机的内参矩阵:

和相机的外参矩阵
,因此,
相机标定的第一个目的就是获得相机的内参矩阵和外参矩阵。

3、畸变与畸变矫正

另外,相机拍摄的图片还存在一定的畸变,畸变包括桶形畸变和枕形畸变。对于畸变原理还不太明白的同学需要先查一查学习一下。

畸变模型包括径向畸变和切向畸变。

径向畸变公式(3阶)如下:

切向畸变公式如下:

其中,

分别为理想的无畸变的归一化的图像坐标、畸变后的归一化图像坐标, 为图像像素点到图像中心点的距离,即

相机标定的第二个目的就是获得相机的畸变参数,如上式中的

等,进而对拍摄的图片进行去畸变处理。

二、张正友标定法简介

张正友标定法利用如下图所示的棋盘格标定板,在得到一张标定板的图像之后,可以利用相应的图像检测算法得到每一个角点的像素坐标

张正友标定法将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标

,由于标定板的世界坐标系是人为事先定义好的,标定板上每一个格子的大小是已知的,我们可以计算得到每一个角点在世界坐标系下的物理坐标

我们将利用这些信息:每一个角点的像素坐标

、每一个角点在世界坐标系下的物理坐标
,来进行相机的标定,获得相机的内外参
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值