python相机标定的原理及实现

参考文档

原理

简介

摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵P的过程。基本的坐标系:世界坐标系;相机坐标系;图像坐标系;
一般来说,标定的过程分为两个部分:
第一步是从世界坐标系转换为相机坐标系,这一步是三维点到三维点的转换,包括 R,t (相机外参)等参数;
第二步是从相机坐标系转为图像坐标系,这一步是三维点到二维点的转换,包括 K (相机内参)等参数;

相机坐标系转换到图像坐标系

坐标系介绍
在这里插入图片描述
知道上面的简单知识后,如果知道相机坐标系中的一个点 X(现实三维世界中的点),在像平面坐标系对应的点是 x,要求求从相机坐标系转为像平面坐标系的转换,也就是从 X 点的( X , Y , Z )通过一定的转换变为x点的(x,y)注意(X,Y,Z)(大写)是在相机坐标系 , 而(小写)是在像平面坐标系(还不是图像坐标系,原点不同。)观察第二个图,很简单的可以得到这个转换:
在这里插入图片描述
可以表示为矩阵计算为:
在这里插入图片描述
可以简写为(P就是所谓的投影矩阵,当然现在还不完整):
在这里插入图片描述
加入偏移量:
通过上面,可以把相机坐标系转换到像平面坐标系,但是像平面坐标系和图像坐标系虽然在同一个平面上,但是原点并不是同一个,而目标是要转换到图像坐标系下,所以还需要一步操作,如下图:
在这里插入图片描述
其中主点 p 是像平面坐标系的原点,但在图像坐标系中的位置为(px,py)在这里,图形坐标系的原点是图片的左下角,所以可以得到:
在这里插入图片描述
相当于在上面的基础上加了一个p点坐标的偏移量,同时可以表示为矩阵计算为(在这里用的是齐次坐标的表示方式):
在这里插入图片描述
最后得到相机内参K
在这里插入图片描述
和投影矩阵P:
在这里插入图片描述

世界坐标系转换到图像坐标系

坐标系介绍
在这里插入图片描述
从世界坐标系转换到相机坐标系是三维空间到三维空间的变换,一般来说需要一个平移操作和一个旋转操作就可以完成这个转换,用公式表示如下(可以理解为世界坐标系原点先平移到相机坐标系的位置然后在做一次坐标系旋转,使坐标轴对齐。):
在这里插入图片描述在这里插入图片描述
根据上面的公式可以得到从一个三维点从世界坐标系转换到相机坐标的变换公式如下(也是用的齐次坐标的表示方式):
在这里插入图片描述
根据上面的讨论知道了怎样从世界坐标系转换到相机坐标系(平移和旋转)以及从相机坐标系转换到图像坐标系(相机内参变换),所以带入上面的矩阵计算,可以得到:
在这里插入图片描述
这样就得到了最终的投影矩阵 P:
在这里插入图片描述
其中:
在这里插入图片描述
在这里,K一般称为相机内参(intrinsic parameters),描述了相机的内部参数,包括焦距 f、主点 p的位置、以及像素与真实环境的大小比例等,这个是固有属性,是提供好的;R和t称为相机外参(extrinsic parameters),R在这里是旋转矩阵,可以转换为三维的旋转向量,分别表示绕x ,y ,z 三个轴的旋转角度,t 目前就是一个平移向量,分别表示在x ,y ,z、三个方向上的平移量。

径向畸变

径向畸变的效应有三种,一种是桶形畸变(barrel distortion),另一种是枕形畸变(pincushion distortion),还有一种是两种的结合叫做胡子畸变(mustache distortion)
在这里插入图片描述
公式修正:
在这里插入图片描述

切向畸变

切向畸变是由于透镜与成像平面不严格的平行࿰

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值