⼴⾓镜头标定畸变校正和基于ROS的实时视频输出
⼀.标定
不同于普通镜头的针孔成型模型。 ⼴⾓镜头介乎于普通镜头与鱼眼镜头之间,畸变程度也介乎两者之间。 本⼈采⽤3.6mm、全视⾓范围90°的⼀款⼴⾓镜头,之前采⽤普通镜头的标定⽅法效果不是很理想,转向OpenCV3版本引⼊的:
内参矩阵、坐标轴倾斜系数skew等属性与普通镜头相同,不同的是畸变系数。畸变主要分径向与切向两种,径向畸变发⽣在相机坐标系转图像物理坐标系的过程中。⽽切向畸变是发⽣在相机制作过程,其是由于感光元平⾯跟透镜不平⾏。
普通镜头的畸变参数:k1,k2,k3——径向畸变系数,p1,p2——切向畸变系数。
鱼眼镜头的畸变系数:k1,k2,k3,k4
标定程序源码参考
⼆.畸变校正
cv::fisheye提供两种畸变校正⽅法:
(1) initUndistortRectifyMap + Remap;
东风悦达起亚k3视频
(2) undistortImage
API具体信息参考OpenCV官⽹,需要说明的是第⼆种其实是第⼀种⽅法的组合,但在具体应⽤⽅⾯需要注意的是,第⼀种initUndistortRectifyMap计算原图与畸变校正图之间的变换即map1和map2,这两
个参数可以只计算⼀次作为全局变量,只要镜头的分辨率等信息不改变,后续进⾏Remap操作即可,⽽第⼆种⽅式多应⽤于单张图⽚的畸变校正,⽤于视频流的畸变校正则⼤⼤影响实时效率,因为每⼀帧图像都重新计算了map1与map2。
三.基于ROS的多分辨率视频输出