为什么要标定?
相机标定的目的是为了确定相机内部参数和外部参数,以便修正图像并将图像坐标映射到世界坐标,或者从世界坐标映射到图像坐标。这个过程是计算机视觉和三维感知任务的关键步骤之一,它有以下主要目的:
减小畸变:相机镜头和传感器可能引入径向和切向畸变,使得图像中的直线变得弯曲或者物体的形状不准确。通过标定相机,可以矫正这些畸变,使图像更准确。

确定内部参数(intrinsic parameters):内部参数包括焦距、主点坐标和相机畸变参数。这些参数是描述相机如何捕捉世界的重要因素,它们的准确值对于计算深度、距离和姿态等任务至关重要,相机内参标定就是为了获取精确的内部参数
标定原理:

相机成像模型,描述了三维空间点在相机成像平面上的投影关系。
公式如下:
各个符号的含义:
(X, Y, Z)
三维空间点的坐标,表示物体在相机坐标系中的位置。
(u, v)
像素坐标系中的坐标,表示三维点在成像平面上的投影点坐标。
Z
点到相机光心的深度(深度信息)。
K
相机内参矩阵(Camera Intrinsic Matrix):包含相机的内参信息。
fx,fy:相机的焦距,分别在x和y方向的像素单位表示。
cx,cy:图像的主点(光轴与成像平面交点)在像素坐标系中的坐标。
5. P
三维空间点坐标向量。
这个公式说明了如何将三维世界中的点 (X, Y, Z) 投影到相机成像平面上,并转化为像素坐标 (u,v):
通过相机内参矩阵 K 将三维点的相机坐标系 (X,Y,Z) 转换为归一化平面坐标。
乘以深度 Z 来恢复真实的像素坐标。
投影公式展开:
从公式中可以解出像素坐标 (u,v):
标定板
标定板生成工具:https://calib.io/pages/camera-calibration-pattern-generator
标定板的脚点定义:角点的个数为棋盘格的标定大小,因此(9 * 6)标定板应有(10 * 7)个黑白方格

安装camera-usb功能包
安装标定程序
启动USB相机
查看相机的话题

启动标定程序
-size 当前标定板大小
-square 每个小棋盘格的边长,单位米
image:=/camera1/image_raw 图像来源主题
camera:=/usb_cam 相机名称
标定方法:
调整标定板按照以下顺序调整标定板,使得相机拍摄尽量多的不同视角下的有效照片
前后移动标定板
上下移动标定板
左右移动标定板
沿Yaw轴旋转标定板
沿Pitch轴旋转标定板
沿Roll轴旋转标定板
当X、y、Size、Skew状态条变为绿色时表示结果良好按下“CALIBRATE”即可进行内参的计算

标定完成后点击”SAVE”

文件保存在' ` /tmp/calibrationdata.tar.gz `

移动文件并解压所

image_height、image_width:图片的高、宽
camera_name:摄像头名
camera_matrix:摄像头的内部参数矩阵
distortion_model:畸变模型
distortion_coefficients:畸变系数(主要数据:依次为K_1, K_2, P_1 P_2, K_3)
rectification_matrix:为矫正矩阵,一般为单位阵
projection_matrix:为外部世界坐标到像平面的投影矩阵(主要数据:依次为f_x, f_y, c_x, c_y)
应用


参考文章:
原文链接:https://blog.csdn.net/xzy53719/article/details/135839286
原文链接:https://blog.csdn.net/m0_56661101/article/details/132732905
原文:《视觉-SLAM十四讲_book2,chapt5—真孔相机模型》