Table of Contents
进行摄像机标定的目的:求出相机的内、外参数,以及畸变参数。
标定相机后通常是想做两件事:一个是由于每个镜头的畸变程度各不相同,通过相机标定可以校正这种镜头畸变矫正畸变,生成矫正后的图像;另一个是根据获得的图像重构三维场景。
摄像机标定过程,简单的可以简单的描述为通过标定板,如下图,可以得到n个对应的世界坐标三维点Xi和对应的图像坐标二维点xi,这些三维点到二维点的转换都可以通过上面提到的相机内参K,相机外参R和t,以及畸变参数D,经过一系列的矩阵变换得到。
1、kalibr多摄像机标定
kalibr提供两种标定方法,标定板标定和IMU联合标定。IMU联合标定又分了两种,都需要移动摄像机测其加速度和角速度,这里只讨论第一种方法。
kalibr支持小孔摄像机模型 pinhole camera model 代号(pinhole),全景(鱼眼)摄像机模型 omnidirectional camera model代号 (omni),double sphere camera model (ds) 和extended unified camera model (eucm),
畸变模型支持四种:
(1) radial-tangential模型代号 (radtan) 畸变参数 (distortion_coeffs: [k1 k2 r1 r2])
(2)equidistant模型代号 (equi)畸变参数(distortion_coeffs: [k1 k2 k3 k4])
(3) fov模型代号 (fov)畸变参数(distortion_coeffs: [w])
(4)none (none)无畸变
1.1 系统安装,环境配置:实测Ubuntu 16.04
github地址https://github.com/ethz-asl/kalibr/wiki/installation
按此教程安装原作者只tested on Ubuntu 14.04 with ROS indigo,在Ubuntu 16.04上测试各种坑:
(1)首先ROS版本不对,Wily (Ubuntu 15.10), Xenial (Ubuntu 16.04) and Jessie (Debian 8)需要用Kinetic版,indigo only for Ubuntu 14.04,解决方法 apt-cache search ros-kinetic 再install
(2)实际上还是第一个问题,在step1中:sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-indigo-vision-opencv ros-indigo-image-transport-plugins ros-indigo-cmake-modules python-software-properti