[转]opencv3.0 鱼眼相机标定

【原文转自】:http://blog.csdn.net/qq_15947787/article/details/51441031

前两天发表的时候没注意,代码出了点错误,所以修改了一下,重新发上来。 
参考: 
http://docs.opencv.org/3.0.0/db/d58/group__calib3d__fisheye.html#gga91b6a47d784dd47ea2c76ef656d7c3dca0899eaa2f96d6eed9927c4b4f4464e05
http://docs.opencv.org/master/modules/calib3d/doc/calib3d.html 
opencv3.0 fisheye model reference 
http://stackoverflow.com/questions/31089265/what-are-the-main-references-to-the-fish-eye-camera-model-in-opencv3-0-0dev/34388476#34388476

Kannala J, Brandt S S. A generic camera model and calibration method for conventional, wide-angle, and fish-eye lenses[J]. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 2006, 28(8): 1335-1340. 
文献地址:http://download.csdn.net/detail/qq_15947787/9583006

opencv也是参考matlab的Calib_gui_fisheye处理,但是不清楚为什么,Calib_gui_fisheye不能准确的提取角点 
鱼眼镜头模型 
  鱼眼镜头的内参模型可以表示为 这里写图片描述,与普通镜头的内参一样,但畸变参数不同,为这里写图片描述,含义如下:

  设(X,Y,Z)为一个三维坐标点,投影在图像上的二维坐标为(u,v),如果不考虑畸变,投影关系如下: 
  这里写图片描述 
  R和t分别代表相机外参中的旋转矩阵和平移向量。 
这里写图片描述

标定流程 
  首先调用OpenCV的FindChessboardCorners()来寻找图像上的标定板的角点,再根据标定板的尺寸指定这些角点对应的三维点的三维坐标,再调用fisheye::calibrate()来进行标定,利用标定结果中的内参和畸变参数调用fisheye::undistortImage()对图像做去畸变操作。最后调用一张待测试的畸变图片利用标定结果进行畸变校正。 

后续,两个代码下载链接:

代码下载: 
附件中删除了部分图像(有脸的图都删了……^-^) 
http://download.csdn.net/detail/qq_15947787/9527601

2016/12/2 20:00在做双目标定及空间点计算时,突然看到stereoRectify有一个alpha参数,可以调节校正图的大小,而initUndistortRectifyMap中的size是校正图的大小,并不是原图大小,这样应该就好办了吧。 
还有一个是在http://blog.csdn.net/dip007/article/details/51498644看到了方法,在这里谢谢他,直接把上面代码的最后一部分替代即可,代码如下 
懒得复制的可以直接下载 
http://download.csdn.net/detail/qq_15947787/9700379

 

转载于:https://www.cnblogs.com/flying-hui/p/6236129.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值