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、立体标定

立体标定是计算空间上两台摄像机几何关系的过程。立体校正则是对个体图像进行纠正的过程,这样保证这些图像可以从像平面行对准的两幅图像获得。

 

posted @ 2019-04-10 21:28  Maurice-code  阅读(529)  评论(0编辑  收藏  举报