篇首语:本文由小编为大家整理,主要介绍了相机校正与相机内参外参相关的知识,希望对你有一定的参考价值。
简 介: 对于相机进行校正,是为之后视觉测量奠定基础。本文在总结了相机校正中的基本概念。使用cv2的函数说明校正的过程。
关键词
: 相机校正,内参,外参
§01 相机标定
这部分内容来自于 python+OpenCV 相机标定 。
1.1 相机标定基本原理
摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵 P 的过程。 根据相机标定(一)-原理及内参、外参 博文中的定义,在整个转换过程中,包括有四个坐标系:
- 图像像素坐标系
- 图像物理坐标系
- 相机坐标系
- 世界坐标系
一般来说,标定的过程分为两个部分:
- 第一步是从世界坐标系转换为相机坐标系,这一步是三维点到三维点的转换,包括 R , t R,t R,t(相机外参)等参数;
- 第二部是从相机坐标系转为图像坐标系,这一步是三维点到二维点的转换,包括 K K K(相机内参)等参数;
1.1.1 世界坐标转换为相机坐标
世界坐标就是实际外部环境坐标,原点为 O O O,三个正交坐标轴分别为 X , Y , Z X,Y,Z X,Y,Z。相机位于世界坐标内, O X , Y , Z O_X,Y,Z OX,Y,Z,原点为 C C C,镜头方向坐标为 Z c a m Z_cam Zcam,另外两个坐标轴 X c a m , Y c a m X_cam ,Y_cam Xcam,Ycam与镜头方向垂直。
▲ 图1.1.1 世界坐标转换为相机坐标
从 O X , Y , Z O_X,Y,Z OX,Y,Z到 C X c a m , Y c a m , Z c a m C_Xcam,Ycam,Zcam CXcam,Ycam,Zcam的 映射转换公式为: X ^ c a m = R ( X ^ − C ^ ) \hat X_cam = R\left( \hat X - \hat C \right) X^cam=R(X^−C^)
其中:
- R R R表示旋转矩阵;
- X ^ \hat X X^表示 X X X点在世界坐标 O X , Y , Z O_X,Y,Z OX,Y,Z中的位置;
- C ^ \hat C C^表示相机原点 C C C在世界坐标中的位置;
- X ^ c a m \hat X_cam X^cam表示 X X X点在相机坐标中的位置;
▲ 图1.1.2 世界坐标系与相机坐标系
1.1.2 相机坐标转换为图像坐标
下图给出了在相机坐标系内的成像平面, p x , y p_x,y px,y与相机坐标主轴垂直,交点为图像坐标原点 p p p,距离相机与原点距离为相机焦距 f f f。相机坐标中任何一点 X X X在成像平面上的位置,也称为图像坐标,是由连线 X , C X,C X,C在成像平面上的交点 x x x确定。
▲ 图1.1.3 相机坐标中的点与成像平面
其中:
- C C C表示
camera center
,即相机的中心店,也是相机坐标系的原点; - Z Z Z表示
principal axis
,即相机的主轴; - p p p点所在的平面表示
image plane
,即相机的像平面,也就是图片坐标系所在的二维平面; - p p p 点表示
principal point
,即主点,也就是主轴与想平明香蕉的点;
成像坐标 x x x的位置可以由三角几何比例关系确定。
▲ 图1.1.4 相机坐标系以及成像平面之间的关系
▲ 图1.1.5 利用三角几何比例关系确定成像位置
其中:
- C C C 点到 p p p 点的距离,就是相机的焦距 f f f;
对于相机坐标中的点 ( X , Y , Z ) \left( X,Y,Z \right) (X,Y,Z),在成像平面上的位置为:
x = f ⋅ X Z , y = f ⋅ Y Z x = f \cdot X \over Z,\,\,y = f \cdot Y \over Z x=Zf⋅X,y=Zf⋅Y
简记为: ( X , Y , Z ) ↦ ( f ⋅ X / Z , f ⋅ Y / Z ) \left( X,Y,Z \right) \mapsto \left( f \cdot X/Z,f \cdot Y/Z \right) (X,Y,Z)↦(f⋅X/Z,f⋅Y/Z)。
加上偏移量,如下图所示, 其中 p p p是像平面坐标系的 原点,在图像坐标系中的位置为 ( p x , p y ) \left( p_x ,p_y \right) (p
以上是关于相机校正与相机内参外参的主要内容,如果未能解决你的问题,请参考以下文章