天天看点

摄像机标定03之矫正

标定摄像机通常是想做两件事,一个是矫正畸变效应,另一个是根据获得的图像重构三维场景。 OpenCV提供一个直接使用的校正算法,即输入原始图像和由函数cvCalibrateCamera2()得到的畸变系数,生成校正后的图像。我们既可以一次性通过函数cvUndistort2()使用该算法完成所有事项, 也可以通过一对函数cvInitUndistortMap()和cvRemap()来更有效率的处理此事,这通常适合视频或者从同一摄像机中得到多个图像的应用。 “校正”和“矫正”的关系,“矫正”是在数学上去掉透镜畸变,而“校正”是数学上将图像排列整齐。

基本方法是:  先计算畸变映射,再矫正图像。函数cvInitUndisortMap()用于计算畸变映射,而函数cvRemap()表示在任意图像应用该映射。函数cvUndistort2()是在一次调用中先后完成两个步骤。但是计算畸变映射是一个耗时的操作,所以,当畸变映射不变的时候随时调用函数cvUndistort2()是一种不聪明的做法。最后,如果有一系列的2D点,我们可以调用函数cvUndistortPoints()从原始坐标变换到矫正后的坐标。