本发明属于鱼眼镜头图像技术领域,特别涉及一种基于正交投影的鱼眼镜头图像畸变矫正方法。
背景技术
鱼眼镜头焦距较短,适合拍摄近距离且视角范围大的场景。因其具有超大视角、信息量丰富、体积小且隐蔽性强等优点而被广泛应用于安全监测、视频会议、机器人导航、全景泊车、智能交通、医疗检测及机器视觉等领域。为了容纳视场范围接近180度甚至更大视角的场景,鱼眼镜头在成像结构方面进行了改造以适应其焦距短视场大的特点,造成鱼眼镜头图像严重桶形畸变、视觉效果差,使得很难满足正常需求。如何实现鱼眼图像畸变的精确、快速矫正已成为当前国内外学者研究的热点。
截止目前,已有若干鱼眼图像矫正算法问世,主要可归为如下2类:基于投影变换的方法和基于标定的矫正方法。基于投影变换的方法,主要采用球面透视投影约束,通过拟合多项式以优化目标函数,从而估计出矫正模型参数,推导出矫正后的图像,但其计算复杂,实时性差。基于标定的矫正方法,主要是通过借助外部设备对鱼眼图像内外参数进行标定,通过标定的参数对鱼眼图像进行畸变矫正,该方法矫正精度高,但可操作性差。
传统镜头的成像原理是孔径模型,其拍摄出的图像与实际物体之间成线性等比例关系,故其视角相对较小,不能满足视野要求较广的场合。为了增加镜头所采集的信息量,人们将鱼眼镜头应用到机器视觉领域,以获取更为广阔的视野。然而,在得到大视角图像的同时,也引起了图像发生不同程度的畸变,不能满足正常视觉要求。那么如何对鱼眼图像进行矫正满足应用需求,就成为国内外学者研究的一个热点问题。若干鱼眼图像娇正算法相继问世。其中,采用矫正模型的方法因精度较高,且计算量相对较小,而得到人们的青睐。利用矫正模型对鱼眼图像进行矫正,就是在鱼眼图像与目标图像之间建立一一对应的关系,然后将鱼眼图像上的点映射到目标图像上,并通过插值算法求取目标图像上点的灰度值,从而达到图像畸变矫正目的。
通常的光学系统均基于高斯光学,遵循相似成像准则。而鱼眼镜头是非相似成像,需要选择其他的成像公式来替换高斯光学成像公式,每一个成像公式对应一种镜头设计模型。常用的鱼眼镜头一共有4种投影模型:等距投影(equidistanceprojection)、等立体角投影(equisolidprojection)、体视投影(stereographicprojection)、正交投影(orthogonalprojection)。
鱼眼镜头拍摄的图片呈现桶形畸变现象,采取经典的投影模型对此类畸变进行矫正往往效果不理想。
技术实现要素:
针对现有技术的上述缺陷和问题,本发明的目的是提供一种基于正交投影的鱼眼镜头图像畸变矫正方法,首先采用常用的正交投影模型对鱼眼图像进行了粗略矫正,然后此基础上引入了基于棋盘格图像角点标定的仿射变换,对畸变的方格进行依次矫正,并利用查表法保存从鱼眼图像到目标图像的坐标映射关系,从而在限定区域中精确地矫正鱼眼图像。
采用的技术方案是:
一种基于正交投影的鱼眼镜头图像畸变矫正方法,包括下述步骤:
1、鱼眼透镜投影原理
投影模型,如图1-4所示,p为空间中任意,θ为入射角,成像位置根据不同的投影公式而不同,4种投影模型对应的投影公式分别如式(1)、(2)、(3)和(4)所示。
y0′=fθ(1)
y0′=fsinθ(4)
另外,理想情况下,其投影模型可表示为
y0=ftanθ(5)
其中y0是理想情况下投影点到图像中心的长度,y0′是经过投影模型后投影点到图像中心点的长度。
光学系统产生的畸变大小完全由光线的行径决定,因而畸变只造成图像的变形,使之与“物”不再相似,却不会使图像变模糊,即不影响图像的清晰度。从数学上说,尽管有明显的变形,但从物空间到像空间,二者之间仍存在一一对应的映射关系。且只要上述成像公式确定,物像的一一对应关系也就确定下来了,也就是说鱼眼镜头产生的像就可以用明确的数学规律表示。鱼眼镜头的投影模型成像,y0′随θ的变换的曲线如图5所示。从图5中可以看出,正交投影模型适合应用的透镜畸变最大,体视投影模型适合应用的透镜畸变最小。对于鱼眼镜头,为获得更大的视场范围必然牺牲它的成像效果,故应用体视投影或正交投影模型比较适合。本发明采用的是180度的鱼眼镜头,应用的是正交投影模型。
2、畸变矫正
本发明的鱼眼图像畸变矫正算法可分为以下3个步骤:
(1)根据鱼眼图像的几何特性,求取鱼眼图像的半径r和中心点;
(2)利用正交投影将鱼眼图像转化到半球面上,并采用横向纵向曲线对半球面进行网格划分,从而转化为半球面的横向、纵向坐标值,最后将其投射到目标图像坐标上,实现鱼眼图像的粗略矫正变换;
(3)在利用正交投影对鱼眼图像进行粗略矫正后,在利用畸变的棋盘方格图像的多个角点与目标图像做仿射变换,然后利用查表法保存从鱼眼图像到矫正图像的坐标映射关系表,利用查表法从而实现对鱼眼图像在棋盘格区域的精确矫正。
2.1鱼眼图像半径与中心点计算
鱼眼图像中心点与半径求取的方法相对较多,其中hough变换圆检测法(htcd)因受曲线不连续与噪声的影响相对较小,且能精确求取圆的特征信息,而得到广泛的应用。本发明通过对原图像进行降采样预处理,将鱼眼图像进行同比例插值缩小,以降低采样的次数,从而减少算法的运行时间,达到了快速、精确求取圆心坐标与半径的目的。
步骤1:利用canny算子对鱼眼图像边缘进行有效地提取,并对图像的长、宽进行补齐,使其为4的整数倍,为后续的降采样做准备。
步骤2:对原图像进行两次降采样处理,使其缩小到原图像的1/16倍,并对其进行hough变换检测,记录下所得到的圆心位置坐标(x1,y1)和半径大小r1。
步骤3:将上述所求圆心坐标与半径放大4倍,从而得到原图像中心坐标与半径的粗略值,记作为(4x1,4y1)、4r1。
步骤4:考虑到步骤1中对图像的长宽进行了微调,因此需要对原图像建立新的参考坐标空间,从而求精确的鱼眼图像中心坐标与半径大小,分别记作为(4x1-δ1,4y1-δ2)、4r1-δ3。
步骤5:重复上述过程,并求取其平均值,即圆心坐标(x0,y0),半径大小为r0。
2.2鱼眼图像到半球面的转化
如图6所示,鱼眼图像到目标图像畸的坐标转化过程,图6(a)中p'是鱼眼图像上的一点,其坐标值为p′(u,v);图6(b)表示半球面矫正模型的侧视图,其中点p是鱼眼图像上点p′的对应映射点,其坐标值为p(x,y,z),而点p1、p2、p3分别是点p在平面xoz、平面yoz与平面xoy的垂直投影点,φ、θ分别是op1与x轴正向的夹角值与op2与y轴正向的夹角值;图6(c)表示带有横向、纵向坐标值的半球面矫正模型,其中横向、纵向坐标值分别表示为α、β,则α、β与角θ的关系式为α=180-θ、β=180-φ,其中p″为鱼眼图像上p′的对应点;图6(d)表示矫正后的目标图像坐标关系,其中p″′与鱼眼图像上点p′相对应。
首先,通过正交投影法将鱼眼图像上的点一一映射到半球面矫正模型上,现取一点p'(u,v)将其投射为矫正模型上点p(x,y,z),假设鱼眼图像的中心点坐标为o(x0,y0),则点p'与点p的关系式如下所示:
然后,根据球面特性以及球面坐标与角度之间的转化关系,由图6(b)可建立球面上点p(x,y,z)坐标与角度θ、φ之间的坐标转化关系,从而得到鱼眼图像上点p′(u,v)的坐标与角度θ的关系式,具体如下所示:
x2+y2+z2=r2(z≥0)(7)
tan(φ)=z/x(0<φ<π)(8)
tan(θ)=z/y(0<θ<π)(9)
对式(8),(9)两边同时求反正切函数可得到角度θ、φ的表达式,如下所示:
φ=arctan(z/x)(z≥0)(10)
θ=arctan(z/y)(z≥0)(11)
再由式(7)可得z轴坐标的表达式:
将式(12)分别代入式(10)、(11)中可得到角度θ、φ关于x,y,z的表达式如下:
现取半球面矫正模型横向与纵向度数为0°~180°,由图6(c)可得角度θ、φ分别与横向线度数α、纵向线度数β之和为π,则其关系表达式如下:
α+θ=π(15)
β+φ=π(16)
对上式(15)、(16)进行变换,可得关系式如下所示:
α=π-θ(17)
β=π-φ(18)
将式(13)、(14)分别代入上式(17)、(18)可得关系式如下所示:
在畸变矫正模型为半球面的情况下,矫正模型半径等于鱼眼图像的半径,则矫正后目标图像的行与列的长度都为2×r,因此目标图像上点p″′(i,j)与图6(c)的横向线度数α、纵向线度数β满足如下关系式:
α/π=i/(2r)(21)
β/π=j/(2r)(22)
对上式(21)、(22)变换后可得关系式如下:
i=(α/π)×2r(23)
j=(β/π)×2r(24)
再将式(19)、(20)代入式(23)、(24)中可得如下关系式:
则鱼眼图像上坐标点与目标图像上坐标点的对应关系如下所示:
根据上述的公式推导,可以建立矫正后目标图像与鱼眼图像的坐标对应关系,利用它们之间的坐标转换关系式,并通过双线性插值算法,将鱼眼图像上的点映射到目标图像上,从而实现鱼眼图像的粗略矫正。
2.3应用仿射变换
在利用正交投影模型对鱼眼图像进行粗略矫正后,可以发现,对于包含棋盘格的鱼眼畸变图像,整个棋盘方格的边界在畸变状态下呈现为曲线,而单个方格在畸变状态下的四条边界则可以近似为不规则的菱形。通过对选取每个畸变方格的四个顶点与理想的正方形方格作仿射变换,并把仿射变换矩阵应用到单个方格内,则可以实现单个棋盘方格范围内的畸变矫正。若对每一个方格,都应用仿射变换,即可以实现对棋盘格区域的精确的畸变矫正。
此处称畸变方格的顶点为角点,即每个方格有四个角点。则仿射变换的过程是根据如下公式:
方格的每个角点对应公式(29)的两个方程,四个角点则对应八个方程,公式中有八个未系数,则方程一定可解。
实验验证:
本发明使用180度鱼眼摄像头进行图像采集,摄像头实物如图4所示,实验平台为window10操作系统,cpu为2.6ghz,内存8g,编程环境visualstudio2015,利用鱼眼摄像头采集的原始鱼眼图像如图8所示。由于本发明算法是矫正棋盘格区域的图像,故应该尽可能的使得畸变图像中棋盘方格占整幅图的比例较大。首先利用正交投影模型和网格划分映射对原图进行粗略矫正,经双线性插值后效果如图9所示,可以发现,矫正并没有达到预期的效果,主要原因是正交投影并不能完全符合鱼眼图像畸变的过程。然后在粗略矫正的基础上通过提取棋盘格每个方格的角点与实际棋盘格角点的位置依次仿射变换,最终的效果图如图10所示。
在畸变矫正过程中,通过记录保存畸变图像到矫正图像变换时的坐标对应关系表。将此对应关系表应用到同一镜头拍摄任何图像,就是对这一镜头的畸变矫正如图11拍摄的鱼眼图像,通过保存坐标对应关系表,采用查表法的方法对原图进行矫正,效果如图12所示。可以看到本发明提出的畸变矫正算法,可以精确的对鱼眼图像棋盘格区域进行矫正。
实验结果说明,本发明提出的鱼眼图像畸变矫正算法,对视场范围大的鱼眼图像矫正效果较好,且大大降低算法的时间复杂度和空间复杂度。
其优点在于:
本发明利用正交投影模型,把鱼眼图像投影到半球面上,再利用网格划分映射,完成对图像矫正。本发明首先利用正交投影模型和双线性插值映射对鱼眼图像进行粗略矫正,然后,在此基础上,对包含棋盘格的图像提取角点,选取每个畸变方格的四个顶点与理想的正方形方格作仿射变换,并把仿射变换矩阵应用到单个方格内,则可以实现单个棋盘方格范围内的畸变矫正。若对每一个方格,都应用仿射变换,则可以实现对棋盘方格区域精确的畸变矫正,再利用查表法的思想,保存从鱼眼图像到矫正图像的坐标映射关系,从而降低时间复杂度和空间复杂度,并且能够提高鱼眼图像的质量,利用本发明的方法呈现出的图像更接近真实图像,性能稳定,更加安全可靠。
附图说明
图1是本发明的投影模型中的等距投影原理图。
图2是本发明的投影模型中的等立体角投影原理图。
图3是本发明的投影模型中的体视投影原理图。
图4是本发明的投影模型中的正交投影原理图。
图5是本发明的鱼眼模型成像曲线图。
图6是本发明的畸变矫正算法的坐标转化过程图。
图7是本发明的鱼眼摄像头的实物图。
图8是畸变矫正前的鱼眼镜头拍摄原图。
图9是图8经粗略矫正后的效果图。
图10是图9经对棋盘格区域精确矫正后的效果图。
图11是实际场景中拍摄的鱼眼图像。
图12是采用查表法的方法对图11进行矫正。
具体实施方式
实施例1
一种基于正交投影的鱼眼镜头图像畸变矫正方法,包括下述步骤:
1、利用鱼眼摄像头拍摄图片,即为鱼眼图像;
2、对步骤1中鱼眼图像进行畸变矫正:
(1)根据鱼眼图像的几何特性,求取鱼眼图像的半径r和中心点;
步骤1:利用canny算子对鱼眼图像边缘进行有效地提取,并对图像的长、宽进行补齐,使其为4的整数倍,为后续的降采样做准备。
步骤2:对原图像进行两次降采样处理,使其缩小到原图像的1/16倍,并对其进行hough变换检测,记录下所得到的圆心位置坐标(x1,y1)和半径大小r1。
步骤3:将上述所求圆心坐标与半径放大4倍,从而得到原图像中心坐标与半径的粗略值,记作为(4x1,4y1)、4r1。
步骤4:考虑到步骤1中对图像的长宽进行了微调,因此需要对原图像建立新的参考坐标空间,从而求精确的鱼眼图像中心坐标与半径大小,分别记作为(4x1-δ1,4y1-δ2)、4r1-δ3。
步骤5:重复上述过程,并求取其平均值,即圆心坐标(x0,y0),半径大小为r0。
(2)利用正交投影将鱼眼图像转化到半球面上,并采用横向纵向曲线对半球面进行网格划分,从而转化为半球面的横向、纵向坐标值,最后将其投射到目标图像坐标上,实现鱼眼图像的粗略矫正变换;
所述鱼眼图像到半球面的转化:
如图6所示,鱼眼图像到目标图像畸的坐标转化过程,图6(a)中p'是鱼眼图像上的一点,其坐标值为p′(u,v);图6(b)表示半球面矫正模型的侧视图,其中点p是鱼眼图像上点p′的对应映射点,其坐标值为p(x,y,z),而点p1、p2、p3分别是点p在平面xoz、平面yoz与平面xoy的垂直投影点,φ、θ分别是op1与x轴正向的夹角值与op2与y轴正向的夹角值;图6(c)表示带有横向、纵向坐标值的半球面矫正模型,其中横向、纵向坐标值分别表示为α、β,则α、β与角θ的关系式为α=180-θ、β=180-φ,其中p″为鱼眼图像上p′的对应点;图6(d)表示矫正后的目标图像坐标关系,其中p″′与鱼眼图像上点p′相对应。
首先,通过正交投影法将鱼眼图像上的点一一映射到半球面矫正模型上,现取一点p'(u,v)将其投射为矫正模型上点p(x,y,z),假设鱼眼图像的中心点坐标为o(x0,y0),则点p'与点p的关系式如下所示:
然后,根据球面特性以及球面坐标与角度之间的转化关系,由图6(b)可建立球面上点p(x,y,z)坐标与角度θ、φ之间的坐标转化关系,从而得到鱼眼图像上点p′(u,v)的坐标与角度θ的关系式,具体如下所示:
x2+y2+z2=r2(z≥0)(7)
tan(φ)=z/x(0<φ<π)(8)
tan(θ)=z/y(0<θ<π)(9)
对式(8),(9)两边同时求反正切函数可得到角度θ、φ的表达式,如下所示:
φ=arctan(z/x)(z≥0)(10)
θ=arctan(z/y)(z≥0)(11)
再由式(7)可得z轴坐标的表达式:
将式(12)分别代入式(10)、(11)中可得到角度θ、φ关于x,y,z的表达式如下:
现取半球面矫正模型横向与纵向度数为0°~180°,由图6(c)可得角度θ、φ分别与横向线度数α、纵向线度数β之和为π,则其关系表达式如下:
α+θ=π(15)
β+φ=π(16)
对上式(15)、(16)进行变换,可得关系式如下所示:
α=π-θ(17)
β=π-φ(18)
将式(13)、(14)分别代入上式(17)、(18)可得关系式如下所示:
在畸变矫正模型为半球面的情况下,矫正模型半径等于鱼眼图像的半径,则矫正后目标图像的行与列的长度都为2×r,因此目标图像上点p″′(i,j)与图6(c)的横向线度数α、纵向线度数β满足如下关系式:
α/π=i/(2r)(21)
β/π=j/(2r)(22)
对上式(21)、(22)变换后可得关系式如下:
i=(α/π)×2r(23)
j=(β/π)×2r(24)
再将式(19)、(20)代入式(23)、(24)中可得如下关系式:
则鱼眼图像上坐标点与目标图像上坐标点的对应关系如下所示:
根据上述的公式推导,可以建立矫正后目标图像与鱼眼图像的坐标对应关系,利用它们之间的坐标转换关系式,并通过双线性插值算法,将鱼眼图像上的点映射到目标图像上,从而实现鱼眼图像的粗略矫正。
(3)在利用正交投影对鱼眼图像进行粗略矫正后,再利用畸变的棋盘方格图像的多个角点与目标图像做仿射变换,然后利用查表法保存从鱼眼图像到矫正图像的坐标映射关系表,利用查表法从而实现对鱼眼图像在棋盘格区域的精确矫正。
所述仿射变换为:
在利用正交投影模型对鱼眼图像进行粗略矫正后,可以发现,对于包含棋盘格的鱼眼畸变图像,整个棋盘方格的边界在畸变状态下呈现为曲线,而单个方格在畸变状态下的四条边界则可以近似为不规则的菱形。通过对选取每个畸变方格的四个顶点与理想的正方形方格作仿射变换,并把仿射变换矩阵应用到单个方格内,则可以实现单个棋盘方格范围内的畸变矫正。若对每一个方格,都应用仿射变换,即可以实现对棋盘格区域的精确的畸变矫正。
此处称畸变方格的顶点为角点,即每个方格有四个角点。则仿射变换的过程是根据如下公式:
方格的每个角点对应公式(29)的两个方程,四个角点则对应八个方程,公式中有八个未系数,则方程一定可解。