相机校准
概述
1.标定目的:获得相机的内参和外参。
2.标定方法:可以采用棋盘格标定法。
3.标定原理:利用相机的小孔成像模型。
4.注意:相机的内参矩阵取决于相机的内部参数,与标定板和相机的相对位置没有关系。
坐标转换关系
四个坐标系的变换关系:
公式推导
相机位姿计算
相机的三维姿态角(欧拉角)是相机绕坐标系三个坐标轴(X、Y、Z轴)的旋转角度。包括俯仰角pitch,横摆角yaw,翻滚角roll,这三个角度都会对单目相机的视觉测量定位产生一定的影响。
旋转矩阵R求解
通过上述标定计算可以得出相机坐标系相对世界坐标系的旋转矩阵R,Opencv和Matlab也提供了相应的标定工具,可以直接调用函数或用工具箱来求解相机的内外参。
目前常用的方法是PnP(Perspective-N-Point)标定技术,PnP标定技术利用图像上特征点的二维图像坐标和特征点在靶标坐标系中的三维坐标计算相机坐标系和靶标坐标系之间的位姿关系,表述为相机坐标系与靶标坐标系的转换矩阵R和平移向量T。
Opencv中PNP的求解函数
输入:objectPoints,imagePoints,cameraMatrix(内参矩阵),distCoeffs
输出:R,T
void solvePnP(InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec, OutputArray tvec, bool useExtrinsicGuess=false, int flags = SOLVEPNP_ITERATIVE)
旋转矩阵和姿态角的转换
假设绕X、Y、Z三个轴旋转的角度分别为,
,
,则三次旋转的旋转矩阵计算方法如下:
相机的姿态角可以由旋转矩阵R通过下式计算出来。
旋转矩阵:
姿态角:
姿态角的直观视图
下图为以相机坐标系和世界坐标系为中心的外参示意图。由此,我们可以直观地看到每张棋盘格图片相对于相机的姿态变化或者相机相对于每张图片的姿态变化。
Matlab计算示例
MATLAB提供了相机姿态角的计算函数,默认是Z-Y-X的旋转顺序。
通过对上文3张图片的旋转矩阵进行计算,可得:
三列分别代表相机相对于世界坐标系三个方向的姿态角。
单目视距
测距原理
单目视觉测距是从二维图像信息中获取三维空间信息的过程,所使用的几何模型是针孔成像模型中相似三角形的对应比例关系。要获得二维和三维的精确对应,必须对相机进行标定,并对物体所在的平面、相机的高度、姿态角进行约束,以保证测距的准确性。
不改变态度的测距公式
有pitch的测距公式
有pitch和yaw的测距公式
文章出处登录后可见!