本发明涉及图像视频处理领域,具体涉及一种基于鱼眼图像校正实现鱼眼视频小窗口实时漫游的方法。
背景技术:
鱼眼镜头具有结构紧凑、体积小、不易损坏等优点;同时考虑到采用鱼眼镜头构建的全方位视觉可获取真正意义上的全景球面图像,无盲区,无须考虑图像拼合和嵌接等问题,所以鱼眼镜头是构建全方位视觉系统最有效的方法之一,具有很高的研究价值和广泛的潜在应用前景。目前它在视频监控、视频会议、虚拟现实和机器人导航等领域都具有很广泛的应用。但鱼眼镜头摄像机拍摄的图像具有非常严重的畸变,若要利用这些具有严重变形图像的信息,就需将这些变形图像校正展开为人们所习惯的透视投影图像。因此研究开发一种算法,使鱼眼图像在任意方向轴上的“展开窗口”都能实现实时、精确的校正和展开具有学术意义和实际应用价值。
实现鱼眼视频的校正与漫游一般分为以下几步:鱼眼图像的采集→鱼眼图像预处理→鱼眼图像轮廓提取→图像几何关系变换→基于鱼眼图像的重投影→鱼眼视频漫游的实现。鱼眼图像校正技术主要可以分为三类:基于几何投影、基于相机标定、基于人工智能。基于几何投影模型的校正方法主要是利用空间几何坐标关系进行校正,找到鱼眼图像中的像素点与校正后图像中像素点之间的映射关系,但是基于几何投影模型的校正方法往往受限于鱼眼图像的宽视角,导致有效校正区域小,边缘部分仍存在较大畸变。基于相机标定的校正方法,是建立在鱼眼相机模型的基础上,通过设计适合的标定方法求得相应鱼眼相机的模型参数。鱼眼镜头标定的目的是得到鱼眼相机模型的变形参数,依据这些畸变参数就可以校正当前镜头拍摄的鱼眼图像。然而这种方法的主要问题是,鱼眼镜头生产工艺的精度不一定都能满足要求,而且实际使用的镜头千差万别,特定的畸变模型不一定能够适合多种镜头的成像结果校正法估算多项式的系数。基于人工智能的校正方法,以基于支持向量机(SVM)的方法为例,该类方法避免了畸变模型的选择和选用特定模型带来的局限性问题。使用SVM技术建立校正后图像点与校正前图像点的坐标映射关系,从而实现鱼眼图像的校正,但这种方法需要大量的训练样本,导致工作量巨大,并且训练过程也比较耗时,难以同时满足时效与精度的要求。
综上所述,目前鱼眼视频的校正与漫游存在以下问题:
(1)基于几何投影的鱼眼图像校正方法简便,但是受限于鱼眼镜头的宽视角,导致有效校正区域受限;
(2)基于相机标定的鱼眼图像校正方法对特定镜头校正精度高,但不能同时满足多种鱼眼镜头的畸变校正;
(3)基于人工智能的鱼眼图像校正方法避免了针对特定镜头校正的局限性,但是训练样本大,计算复杂度高且存储空间大,不易于硬件实现。
技术实现要素:
鉴于以上所述现有技术存在的问题和不足,本发明技术方案提供的一种基于鱼眼图像校正实现鱼眼视频小窗口实时漫游的方法,包括以下步骤:
步骤S1,采集鱼眼图像;
步骤S2,鱼眼图像预处理;
步骤S3,鱼眼图像轮廓提取;
步骤S4,计算透视窗口上任意点对应鱼眼图像上的像素点坐标,具体包括以下子步骤,
步骤S4-1,根据步骤3获得像平面及鱼眼镜头半球面,其中像平面为鱼眼图像所在平面,设为XOY平面,鱼眼镜头半球面以鱼眼图像的中心O为球心,R为半径,
步骤S4-2,确定透视窗口的尺寸以及观察视角,其中透视窗口A’B’C’D’与半球面相切于M点,透视窗口的尺寸为A’B’和A’D’的长,分别用a和b来表示,设Q’点为M点在像平面XOY的投影,观察视角用(α,Ω)角对来表示,α代表线段OM与线段OQ’之间的夹角,Ω代表线段OQ’与X轴之间的夹角,
步骤S4-3,将透视窗口上的点先还原到半球面上,再将半球面上该点垂直投影到鱼眼图像像平面,具体实施如下,
设透视窗口上任意点P1(x1,y1)在鱼眼图像中对应的像素点位置P2(x2,y2),两者不在同一个坐标系,以P2所在坐标系O-XYZ三为基准,将P1转换到坐标系O-XYZ中,得P1在O-XYZ坐标系下的坐标为:
计算OP1与半球面的交点S的坐标,
然后再将S点垂直投影到XOY面上得到P2的坐标,
其中,R为鱼眼图像的半径,P2为透视窗口上点P1在鱼眼图像上对应的像素点坐标;
步骤S5,基于鱼眼图像的重投影,将透视窗口上所有点对应于鱼眼图像上像素点的像素值赋给透视窗口上对应的像素点;
步骤S6,在鱼眼图像上添加鼠标的响应事件实现鱼眼视频的漫游。
而且,所述步骤S3,鱼眼图像轮廓提取的具体实施方式如下,
步骤S3-1,从图像第一行开始,在行方向上进行扫描,若当前行中像素的灰度值都为0,则继续扫描下一行,直到在某一行中第一次出现有像素的灰度值不为0,则记录下当前行号H1;
步骤S3-2,接着上一步在行方向上继续进行扫描,若当前行中有像素的灰度值不为0,则继续扫描下一行,直到在某一行中第一次出现所有的像素的灰度值都为0,则记录下当前行号H2;
步骤S3-3,从图像第一列开始,在列方向上进行扫描,若当前行中像素的灰度值都为0,则继续扫描下一列,直到在某一列中第一次出现有像素的灰度值不为0,则记录下当前列号L1;
步骤S3-4,接着上一步在列方向上继续进行扫描,若当前列中有像素的灰度值不为0,则继续扫描下一列,直到在某一列中第一次出现所有的像素的灰度值都为0,则记录下当前列号L2;
步骤S3-5,记录下H1,H2,L1,L2后,圆形区域C可用圆心坐标(x,y)和半径R来表示,
C→{(x,y),R} (1)
其中,
鱼眼图像轮廓则是以圆心坐标(x,y)为中心、半径R的圆形区域轮廓。
与现有的技术相比,本发明具有以下优点和有益效果:
(1)本发明考虑到鱼眼图像校正的精度要求,利用小窗口透视校正的方法,并结合漫游浏览的模式,简洁高效的算法保障图像校正的高精度;
(2)本发明考虑到鱼眼图像校正的时效性,从鱼眼图像的圆形特征出发,建立“球面模型”,利用透视原理进行图像校正,无需大量训练样本,算法复杂度小,便于实现,步骤简明高效。
(3)本发明的方法对各种鱼眼镜头的校正效果良好,具备一定的鲁棒性与普适性,有较强的实用性,同时,用户可以随时随意自行控制视角,观察镜头内的任意地方的实时影像,增强了用户的交互体验性。
附图说明
图1是本发明实施例的总体流程图。
图2是本发明中鱼眼图像的成像模型示意图。
图3是本发明中鱼眼图像校正原理示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步说明。
利用人工智能的方法可以弥补鱼眼图像校正在精度上的不足,但是常用的特征训练算法复杂度较高,样本量需求较大,时效性受到影响,不利于实时的应用。本发明利用小窗口透视方法进行鱼眼图像校正,可以保证局部范围内的校正精度,同时结合窗口漫游的方式,可以实时变换观察视角,在时效性以及精度上都能达到理想效果,还可以增强用户的交互体验效果。
下面以一个鱼眼镜头作为实施例。实施例中选用威鑫视界SY019HD型号的240度广角鱼眼摄像头进行实时鱼眼图像的采集。
本发明基于鱼眼图像校正实现鱼眼视频小窗口实时漫游的实施例具体流程包括:
步骤S1,采集鱼眼图像,一幅完整的鱼眼图像应该是呈圆形状的,周围黑色背景是没有像素值的区域,后续步骤就是基于圆形图像区域进行校正的;
步骤S2,鱼眼图像预处理,图像预处理阶段主要是对图像进行去噪,提高图像质量;
步骤S3,鱼眼图像轮廓提取,即鱼眼图像的像平面轮廓提取,鱼眼图像的圆形轮廓是后续步骤的实施基础。本发明实施例利用“扫描法”进行圆形轮廓进行提取,具体步骤如下:
步骤S3-1,从图像第一行开始,在行方向上进行扫描,若当前行中像素的灰度值都为0,则继续扫描下一行,直到在某一行中第一次出现有像素的灰度值不为0,则记录下当前行号H1;
步骤S3-2,接着上一步在行方向上继续进行扫描,若当前行中有像素的灰度值不为0,则继续扫描下一行,直到在某一行中第一次出现所有的像素的灰度值都为0,则记录下当前行号H2;
步骤S3-3,从图像第一列开始,在列方向上进行扫描,若当前行中像素的灰度值都为0,则继续扫描下一列,直到在某一列中第一次出现有像素的灰度值不为0,则记录下当前列号L1;
步骤S3-4,接着上一步在列方向上继续进行扫描,若当前列中有像素的灰度值不为0,则继续扫描下一列,直到在某一列中第一次出现所有的像素的灰度值都为0,则记录下当前列号L2;
步骤S3-5,记录下H1,H2,L1,L2后,圆形区域C可用圆心坐标(x,y)和半径R来表示,即:
C→{(x,y),R} (1)
其中,
在本实施例中,求得的结果为(单位:像素):
步骤S4,图像几何关系变换,这一步根据“球面展开模型”计算出透视窗口上每个点对应鱼眼图像上的坐标,具体步骤如下:
首先介绍鱼眼成像的“球面展开模型”,如附图2所示,图中的半球即代表鱼眼镜头,O为镜头中心,XOY平面视为像平面,对于任一物方点P,连接其与镜头中心O得到线段PO,PO交半球面(即镜头表面)于P’,再过P’作像平面XOY的垂线,垂足为P”,P”即为物方点P在像平面上的像点。根据这一成像特点,很容易发现鱼眼相机成像的畸变规律,从而实现图像的校正。鱼眼图像的校正过程实际上就是将鱼眼成像面上的点先还原到半球面上,再将半球面上该点对应到校正平面上,即可完成校正,该步骤将透视窗口上每个点对应到鱼眼图像上是一个逆过程。
步骤S4-1,根据步骤3获得像平面及鱼眼镜头半球面,其中像平面为鱼眼图像所在平面,设为XOY平面,鱼眼镜头半球面以鱼眼图像的中心O为球心,R为半径;
步骤S4-2,确定图像校正透视窗口的尺寸以及观察视角。由于本发明每次校正的都只是一个透视窗口内的图像区域,并不涉及整个鱼眼图像区域,因此在对鱼眼图像进行校正变换之前,需要先确定透视窗口的尺寸以及观察视角。如附图3所示,与半球面相切于M点的A’B’C’D’即为透视窗口,也是鱼眼图像的校正平面,透视窗口的尺寸为A’B’和A’D’的长,分别用a和b来表示,在本实施例中,取a=360,b=640(单位:像素),Q’点为M点在像平面XOY的投影;观察视角决定了透视窗口置于球面的哪个位置,也决定了需要校正的图像区域,这里观察视角可以用(α,Ω)角对来表示,其中,α代表线段OM与线段OQ’之间的夹角,Ω代表线段OQ’与X轴之间的夹角。
步骤S4-3,空间变换关系计算,将透视窗口上的点先还原到半球面上,再将半球面上该点垂直投影到鱼眼图像像平面,此步骤是计算透视窗口平面上任意像素点P1(x1,y1)在鱼眼图像中对应的像素点位置P2(x2,y2)。其中,(x1,y1)所处的坐标系是以切点M为原点,B’C’平行方向为X轴,A’B’平行方向为Y轴,而(x2,y2)所处的坐标系是XOY坐标系,两者不在同一个坐标系,所以首先需要统一坐标系,以O-XYZ三维坐标系为基准,将(x1,y1)转换到该坐标系下。
根据观察视角方向(α,Ω)和像素点坐标(x1,y1),通过坐标旋转和平移变换,可以求得(x1,y1)在O-XYZ坐标系下的坐标为:
其中,R为鱼眼图像半径;
坐标转换完毕后,连接OP1,计算OP1与半球的交点S的坐标,计算结果为:
然后再将S点垂直投影到XOY面上即可得到P2的坐标,即
P2即为透视窗口平面上像素点P1在鱼眼图像上对应的像素位置坐标。
在本实施例中,当取α=45°,Ω=0°,R=483时,P1(x1,y1)坐标为(10,0),则可计算出:
进而,可得:
步骤S5,基于鱼眼图像的重投影,将透视窗口上所有点对应于鱼眼图像上像素点的像素值赋给透视窗口上对应的像素点;即是将鱼眼图像上P2点的像素值赋给透视窗口中的像素点P1,由于P2常常不是整数,因此需要进行插值采样,这里采用双线性内插方法进行插值。
步骤S6,鱼眼视频漫游的实现,在本实例中,程序添加了鼠标的响应事件,作为用户的交互接口,用户可以在X,Y两个方向上拖拽鼠标,用以控制观察视角的方向。不同的视角可以让用户在透视窗口中实时地观察到不同区域的视频影像。从而实现鱼眼视频实时的小窗口漫游。
经过以上步骤,实现了基于鱼眼图像校正的鱼眼视频小窗口实时漫游,实验表明,校正结果准确、高效。具体实施时,以上流程可采用计算机软件技术实现自动运行流程。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。