OpenCV---0012(相机标定)
立体视觉
对图像的处理及从图像中提取信息的最终目的是得到环境的信息
本章将介绍单目相机的成像模型 模型参数 以及双目相机的成像模型和模型参数确定
单目视觉
单目视觉是指通过单一的相机成像对环境进行观测得视觉系统
最重要的参数就是相机的内参系数 它反映了 环境信息到图像信息的映射关系
测量相机的内参系数是使用摄像头前的首要工作 确定摄像头内参系数得过程叫做摄像头标定 或者 相机标定
坐标系;
像素坐标系
图像坐标系
相机坐标系: 来描述观察环境和相机之间的相对位姿
单目投影
将三维坐标转为图片坐标
imgP,jac = cv.projectPoints(objP,rvec,tvec,cm,dc)
imgP: 二维坐标
jac: 雅可比行列式
rvec: 世界坐标系到相机坐标系的旋转向量
tvec: 世界坐标系到相机坐标系的平移向量
cm: 内参矩阵
dc: 畸变矩阵
单目位姿估计
根据成像原理 如果知道相机的内参矩阵 世界坐标系中若干三维点的三维坐标和
空间点在图像中的投影 就可以计算出世界坐标系 到 相机坐标系的旋转向量 和
平移向量
在这种情况下 我们可以得到相机在世界坐标系中的姿态
由此可以得到 前一时刻到当前时刻相机的运动变化
进而得到视觉里程计
理论上来说 只要知道世界坐标系中三个三维点的三维坐标对应的
图像中坐标 就可以计算出世界坐标系和相机坐标系之间的检测关系
称为P3P
如果点数大于3 则可以更加精确 称为PnP
函数:
retval,rvec,tvec = cv.solvePnP(objP,imgP,cx,dc,flag)
rvec: 世界坐标系变换到相机坐标系的旋转向量
tvec: 世界坐标系变换到相机坐标系的平移向量
objP: 世界三维坐标系的三维坐标
imgP: 三维点在图片 对应的二维点坐标
cx: 内参矩阵
dc: 畸变矩阵
flag PnP方法标志
旋转向量和旋转矩阵之间相互转换
dst,jac = cv.Rodrigues(src)
dst: 旋转矩阵或旋转向量
src: 旋转向量或者旋转矩阵
双目视觉
由于单目相机无法获得深度信息 所以 只能得到三维点在相机坐标系中所在的直线
可以通过增加测量深度信息的传感器或者增加一部相机变为双目相机。
根据同一三维点在两部相机拍摄的图像中 的坐标计算得到三维点的深度信息
双目相机的标定
1. 确定两个相机各自的内参矩阵 和 畸变系数
2. 计算两个相机的间的旋转向量和平移向量
3. 进行矫正
双目计算机的标定和单目计算机标定相似
通过相机在不同的位置拍摄同一个棋盘 然后根据棋盘内角点在图像中的坐标和
世界坐标系中坐标 计算需要标定的参数
世界坐标系: 人为指定的绝对坐标系
retval,cm1,dc1,cm2,dc2,R,T,E,F =
cv.stereoCalibrate(objP,imgP1,imgP2,imgSize)
cm1 相机1内参矩阵
cm2 相机2内参矩阵
dc1 相机1畸变矩阵
dc1 相机2畸变矩阵
R 相机坐标系间 旋转矩阵
T 相机坐标系间 平移矩阵
E 相机间 本征矩阵
F 相机间 基本矩阵

浙公网安备 33010602011771号