鱼眼相机成像技术

摘要:
鱼眼相机成像技术一.特征点选取方法1.角点选取以待检测像素为圆心,3为半径,做一个圆,与圆相交的共有16个像素,检测这16个像素中与中心点的像素差大于某个阈值T时n+1,,若这16个点检测完成时n˃N则认为该待检测像素为角点,然后循环这个过程检测没一个像素。所以对于鱼眼相机,需要标定的内参为焦距f,图像中光心位置Co和多项式映射函数的系数ki,有的还会加上切向畸变参数pi等。

鱼眼相机成像技术

一.特征点选取方法

1.角点选取

以待检测像素为圆心,3为半径,做一个圆,与圆相交的共有16个像素,检测这16个像素中与中心点的像素差大于某个阈值T时n +1,,若这16个点检测完成时n>N(N一般取11或者9)则认为该待检测像素为角点,然后循环这个过程检测没一个像素。

2.特征点选取

KNN 算法会为每个特征点计算出对应的最近距离匹配点,但是由于两个图像并不一定重合,因此部分特征点可能找不到对应的匹配点,需要对计算出的匹配结果进行筛选以删除不可靠的匹配点对。

其中一种筛选方法如下:

鱼眼相机成像技术第1张

设置 KNN 算法中 K 值为2,计算出当前特征点的最近邻以及次近邻;

计算特征点与两个邻点的距离之比是否小于阈值,即;

选择小于阈值的特征点与最近邻作为匹配点对,筛除不匹配的点对。

二.理想相机模型的映射函数

对于单目相机而言,空间的3D点的成像过程可以表达为空间点P(物点)光心O的连线在成像面上的投影p(像点),机器视觉中的所有问题都是关于P,O,p三点的共线问题:已知p和O求P可以看成是重建;已知P和p求O可以看成是标定。如果成像面是平面,就是常规的小孔成像模型的线性相机。成像面也可以是球面,一个成像点p可以对应一条空间射线,只有两个自由度,可以用地球上的经度和维度表达,地球的中心在坐标(0,0,0),半径为rad。这样每个3D点都可以用球面二维角度坐标来表达。成像过程可以看成是一个降维过程。

鱼眼相机成像技术第2张

如果相机透镜光心在(0,0,0)位置,则只能是线性投影,即空间直线投影成平面直线。对于相机成像模型(包括线性投影模型和广角/鱼眼相机模型),可以理解成空间3D点在球面上投影以后再次投影到真正的投影面上,从而使原来只能在球面上成像的点投影到一个平面上,这个平面可以是地球表面在北极点的切平面,而投影中心(光心)位置可在南北极的轴线上移动,如下图所示:

鱼眼相机成像技术第3张

另一种理解方式是假设有一个理想的小孔成像的相机,光轴方向从南极指向北极,光心(相机的透镜中心)位置可以在北极(0,0,rad)到南极(0,0,-rad)之间的轴线上移动。

鱼眼相机成像技术第4张

不论假设成像平面在哪里,相机光心在不同的位置可以对应不同的映射函数:

1. 透射映射(Perspective):当相机的光心处在地心(0,0,0)位置,对应理想的小孔成像相机的模型。又称rectilinear,即空间中直线的成像也是直线。此时光心到成像面(相机的CCD)的距离为焦距f,空间点与光轴的夹角为θ,那么成像点在图像上对应的半径为R = f*tan(θ)。当f固定,θ增大到接近90度时,此时成像的入射光线与CCD平行,R为无穷大。就是说,常规的小孔成像模型的缺点: 1.处在赤道上的点无法在小孔相机的CCD上成像,2.理想小孔相机的FOV无法达到180度,3.越靠近赤道的物体以(tan(θ)-tan(θ+dθ))/dθ的比例迅速增大,导致变形严重。

2. 等距映射(Equidistant): R = fθ,成像点的位置R与入射角成正比,比例系数为f。与透射映射相比,解决了tan(90)为无穷大的问题。2D图像上θ对应的等高线为半径等比例变化的同心圆,最大的FOV可以达到360度,这是最简单的一种鱼眼模型。

3. 等立体角投影(Equisolid angle): R = 2fsin(θ/2)。这个是比较常用的模型。

4. 正交投影(Orthographic): R = fsin(θ), 与透射映射不同,不会产生近大远小的透视效果。2D图像上θ对应的等高线从0到90度越来越密。最大的FOV是180度。

5. 球极投影(Stereographic): 是一种将圆球面投影至平面的映射,在几何学里也称共型映射conformal mapping,是一种保角映射。此时相机的光心移到南极的位置,光轴朝向北极,所以有R = 2ftan(θ/2)。最大的FOV可以接近360度。

