一种采用纹理映射技术实现鱼眼镜头快速校正的方法
2008-05-16
作者:薛军涛1,贺怀清1,2
摘 要: 鱼眼镜头摄像机具有大视场" title="视场">视场角的特点,但存在严重的图像变形,常规的校正算法实时性" title="实时性">实时性较差。本文详细介绍了采用纹理映射技术" title="纹理映射技术">纹理映射技术实现鱼眼镜头校正的方法。实验表明,该方法不但较好地完成了镜头的校正,而且大大提高了系统的实时性,解决了传统方法中的几个问题。
关键词: 鱼眼镜头 校正算法 纹理映射
在机器人导航[1]、虚拟现实、基于图像的绘制以及视觉监控等许多计算机视觉领域,需要使用具有较大视场的鱼眼镜头[2]。鱼眼镜头最大" title="最大">最大的特点就是视场大,一张照片包含的信息非常丰富。图1就是视场为180°的鱼眼照片,它不但包含了整个天空,而且还包括了四个方向的信息,如果使用普通镜头,至少需要拍摄4次;如果在机器人导航或者监视侦察领域,就至少需要4个摄像头。这不但增加了成本,而且每个镜头之间的衔接、图像的拼接也非常麻烦。
从图1可以看到,鱼眼镜头虽然非常方便,但它拍摄的图像具有非常严重的变形,必须先经过校正才能使用。传统的校正主要采用平面透视投影约束,通过变形校正模型将空间直线的投影曲线映射为图像平面上的直线[3~5]。2003年英向华[6~7]在平面透视约束的基础上提出球面透视投影约束,即空间直线的球面透视投影为球面上的大圆。
纹理映射[8]是计算机图形学中解决物体表面细节的一种显示技术。把鱼眼照片看作纹理图片,按照纹理映射的思路映射到目标图像上,可以实现鱼眼镜头的校正。
本文重点不是提出新的校正算法,而是在传统校正算法的基础上,采用纹理映射技术,提高校正速度,采用的模型是英向华球面透视投影模型。由于视场为180°左右的鱼眼镜头应用比较广泛,本文仅讨论该研究对象的快速校正。
1 采用纹理映射技术实现鱼眼镜头校正的过程
1.1 映射函数的建立
根据整个空间的中心对称性,180°的视场选择以视点O为中心,半径为R的一个半球作为还原模型,鱼眼镜头的成像过程如图2所示,这样Z>0的部分就是整个视场。
如图2所示,鱼眼镜头的成像过程[6]可以分为三步:(1)每个空间点P0被映射为连结P0与投影中心O的射线OP0;(2)将射线OP0线性地映射到单位球面上,得到球面透视投影图像P1;(3)将球面点P1非线性地投影到平面XOY上,得到鱼眼照片上" title="片上">片上成像点P2。在图2中,整个半球在XOY平面上的投影部分就是最后镜头生成的鱼眼照片。
根据鱼眼镜头的成像过程,为了提取整个鱼眼照片中的立体信息,在半球上加一个与它外切的半立方体,它的前、后、左、右和上面分别模拟环境的前、后、左、右和上方。半正方体校正模型如图3所示。
设半球的方程为:
1.2 映射过程的实现
对图3中确定的目标图像进行网格划分,得到目标图像的网格划分如图4所示。
根据公式(5)求解网格上的交叉点的UV坐标。确定每个子格内部所有点的UV坐标。
以下介绍如何根据子网格四个顶点的UV坐标确定网格内部任意点UV坐标的方法。该方法适合于任何形状的四边形。连接四边形一条对角线,就把问题转换为:根据三角形顶点的UV坐标,求解三角形边上或内部任何一点UV坐标。确定三角形边上或内部点UV坐标算法示意图如图5所示。
图5中,设三角形P0P1P2三个顶点的UV坐标是可知的,求解其内部点P3的UV坐标。
1.3 存在的问题及改进
图6就是采用纹理映射技术实现鱼眼镜头校正的效果图。可以看到,图6中表示4个方向的子图中景物的分布密度与实际不符合,而且靠近方向衔接的地方存在图像的扭曲(在最后的子图中,最右边的建筑严重扭曲)。图7是半正方体模型的俯视图,图中很容易得到:是随θ的变化而变化,它在[0,45°]是递增的,当接近方向衔接(θ=45°)时,其值最大,因此,在那里图像扭曲较严重。
在圆中,周长l,圆心角θ,是常数,这样就不存在方向上图像的扭曲,因此,将半球型外面的半正方体替换为外切圆柱,则圆柱型校正模型如图8所示。改进后的效果如图9所示。对比图6会发现,图9在4个方向上图像分布均匀,扭曲也消失了。
2 新方法与传统方法的对比
新方法比传统方法校正速度快。这是新方法的最大优点。无论是新方法还是传统方法,都是在给目标图像着色,因此也要建立一个目标图像和鱼眼照片上像素的映射函数,如公式(5)。不同的是,传统方法会使用该映射函数对目标图像上每个像素进行处理,而新方法只对网格上的点进行公式(5)处理,其他的点都使用公式(9)进行处理。公式(5)主要是乘除和开方运算,公式(9)主要是乘除运算,因此前者要比后者复杂,需要更多的运算时间。假如目标图像是200×200像素规模的,目标图像采用20×20的网格划分(试验证明采用这样的网格划分,校正效果已非常理想),传统方法需要进行200×200次公式(5)运算,而新方法则采用20×20次公式(5)运算,200×200-20×20次公式(9)运算,新方法99%的像素都在进行简单的运算。这就是新方法提高速度的原因。此外,本实验建立的鱼眼校正模型比较简单,建立的映射函数也比较简单,如果直接采用传统的校正模型,它建立的映射函数要比公式(5)更加复杂,这时候新方法速度快的特点将更加突出。表1是新方法与传统方法校正速度的实验对比(采用圆柱模型而且圆柱顶和侧面采取相同数量的网格,平台:Windows2003+CPU1.8G+512MB内存)。
新方法比传统方法灵活。新方法校正速度和校正结果都与网格划分有关。网格划分越多,目标图像就越细腻,运算速度也就越慢。根据应用领域的不同,选择合适的网格划分,就可以兼顾细腻性和实时性。
新方法可以解决传统方法存在的一些不足。传统方法只强调优化改进目标图像与鱼眼照片之间的映射关系,常常忽视目标图像生成中出现的一些问题:(1)当目标图像尺寸大于鱼眼照片尺寸时,根据映射关系,目标图像上多个像素就对应鱼眼照片上同一个像素点,当目标图像尺寸大于鱼眼照片尺寸约4倍以上时,就存在明显的马赛克现象。(2)当目标图像尺寸小于鱼眼照片尺寸时,目标图像上相邻的像素就对应鱼眼照片上距离比较大的两点,那么当系统实时运转时,就会出现目标图像的闪烁。上述两个问题在传统方法中都没有解决,而(在纹理映射技术中分别使用插值算法和Mip-Map技术[9]都可以很好地解决。
本文首次将纹理映射技术应用到鱼眼镜头的校正过程中,不但取得良好的校正效果,而且大大提高了校正的速度,解决了传统方法中的几个问题。虽然本文只讨论了视场为180°鱼眼镜头的校正,实际上,本文的方法同样可以用于其他广角镜头的校正。
参考文献
1 Shah S,Aggarwal J K.Mobile robot navigation and scene modeling using stereo fish-eye lens system.Machine Vision and Applications,1997;(10):159~173
2 Miyamoto K.Fish eye lens.Journal of Optical Society of America,1964;54(8):1060~1064
3 Devernay F,Faugeras O.Straight lines have to be straight: automatic calibration and removal of distortion from scenes of structured environments.Machine Vision and Applications,2001;13(1)14~24
4 Nomura Y,Sagara M,Naruse H et al.Ide,Simple calibration algorithm for high-distortion-lens camera.IEEE Transactions on PAMI,1992;14(11):1095~1100
5 邱志强,陆宏伟,于起峰.用射影不变性纠正鱼眼镜头畸变.应用光学,2003;24(5):36~38
6 英向华,胡占义.一种基于球面透视投影约束的鱼眼镜头校正方法.计算机学报,2003;26(12):1702~1708
7 Ying X H,Hu Z Y.Distortion correction of fisheye lenses using a non-parametric imaging model.In:Asian conference on computer vision(ACCV 2004),Jeju,Korea,2004
8 薛军涛,贺怀清.典型纹理映射实现方法研究.计算机工程,2005;31(7):211~214
9 唐丽玉,彭国均,舒娱琴.Mip-map技术在三维实时仿真中的应用.福州大学学报,2004;32(1):23~26