广角镜头的标定、畸变校正和基于ROS的实时视频输出

摘自:https://blog.csdn.net/abc039510/article/details/88421490?utm_medium=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.control

广角镜头的标定、畸变校正和基于ROS的实时视频输出

whu-hk 2019-03-12 15:19:47 1542 收藏 9

分类专栏: 相机标定 ROS包 文章标签: 广角镜头 ROS启动包 标定与畸变校正 鱼眼模型

版权

参考网址:
1.棋盘格标定 https://blog.csdn.net/u011475210/article/details/79185543
2.镜头参数调整 https://blog.csdn.net/akay1997/article/details/76421757/
3.实时畸变校正 https://blog.csdn.net/lcydhr/article/details/72726396

一.标定

鱼眼相机成像模型不同于普通镜头的针孔成型模型。 广角镜头介乎于普通镜头与鱼眼镜头之间,畸变程度也介乎两者之间。 本人采用3.6mm、全视角范围90°的一款广角镜头,之前采用普通镜头的标定方法效果不是很理想,转向OpenCV3版本引入的fisheye模型
cv::fisheye model
内参矩阵、坐标轴倾斜系数skew等属性与普通镜头相同,不同的是畸变系数。畸变主要分径向与切向两种,径向畸变发生在相机坐标系转图像物理坐标系的过程中。而切向畸变是发生在相机制作过程,其是由于感光元平面跟透镜不平行。
普通镜头的畸变参数:k1,k2,k3——径向畸变系数,p1,p2——切向畸变系数。
鱼眼镜头的畸变系数:k1,k2,k3,k4

标定程序源码参考Visual Studio工程github代码地址

二.畸变校正

cv::fisheye提供两种畸变校正方法:
(1) initUndistortRectifyMap + Remap;
(2) undistortImage
API具体信息参考OpenCV官网,需要说明的是第二种其实是第一种方法的组合,但在具体应用方面需要注意的是,第一种initUndistortRectifyMap计算原图与畸变校正图之间的变换即map1和map2,这两个参数可以只计算一次作为全局变量,只要镜头的分辨率等信息不改变,后续进行Remap操作即可,而第二种方式多应用于单张图片的畸变校正,用于视频流的畸变校正则大大影响实时效率,因为每一帧图像都重新计算了map1与map2。

三.基于ROS的多分辨率视频输出

本文采用的镜头支持多种分辨率,主要为640x480/1280x720/1920x1080三种。16:9的宽高比容易获得较宽的视野,但需要改变视频流的编码方式,改为‘mjpg’格式,4:3则视野较窄,‘yuyv’格式编码即可。通过将分辨率的宽和高分别作为参数写入ROS的launch文件中,实现多分辨率的不同roslaunch启动方式。
ROS包github地址:https://github.com/whu-hk/usb_cam_opencv
不同分辨率下镜头内参、畸变系数定义在/include/usb_cam_opencv/usb_cam_opencv.h中,根据自己镜头的参数调整。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值