相机标定的原理、程序实现、畸变矫正(一,原理)

一、原理
二、标定程序
三、畸变矫正

(有什么其他要补充的或者要提问,留言就行)
github工程:

一、原理

1、四个坐标系

相机标定的原理、程序实现、畸变矫正(一,原理)_第1张图片

1)像素坐标系(u-v)

定义:以像素为单位,坐标原点在左上角;举个例子:一副图像的像素是640x480,则以图像的左上角为原点,按一个像素一格,建立坐标系。
相机标定的原理、程序实现、畸变矫正(一,原理)_第2张图片

2)图像坐标系(x-y)(也叫平面坐标系)

定义:用物理单位表示像素的位置,坐标原点为摄像机光轴与图像物理坐标系的交点位置。单位是mm。
相机标定的原理、程序实现、畸变矫正(一,原理)_第3张图片

3)相机坐标系(Xc-Yc,Oc)

定义:以摄像机光心为原点(在针孔模型中也就是针孔为光心),z轴与光轴重合也就是z轴指向相机的前方(也就是与成像平面垂直),x轴与y轴的正方向与物体坐标系平行,其中上图中的f为摄像机的焦距。单位为m
相机标定的原理、程序实现、畸变矫正(一,原理)_第4张图片

4)世界坐标系(Xw-Yw)

定义:根据情况而定,可以表示任何物体,此时是由于相机而引入的。单位m。
只要记住四个坐标系原点在哪和它们的单位就行。

2,四个坐标系的关系

1)像素坐标系-图像坐标系

相机标定的原理、程序实现、畸变矫正(一,原理)_第5张图片
dx,dy:一个像素对应的ccd(cmos)的感光元的长度和宽度。例:一个cmos尺寸为3.9x3;其拍摄的图片尺寸为160x120;则dx=3.9/160;dy=3/120。单位为mm
u0,v0:在像素坐标系下,图像的中心的像素值,单位为pixel。

2)图像坐标系-相机坐标系

相机标定的原理、程序实现、畸变矫正(一,原理)_第6张图片
以上对应关系可以通过相似三角形原理,自己验证。

3)相机坐标系-世界坐标系

在这里插入图片描述
在这里插入图片描述
刚体变化。简单来说,图像只要经过旋转和平移就可以相互转化。

一、标定程序

1,matlib

1)采集至少四张棋盘格图像
相机标定的原理、程序实现、畸变矫正(一,原理)_第7张图片
2)打开matlib下的app,找到camera Calibrator
相机标定的原理、程序实现、畸变矫正(一,原理)_第8张图片
3)点击Add Image添加图片,from file选择文件
在这里插入图片描述
4)点击Calibrate得到标定结果
在这里插入图片描述
5)保存及查看结果,点击export camera parameter
在这里插入图片描述
结果:自己查看,下面是对应英文
常用术语 :
内参矩阵: Intrinsic Matrix
焦距: Focal Length
主点: Principal Point
径向畸变: Radial Distortion
切向畸变: Tangential Distortion
旋转矩阵: Rotation Matrices
平移向量: Translation Vectors
平均重投影误差: Mean Reprojection Error
重投影误差: Reprojection Errors
重投影点: Reprojected Points

2,基于opencv的c++程序

https://blog.csdn.net/shiyuqing457/article/details/106768225

你可能感兴趣的:(C++,标定,opencv)