-
鱼眼畸变图像标定校正源码
2020-09-17 10:00:28该算法能标定鱼眼畸变图像的原点和半径,利用球面坐标定位法校正畸变图像,使用双线性插值法填充校正后图像,本程序在vc6下实现鱼眼摄像头畸变图像校正,调试前必须安装OpenCV和vc6 -
java鱼眼相机标定_鱼眼相机标定方法及标定装置制造方法
2021-03-08 19:40:32鱼眼相机标定方法及标定装置制造方法【专利摘要】本发明公开了一种鱼眼相机标定方法及标定装置,包括:建立所述鱼眼相机的成像模型;从不同视角采集多幅标定板图像,在所述标定板图像上获取特征点的坐标,参考所述...鱼眼相机标定方法及标定装置制造方法
【专利摘要】本发明公开了一种鱼眼相机标定方法及标定装置,包括:建立所述鱼眼相机的成像模型;从不同视角采集多幅标定板图像,在所述标定板图像上获取特征点的坐标,参考所述标定板图像的格式调整所述特征点的坐标,并根据所述标定板图像中所述特征点的预设规律,确定所述特征点的世界坐标;以RMS重投影误差为评估值,计算所述标定板图像的畸变中心偏移的初值;最小化所述RMS重投影误差,优化内参和外参。由上述内容可知,本发明提供的技术方案无需特殊的标定设备,能够适用于大多数鱼眼相机,提高了标定方法的适用性和标定结果精准度。
【专利说明】鱼眼相机标定方法及标定装置
【技术领域】
[0001] 本发明涉及鱼眼相机【技术领域】,更为具体的说,涉及一种鱼眼相机标定方法及标 定装置。
【背景技术】
[0002] 近年来,由于鱼眼相机能够提供180度的视野摄像范围,在诸多领域得到了广泛 应用,例如,在机器人导航、三维建模、行车安全等领域。但是,鱼眼相机提供大角度视野摄 像范围的同时,伴随而来的是图像的鱼眼畸变,因此,鱼眼相机的应用往往需要设定鱼眼相 机的精准参数,即需要进行标定。而鱼眼相机标定结果的精度直接影响其衍生产品的精准 度,因此,标定技术得到了广泛关注。但是,采用现有标定技术受限于相机类型和特殊标定 设备的要求,适用性低;或者受限于标定计算模型,标定结果精准度差。
【发明内容】
[0003] 有鉴于此,本发明提供了一种鱼眼相机标定方法及标定装置,无需特殊标定设备, 适用于大部分的鱼眼相机,提高了其适用性和标定结果精准度。
[0004] 为实现上述目的,本发明提供的技术方案如下:
[0005] -种鱼眼相机标定方法,包括:
[0006] 建立所述鱼眼相机的成像模型;
[0007] 从不同视角采集多幅标定板图像,在所述标定板图像上获取特征点的坐标,参考 所述标定板图像的格式调整所述特征点的坐标,并根据所述标定板图像中所述特征点的预 设规律,确定所述特征点的世界坐标;
[0008] 以RMS重投影误差为评估值,计算所述标定板图像的畸变中心偏移的初值;
[0009] 最小化所述RMS重投影误差,优化内参和外参。
[0010] 优选的,所述最小化所述RMS重投影误差,优化内参和外参包括:
[0011] 以LM算法最小化所述RMS重投影误差,优化内参和外参。
[0012] 优选的,所述建立所述鱼眼相机的成像模型包括:
[0013] 获取空间中任意一景点在世界坐标系中的齐次坐标为X,在传感器平面中的投影 为U" ' = [U" ',v" ' ]T,在规范化平面中的投影为u" = [u",v" ]T,以及,在成像平 面中的投影为U' =[U',v' ]T,其中,所述U"与U'关系式为:
【权利要求】
1. 一种鱼眼相机标定方法,其特征在于,包括: 建立所述鱼眼相机的成像模型; 从不同视角采集多幅标定板图像,在所述标定板图像上获取特征点的坐标,参考所述 标定板图像的格式调整所述特征点的坐标,并根据所述标定板图像中所述特征点的预设规 律,确定所述特征点的世界坐标; 以RMS重投影误差为评估值,计算所述标定板图像的畸变中心偏移的初值; 最小化所述RMS重投影误差,优化内参和外参。
2. 根据权利要求1所述的鱼眼相机标定方法,其特征在于,所述最小化所述RMS重投影 误差,优化内参和外参包括: 以LM算法最小化所述RMS重投影误差,优化内参和外参。
3. 根据权利要求2所述的鱼眼相机标定方法,其特征在于,所述建立所述鱼眼相机的 成像模型包括: 获取空间中任意一景点在世界坐标系中的齐次坐标为X,在传感器平面中的投影为 U" ' = [u" ',v" ' ]τ,在规范化平面中的投影为U" = [U",ν" ]τ,以及,在成像平面 中的投影为U' =[u',ν' ]τ,其中,所述U"与U'关系式为:
其中,Rmr = IW/IW,IW为像素宽高比,IW为显示宽高比,Rmr为存储宽高比; 所述u"'与所述u"关系式为:
其中,A和T为所述内参中相机制造偏差的参数; 以及,所述鱼眼相机的成像模型为: A*p=A*g(u"' )= λ· g(Au" +T) = λ · g(A · K(u' )+T) = P · X 其中,λ > 〇 ;p为所述鱼眼相机的视点至所述景点的向量,P为世界坐标系与相机坐 标系的透视矩阵;g为成像函数,且表示为g(u" ',V" ' ) = (U" ',V" ',f(P"')) T,f(p "')为所述鱼眼相机畸变函数,f(p " ' ) = aQ+aip " ' +a2(p " ' )2+… aN(P " ' )N,
,以及,所述鱼眼相机成像模型中的A,T,aQ, a2, . . .,aN均为所述内参,P为所述外参。
4. 根据权利要求3所述的鱼眼相机标定方法,其特征在于,所述参考所述标定板图像 的格式调整所述特征点的坐标包括: 根据所述标定板图像的格式,确定所述标定板图像的显示宽高比;根据所述标定板图 像的格式的宽高,计算所述标定板图像的存储宽高比;以及,根据公式所述Rsak = Rdak/Rpak, 计算所述标定板图像的像素宽高比; 根所述标定板图像的显示宽高比、存储宽高比、像素宽高比、所述特征点对应成像平面 的坐标和所述U"与U'关系式,计算所述特征点对应所述规范化平面的坐标。
5. 根据权利要求4所述的鱼眼相机标定方法,其特征在于,所述以RMS重投影误差为评 估值,计算所述标定板图像的畸变中心偏移的初值包括: 531、 初始化所述内参A为单位阵,对所述内参T设定搜索区间范围,并对所述搜索区间 范围网格化得到多个网格点; 532、 根据所述内参A、所述网格点对应的内参T、所述特征点对应所述规范化平面的坐 标和所述u"'与所述u"关系式,计算所述特征点对应所述传感器平面的坐标,以及,计 算所述网格点对应的RMS重投影误差; 533、 以当前计算出的最小的RMS重投影误差所对应的网格点为中心,重新设定所述搜 索区间范围,并按相应比例更新网格化的所述搜索区间范围的网格大小; 534、 重复所述步骤S32至步骤S33,直至所述搜索区间范围缩小到预设精度要求,则确 定对应RMS重投影误差最小的网格点所对应的内参T为所述标定板图像的畸变中心偏移的 初值Tinit。
6. 根据权利要求5所述的鱼眼相机标定方法,其特征在于,所述对所述搜索区间范围 网格化得到多个网格点为: 对所述搜索区间范围网格化为矩形网格得到m*n个网格点,且每个网格的尺寸相同,m 和η均为不小于2的整数。
7. 根据权利要求6所述的鱼眼相机标定方法,其特征在于,对所述搜索区间范围网格 化为矩形网格得到7*7个网格点,且每个网格的尺寸相同。
8. 根据权利要求5所述的鱼眼相机标定方法,其特征在于,所述以LM算法最小化所述 RMS重投影误差,优化内参和外参包括: 设定LM算法的优化参数为所述内参A和内参T,其中,设定所述内参A的优化初始值为 单位阵,所述内参T的优化初始值为所述畸变中心偏移的初值Tinit ; 执行所述LM算法最小化所述RMS重投影误差,得到优化后的所述内参,并参考所述鱼 眼相机的成像模型,得到优化后的外参。
9. 一种鱼眼相机标定装置,其特征在于,包括: 鱼眼成像建立模块,用于建立所述鱼眼相机的成像模型; 处理模块,用于从不同视角采集多幅标定板图像,在所述标定板图像上获取特征点的 坐标,参考所述标定板图像的格式调整所述特征点的坐标,并根据所述标定板图像中所述 特征点的预设规律,确定所述特征点的世界坐标; 计算模块,用于以RMS重投影误差为评估值,计算所述标定板图像的畸变中心偏移的 初值; 优化模块,用于最小化所述RMS重投影误差,优化内参和外参。
10. 根据权利要求8所述的鱼眼相机标定装置,其特征在于,所述优化模块以LM算法最 小化所述RMS重投影误差,优化内参和外参。
【文档编号】G06T7/00GK104392435SQ201410627763
【公开日】2015年3月4日 申请日期:2014年11月10日 优先权日:2014年11月10日
【发明者】徐以强, 李庆, 闫硕, 梁艳菊, 秦瑞, 高荣, 鲁斌, 常嘉义, 陆菁 申请人:中科院微电子研究所昆山分所
-
matlab打开笔记本摄像头_8.图像视觉(1) 鱼眼摄像头标定和图像畸变矫正
2021-01-02 18:52:16最近项目上研究鱼眼摄像头的画面畸变问题,对比了基于Matlab和Python Opencv的方法,分别进行了摄像头的标定和图像矫正,实际结果个人认为Opencv的效果为佳,本文分享一下基于Matlab的鱼眼摄像头标定和图像畸变矫正...前言:最近项目上研究鱼眼摄像头的画面畸变问题,对比了基于Matlab和Python Opencv的方法,分别进行了摄像头的标定和图像矫正,实际结果个人认为Opencv的效果为佳,本文分享一下基于Matlab的鱼眼摄像头标定和图像畸变矫正
。
关键字:鱼眼摄像头;摄像头标定;图像畸变矫正
1、鱼眼摄像头介绍
鱼眼摄像机可以独立实现大范围无死角监控的全景摄像机,其概念与初级成品诞生已久,但成熟商用产品直到08年才正式出现。又因为国内安防方面的标准大多围绕模拟摄像机与网络摄像机展开,故此对于全景摄像机还没有较为统一的标准定义,使得在具体到某些项目实施的过程中会存在认同度方面的问题。总的说来,当下主流全景摄像机采用吊装与壁装方式可分别达到360°与180°的监控效果,而某些只有120°到130°视场角的摄像机,因为能达到客户对一个较为开阔面积的监控诉求,亦可被称为全景摄像机。
图1:安防鱼眼摄像头
图2:车载鱼眼摄像头(倒车雷达)
2、Matlab鱼眼摄像头标定
2.1 采集标定数据
常规使用的是棋盘标定法,所以用的标定块如下图所示。这个标定板可以自己网上下载一个,或者用matlab画一个,这个不是很难。注意一点,在用摄像头采集数据的时候,要保证标定板是处于一个平整的位置。我用的比较简陋,就直接打印在纸上,平铺在桌面上,进行数据采集了。这里可以拍20张左右,多变换一点角度,还有距离。
图3:标定棋盘
采集的数据类似如下图,
图4:采集的数据集
2.2 基于App的摄像头标定
在Matlab App中找到摄像头标定
点击Camera Calibrator这个应用,显示如上图案,点击add images,
程序会要求输入棋盘的边长,这个要自己进行测量,当然测量要尽量准确。
添加之前制作好的数据集,它会经过一定的筛选,剔除不合格的图片。
matlab会给每张图片建坐标系。
选择自己要矫正的参数,点击按钮calibrate,进行对相机进行标定。以棋盘为中心的相机的位姿图
以相机为中心的棋盘的位姿图
最后选择export camera parameters,将我们需要的内参进行导出。
2.3 基于代码的标定
Matlab自带函数可以直接实现标定,本文图片是Matlab自带的图片,仅供讲解说明。
% 图片集合images = imageDatastore(fullfile(toolboxdir('vision'), 'visiondata','calibration', 'gopro'));imageFileNames = images.Files; % 标定边框[imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames);% 生成标定格子的实际坐标squareSize = 0.029; % 标定格子大小worldPoints = generateCheckerboardPoints(boardSize, squareSize);% 标定摄像头I = readimage(images, 1); % 任取其中一张图片imageSize = [size(I, 1), size(I, 2)];% 获取图片长宽params = estimateFisheyeParameters(imagePoints, worldPoints, imageSize);
任意打开一张鱼眼照片测试效果
imageFileName = fullfile(toolboxdir('driving'), 'drivingdata', 'checkerboard.png');I = imread(imageFileName);imshow(I)
进行画面矫正
% 画面矫正[J1, camIntrinsics] = undistortFisheyeImage(I, params.Intrinsics, 'Output', 'full');imshow(J1)
可以看出Matlab是把整张图全部进行了矫正,导致了4个角落出现尖锐画面,同时画面上下左右出现黑框,为了更好地使用照片,还需要把图片裁剪(imcrop函数),期望输入如下图;
启发思考:在现在的高档车上一般配备有360°环绕视频功能(效果下图),给行车带来了极大便利,尤其是我这种不擅于倒车的
,其基本原理和本文类似,感兴趣的读友可以思考一下它怎么实现的,后续也将分享其做法
-
鱼眼相机标定_鱼眼镜头内参标定
2020-12-02 13:58:08一、简介 本文主要介绍鱼眼镜头成像和内参标定技术,结合实际应用场景,解决不同领域使用鱼眼镜头进行内参标定的应用难题。 什么是鱼眼镜头?鱼眼镜头是一种焦距为16mm或更短的并且视角接近或等于180°的镜头。因其...一、简介
本文主要介绍鱼眼镜头成像和内参标定技术,结合实际应用场景,解决不同领域使用鱼眼镜头进行内参标定的应用难题。
什么是鱼眼镜头?鱼眼镜头是一种焦距为16mm或更短的并且视角接近或等于180°的镜头。因其具有超大视场,因而被广泛应用于场景监视、卫星定位、智能零售、视觉导航、辅助驾驶及工程测量等领域。鱼眼图像最重要的一个特点就是中间畸变小,边缘畸变大。鱼眼图像畸变校正后就可以建立三维空间坐标与畸变校正图像上的二维坐标之间的转换关系。畸变校正就需要用到内参参数。
什么是内参参数?内参参数是相机固有参数,包括主点(cx、cy)、焦距(fx、fy)和畸变系数(k1、k2、k3、k4)。相机成像模型设计的时候会有理论参数,但经过点胶、烘烤等工艺之后,组装引入误差,会导致每个鱼眼镜头内参都不一样,尽管有AA(Active Alignment)主动对齐技术等提高工艺水准,而AA工艺也有优劣,个体之间的差异仍然存在,同一批次鱼眼摄像头取平均值的low precision方法毫无疑问效果不会理想。就单个鱼眼摄像头而言,如何快速获取准确的内参参数,成为了一个难题。
要想解决鱼眼镜头内参标定中的各种难题,就要先从鱼眼镜头成像说起。
二、成像模型
三、畸变校正
四、内参标定
五、实现应用
六、总结
-
双目鱼眼标定工具编写思考
2017-10-17 10:56:34这一个多礼拜一直在为标定工具的数据传输选择而烦恼。本来服务器端工程和客户端工程师基于TCP/IP协议进行传输,对图像采集的实时传输也能满足需求。但是当拿到客户的原型机的时候却发现原型机只有一个microUSB口,...这一个多礼拜一直在为标定工具的数据传输选择而烦恼。本来服务器端工程和客户端工程是基于TCP/IP协议进行传输,对图像采集的实时传输也能满足需求。但是当拿到客户的原型机的时候却发现原型机只有一个microUSB口,没有任何接口,更不用说网口了。
再过半个月后就要交付工具,着突如其来的变化弄得我措手不及,修改工程是不可能了。试了一下改用WiFi传输,结果发现由于采集的图像是yuv格式,没有经过压缩编码,传输速率不能满足。然后就想办法看能不能在传输之前进行编码,主要方案有启用VE模块编码或者添加ffmpeg库编码,评估了一下工作量,短时间内不可能完成。
没办法,然后就从物理传输介质入手。上网查找了一下,发现有Micro USB转网口以太网转换器,不失为一个解决办法,但是需要系统内核打上相应驱动才行;还有一个办法就是对USB口进行模拟,将其模拟成网口,这个也需要系统部门同事支持。
对于开发,动手之前一定要确定好需求,然后再动手开发,不然后续很可能会推翻原来的设计。使得原来的努力白费。
-
利用opencv棋盘格标定法对鱼眼图像校正分析
2016-09-28 15:27:01利用opencv棋盘格标定法对鱼眼图像校正分析 一、开发环境 PC端、vs2013+opencv3.0、摄像头为淘宝购置的鱼眼摄像头外设+iphone6 二、镜头标定 1. 输入畸变的棋盘格图以及棋盘格的size(横纵坐标上的角点个数... -
鱼眼镜头标定
2021-04-14 13:55:32广角镜头采集的图像有很严重的畸变,表现为图像的分辨率在中心区域较大,而在边缘区域较小,因此广角镜头又叫鱼眼镜头。通常在对广角镜头采集的图像做进一步处理之前,需要对摄像机标定并对图像进行畸变校正。 摄像... -
【opencv3.0】鱼眼图像畸变校正——标定校正 17/11/14更新代码
2016-05-18 08:53:15标定流程 首先调用OpenCV的FindChessboardCorners()来寻找图像上的标定板的角点,再根据标定板的尺寸指定这些角点对应的三维点的三维坐标,再调用fisheye::calibrate()来进行标定,利用标定结果中的内参和畸变参数... -
opencv3.0 鱼眼镜头标定校正
2016-05-21 18:54:56opencv3.0 鱼眼镜头标定校正,来自文章http://blog.csdn.net/qq_15947787/article/details/51441031 内含部分标定图像 -
鱼眼相机图像畸变校正
2020-01-02 15:33:20通过对鱼眼相机做内参标定,可以得到相机的内参和畸变参数。利用上述参数,可以对鱼眼相机获取的原始畸变图像做畸变校正。 1.畸变校正原理 简单回顾下鱼眼相机成像模型,上图中相机坐标系的X轴垂直屏幕向外;且... -
鱼眼相机标定模型
2020-03-08 15:24:15一旦你标定完成了一个camera,你即可从2维图像中去恢复3维图像。你同样可以在在一个鱼眼相机中获得未失真的图像。 鱼眼相机可以被用于里程计(odometry)以及vslam(simultaneous localization and mapping)。其他... -
相机模型与标定(十三)--鱼眼相机标定
2016-07-28 13:25:20原文: ... 先看一张鱼眼相机拍摄出来的结果: 从图中可以看出很明显的畸变。对鱼眼相机标定,有时候也可以...因此对于Gopro等鱼眼镜头拍摄出来的图像去畸变,最好的方法就是采用鱼眼相机标定方法进行标定。 鱼眼相机 -
VS2015+OpenCV3.4.1鱼眼相机标定校正.rar
2019-11-07 14:50:34鱼眼相机标定校正+批量加载多张标定图像+批量处理多张测试图像+角点坐标输出+相机参数输出 -
鱼眼相机标定与畸变矫正程序
2019-04-03 17:21:36利用opencv图像算法库实现对鱼眼相机内外参的标定,并利用标定结果对畸变图像进行校正。 -
鱼眼相机标定以及OpenCV实现
2016-01-07 12:22:18在另一篇文章中我已经写过有关普通相机模型及其OpenCV标定实现,这篇文章将主要关注鱼眼相机模型及其OpenCV标定实现。...因此对于Gopro等鱼眼镜头拍摄出来的图像去畸变,最好的方法就是采用鱼眼相机标定方法进行标定。 -
鱼眼图像校正
2014-10-15 22:10:00鱼眼图像的参数标定和畸变校正,希望对大家有帮助,对学习鱼眼镜头摄像机很有帮助 -
【opencv3.0】鱼眼图像畸变校正——标定校正
2017-06-04 10:25:38首先调用OpenCV的FindChessboardCorners()来寻找图像上的标定板的角点,再根据标定板的尺寸指定这些角点对应的三维点的三维坐标,再调用fisheye::calibrate()来进行标定,利用标定结果中的内参和畸变参数调用... -
鱼眼相机标定与矫正FECC1.0
2017-06-02 09:58:34鱼眼相机标定与矫正FECC1.0(FishEye Camera Calibration and correction) 下载后请阅读ReadMe文档,有问题可以在评论区评价,我有时间会根据评价发布新版本 程序说明 1. 将待校正的拍摄棋盘格的图像放置于Len... -
相机内参_鱼眼相机标定模型
2020-12-27 22:01:41一旦你标定完成了一个camera,你即可从2维图像中去恢复3维图像。你同样可以在在一个鱼眼相机中获得未失真的图像。鱼眼相机可以被用于里程计(odometry)以及vslam(simultaneous localization and mapping)。其他... -
基于opencv的鱼眼相机标定和透视投影
2017-11-22 13:07:53这是用opencv做的相机标定...并且工程里还含有测试图像,是一个180度的鱼眼相机拍摄的棋盘格,能应对各种广角和鱼眼相机的标定。项目工程是在平台vs2015,在其他平台请自己修改一下工程属性,请添加自己的opencv3.x库。 -
使用畸变校正需要标定吗_鱼眼镜头内参标定
2021-01-29 00:24:42一、简介 本文主要介绍鱼眼镜头成像和内参标定技术,结合实际应用场景,解决不同领域使用鱼眼镜头进行内参标定的应用难题。 什么是鱼眼镜头?鱼眼镜头是一种焦距为16mm或更短的并且视角接近或等于180°的镜头。因其... -
opencv3 鱼眼相机标定
2016-09-20 17:58:26鱼眼镜头模型 鱼眼镜头的内参模型可以表示为 ,与普通镜头的内参一样,但畸变... 设(X,Y,Z)为一个三维坐标点,投影在图像上的二维坐标为(u,v),如果不考虑畸变,投影关系如下: R和t分别代表相机外参 -
鱼眼图像畸变校正最终版
2018-09-14 16:13:41鱼眼标定校正 opencv3.0 ,效果还可以,运行环境vs2010,里面配有网格图片,稍微配一下opencv路径,就可以看矫正效果。简单快捷 -
鱼眼相机标定和影像纠正关键知识
2018-09-17 21:07:10A. 简单了解影像矫正的...利用opencv棋盘格标定法对鱼眼图像校正分析 B. 两篇帮助理解的好论文 1)一种基于球面透视投影约束的鱼眼镜头校正方法 2)Line-Based Multi-Label Energy Optimization for Fishey... -
鱼眼镜头标定及畸变校正
2020-10-03 17:29:03鱼眼摄像头畸变校正的方法: 棋盘矫正法 经纬度矫正法。 相机为什么会出现畸变? 当前相机的畸变主要分为径向畸变和切向畸变两种。 径向畸变产生的原因:相机的光学镜头厚度不均匀,离镜头越远场景的光线就越弯曲... -
论文研究-一种鱼眼镜头标定板的设计、检测与排序方法.pdf
2019-09-11 06:46:33针对鱼眼镜头的标定问题,结合其成像宽视野范围需求和高畸变特性,设计实现了适用于鱼眼标定的宽幅多特征圆标定板;基于该种标定板,给出了基于椭圆检测和参数拟合的特征点高精度检测和可靠性排序算法。实验结果表明... -
一种新的基于球面模型的鱼眼镜头标定方法
2021-03-02 08:51:03提出了一种新的基于二维靶标的球面模型鱼眼镜头标定方法。根据球面成像模型中圆弧上的点与图像坐标系像点之间的约束关系,利用平面靶上的一根直线上的点,初步估计出摄像头的内部参数。利用平面靶上棋盘格角点在世界... -
单幅鱼眼图像的矫正
2018-09-14 17:14:57鱼眼矫正算法,经纬度鱼眼矫正,不需要标定,直接使用 -
鱼眼图像畸变矫正
2018-12-04 11:31:47在OpenCV3.41 vs2017环境下编译运行,摄像机标定,能够对鱼眼镜头进行畸变矫正,但效果感觉不是特别好,希望能改进吧