鱼眼相机成像技术第5张

鱼眼相机成像技术第6张

另外,360度VR应用使用的等距圆柱投影(equirectangular),是在垂直方向上采用等距投影,水平方向采用圆柱投影。用一个圆柱形的圆筒把像球面给包了起来。地球仪到世界地图的映射就是典型的等距圆柱投影。

三.鱼眼图像的画幅

1.Circular (hemispherical) fisheye images:整个半球投影到圆内。水平垂直视角皆为180度。画幅为圆的外接正方形。

2.Full-frame fisheye images:画幅为圆的内接矩形,对角线FOV为180度。水平垂直视角则小于180度。

广角和鱼眼图像校准: 实际相机镜头的加工无法严格按照上面介绍的映射模型精确实现,所有一般用θ的多项式来近似R函数。如文献[4]中的形式: R = fθ(1 + k1θ + k2θ2 + k3θ3 + k44)。

所以对于鱼眼相机,需要标定的内参为焦距f,图像中光心位置Co和多项式映射函数的系数ki(OpenCV以及一般的文档中称为径向畸变参数),有的还会加上切向畸变参数pi等。引入过多的参数可能会导致优化求解过程陷入局部最小值,所以OpenCV文档中默认畸变参数(distortion coefficients) 为k1,k2,k3,k4

鱼眼图像拼接时的外部参数校准
多个鱼眼相机组成的全景视频采集设备,需要校准外参,即每个相机相对于第一个相机的空间关系(通常只有旋转矩阵R)。所有相机的内参和外参以及3D特征点要放在一起做平差(Bundle Adjustment),能量函数定义为空间点(如上面所述表达为360度VR球面上二维点)在各个相机图像上的2D投影误差。下图是6个GoPro广角相机拼接全景视频的示意。

鱼眼相机成像技术第7张

免责声明:文章转载自《鱼眼相机成像技术》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇内存四区SqlServer timestamp数据类型下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

衡量镜头解像能力性能的指标-MTF曲线

MTF(Modulation Transfer Function,模量传递函数),是目前分析镜头解像能力的方法,可以用来评判镜头还原物体对比度的能力。说到MTF,不得不先提一下衡量镜头性能的两在重要指标--分辨率和反差。 一、分辨率: 分辨率(Resolution)又称分辨力、鉴别率、鉴别力、分析力、解像力和分辨本领,是指摄影镜头清晰地再现被摄景物纤...

Unity+NGUI多分辨率适配方案

  说起unity的适配方案,网上可谓是一查一大堆,但是真正要应用到项目中的时候,总会出现各式各样的问题。由于最近自己要做一个小游戏,在开始做游戏之前,就想着先好好搞一搞适配这块,以后新起项目的时候也会用得着。 NGUI应该是现在大部分开发者都会去选择的UI插件,虽然NGUI还存在着不少问题,像是相对来说,NGUI还是比较靠谱的,所以这里只是针对NGUI做...

Halcon 单相机标定+消除径向畸变

单相机标定通常是相机使用的第一步,只有通过标定才能准确的获得相机的内参,以便于进行消除畸变、1D/2D测量等后续操作。 1、生成标定板描述文件 gen_caltab (7, 7, 0.0125, 0.5, 'caltab.descr', 'caltab.ps') 参数含义可以查手册(f1),运行后会在当前目录下生成两个文件: caltab.descr:标定...

线阵相机参数计算,选择合适的相机与镜头

1、精度=物宽/像素,此公式用来选相机。 如要求精度为0.3mm/pixel,物体宽1200mm,那么像素就是4K,所以选择4K相机。 2、物体最大移速=精度×最大行频,此公式用来计算相机是否满足移动速度。 0.3mm/pixel×26000Hz=7617mm/s,即物体移速低于457m/min即可,所以选的4K相机没有问题。 3、物距=焦距×精度/像元尺...

【WP7】关于相机应用程序

在WP OS7.1中,允许我们通过编程的方式访问设备相机,可以通过访问部分API通过相机获取图像 1、把相机获取图像显示在屏幕上   新建一个画布,用于显示相机获取到的图像数据  <Canvas x:Name="cameraViewCanvas" Width="400" Margin="28,4,28,284"> <Canvas....

VisionPro关闭程序断开相机连接

using Cognex.VisionPro.FGGigE; using Cognex.VisionPro.FGGigE.Implementation.Internal; //关闭相机连接,防止程序报错 CogFrameGrabberGigEs cameras = new CogFrameGrabberGig...