opencv标定流程
1、棋盘
给定一个棋盘图像,可以使用OpenCV函数cvFindChessboardCorners()来定位期盼的角点。
2、亚像素角点
cvFindChessboardCorners()返回的角点仅仅是近似值。这意味着实际上位置的精度受限于图像设备的精度,即小于一个像素。使用find4QuadCornerSubpix()对粗提取的角点进行精确化。
3、绘制棋盘角点
cvDrawChessboardCorners()将发现的所有角点绘制到所提供的图像上。
4、摄像机标定
一旦我们有多个图像的角点,就可以调用函数cvCAlibrateCamera2().
5、矫正
如我们已经提到过,标定摄像机通常是想做两件事,一个是矫正畸变效应,另一个是根据获得的图像重构三维场景。再深入第12章讨论第二个复杂任务之前,我们先花点时间考虑第一个任务。
OpenCV可以通过一堆函数cvInitUndistortMap()和cvRemap()来有效率地处理此事,这通常适合视频或从同一摄像机中得到多个图像的应用。
基本方法是先计算畸变映射,再矫正图像。函数cvInitUndistortMap()用于计算畸变映射,而函数cvRemap()表示在任意图像应用该映射。
另,罗德里格斯变换
当处理三维空间的时候,常常需要用3*3矩阵表征空间旋转。另外一个容易可视化的表示方式是用向量形式表示旋转,而该旋转每次用单个角度来操作。这种情况下,最标准的方式是仅用一个向量来说明绕坐标轴的旋转,向量长度表示绕轴逆时针旋转的角度。
本征矩阵和基础矩阵
我们还需要两个因素,本征矩阵E和基础矩阵F。本征矩阵E包含在物理空间中两个摄像机相关的旋转和平移信息,基础矩阵F除了包含E的信息外还包含了两个摄像机的内参数。由于基础矩阵F包含了这些内参数,因此它可以在像素坐标系将两台摄像机关联起来。
1、立体标定
立体标定是计算空间上两台摄像机几何关系的过程。立体校正则是对个体图像进行纠正的过程,这样保证这些图像可以从像平面行对准的两幅图像获得。