王彦柯 柴铮 朱齐丹
摘要:全景视觉成像系统能够观察到半个球面(360度*180度)的画面,但是由于画面的畸形,不符合人类的观察习惯,要进行复原展开,而原始的复原展开算法和现有的改进算法有其本身存在的局限性,如图像比例不协调,图像信息丢失等问题,这样会造成图像质量的下降,甚至不能用。为解决这些问题,本文通过对径向直接映射和不同图像插值算法的研究,并结合全景图像的柱面展开算法,将原本畸形的图像展开为能为图像处理所运用的图像信息。并通过一定的评价机制来选择判断出全景视觉图片的最佳优化方法。
关键词:柱面展开;径向直接映射;图像插值;图像质量评估
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2016)18-0171-04
随着机器人的智能化越来越高,人们对智能机器人能够完成的任务的期望值也越来越高,并逐渐将各种前端科技运用到机器人系统上,其中就包括双目全景视觉技术[1-4]。与普通投影成像技术不同,全景视觉能够观察到半个球面(360度*180度)的画面[1-5],有效解决了机器人视觉局限的问题,提高了机器人的作业能力[1]。全景视觉系统的成像技术以及相关理论和工程应用研究自提出以来就得到了世界各国学者们的高度关注,目前已经成为计算机视觉系统的一个热点研究领域[1]。
全景视觉图像的利用方式主要是通过柱面展开算法(逆投影原理[1,5,6])将其还原成人类所能使用的原始图片,但是柱面展开存在着自身的局限性。
一是由于展开图片和原始图片的坐标是极为扭曲的非线性对应关系,原始全景图片径向和展开图纵向本应一一对应,但是由于非线性映射的存在,造成图像的上半部拉伸,下半部压缩,图像比例不协调。
二是原始全景图片边缘区像素点和中心区像素点信息量相差较大,以至于中心区域的图像信息丢失,损失较大,因此需要手段进行信息还原,倘若仅仅是周围像素的复制,会产生块状效应,图像质量低下。
在此问题上,也有相关理论对其进行改进优化,例如,基于极限几何的展开[3],基于贝塞尔曲线的改进[4]等,但是这些算法具有一定的局限性,展开之后的图像仍然是弯曲的。
本文通过分析图像非线性映射和图像信息损失的问题,运用反线性映射和图像插值算法对柱面展开算法进行优化,首先通过建表法,对原始柱面展开进行化简,减少计算量,进而通过反线性映射找出解算前后图片的对应关系,最后利用不同的图像插值算法对其进行改进和适应,并通过一定的评价机制对其进行评估,提炼出一种最优的改进方案,从而提出精度较高的柱面展开算法原理,并提高了该算法的可实现性。
1 全景图像复原展开及存在问题
1.1 柱面展开算法原理
本文中,我们假设镜面的面型公式为:
设虚拟投影圆柱面的底面直径为D,则解算展开之后的像素柱面坐标为。因此通过获取真实成像点的坐标可得到虚拟像素点的坐标,使全景图像得到展开。
1.2 柱面展开算法存在问题
根据柱面展开算法的原理,我们可以看出其主要存在两个问题:
1.2.1 展开后图像信息比例不协调
当我们进行柱面展开的时候,将原始全景图片的径向和虚拟成像圆柱面的纵向相对应,但是两者是非线性映射关系,即
由式(6)可以看出,和H两者对应为非线性,因此会造成展开之后的图像比例不协调,违反正常物理规律。
1.2.2 图像信息不对称
首先像素丢失问题严重,如图3所示,外圆周展开所得像素信息充足,而内圆展开后像素丢失较为严重,图中虚线所在圆周和实线所在圆周周长相差很多,但是展开之后的宽度要相等,因此造成I区像素被压缩,II区像素点严重不足。
再者,像素坐标对应关系为非线性,图中左侧全景图片中的星状像素对应的是右图中点状的点,由此我们可以看出,无法直接得到整数节点处的像素值,所以,需要对该算法进行改进。
2 柱面展开算法的改进
2.1 查表法
在计算过程中,由于需要多次进行正反三角函数的多次变换。但是,实际情况中镜面的方程、摄像头与镜面的相对位置和焦距均已知,因此,我们可以定义一系列数组来储存不同点所对应的三角函数值,这样极大减少了展开过程中的计算值[7]。
2.2 径向直接映射法
通过展开图像,我们可以看出,非线性映射主要存在于径向,即展开图的纵向,因此提出了直接径向映射的方法[5]。
该方法忽略了H和之间的非线性映射关系,将两者直接线性对应,其余计算方式不变,这种方法可以将原始全景图片展示的比例直接呈现出来,但是存在一定的缺点。如果原始全景图片已经是扭曲比例的图片,那么该方法将无法复原。
2.3 图像插值算法
全景图像在展开的过程中,由于坐标的非线性映射关系造成展开之后的像素点坐标并不是规则的,要想得到每个节点的像素值,就要根据现有的散乱像素值来估计节点处的像素值。另外,展开之后的整体图在进行局部放大时也要进行像素值的估计,图像插值算法研究的就是还原周围点像素值的方法[8],我们可以将其运用到全景图像柱面展开和局部放大上面。
图像插值的基本原理可以表示为所求取的亚像素点的像素值等于插值系数与插值基函数值的乘积之和[8,9],即:
插值系数由所求像素点周围已知像素所决定。而插值基函数决定插值方法的本质和插值效果,其自变量为已知像素点和未知像素点的距离等关系。
当插值域仅由最近域像素点决定时,可得到B样条插值方式。此时的插值基函数可由矩形脉冲函数经过(n+1)次卷积积分得到,即
其中,n的取值不同可得到不同插值方法
2.3.1 最近邻域插值
当n=0时,为直接插值基函数,插值系数可由周围像素点的值直接代替,即:
2.3.2 双线性插值
当n=1时,也为直接插值基函数,插值系数也可由周围像素点的值直接代替,即:
2.3.3 双三次插值(Keys插值)
当n=2时,为非直接插值基函数,插值系数需要经过数字滤波进行估计,较为麻烦,因此通过构造三次基函数族来解决,即:
3 仿真对比与质量评估
3.1 仿真结果
为了验证各种算法的可行性,并且选取一种有效的解决手段,需进行实验仿真与验证。实验使用Visual C++语言实现,实验所用的原始图像均为本实验室自主研制的全景视觉机器人系统所提供的全景图片。在实验过程中,对同一图片进行不同算法的仿真,并进行比较评估,得到其中最适合全景视觉图像展开的方法。
3.1.1 原始柱面展开与径向直接映射算法仿真对比
1)测试图对比
3.1.2 不同图像插值算法仿真结果对比
3.2 质量评估
由于原始参考影像是未知的,因此采用无参考影像质量评价,评价指标主要包括空间频率(Special Frequency,SF)、标准差(Standard Deviation,SD)和信息熵(Entropy,E)[10]。评估结果如下:
4 结语
本文详细分析了全景视觉系统的模型建立过程以及柱面展开算法的原理,提出了柱面展开的三个缺陷,并通过针对性的方法将之解决。
首先,查表法的运用大大降低了运算的复杂程度。
再者,径向直接映射的方法解决了图片比例的问题,且此种简化过后的柱面展开算法计算量低,较为简便,但是没有考虑到全景图片本身的非线性问题,其还原的是全景图片,不是实际投影前的图片,而原始的柱面展开所还原的图片为原始图片,并非简单地将相机获取的全景图片展开。
最后,针对像素缺失问题,我们将图像插值算法运用到柱面展开算法的实现过程中。通过比较与客观的评估体系得出, Keys插值算法通过调节衰减率的大小可以大致达到最近邻域插值算法的效果,并弥补了其标准差的不足,因此衰减率较小的Keys插值算法较为适合全景视觉的柱面展开算法。
参考文献:
[1] 张帆. 全景视觉图像质量优化方法研究[D]. 哈尔滨: 哈尔滨工程大学, 2010: 1-34.
[2] 唐超. 基于双目全景视觉的运动目标特征检测技术[D]. 哈尔滨: 哈尔滨工程大学, 2012: 1-3, 6-15.
[3] Jie LEI, Xin DU, Yun-fang ZHU, Ji-lin LIU. Unwrapping and stereo rectification for omnidirectional images[J]. Journal of Zhejiang University SCIENCE, 2009, 10(8): 1125-1139.
[4] Xiao Xiao, Guo-guang Yang, Jian Bai. Enhancement of panoramic image resolution based on swift interpolation of Bezier surface[C]// Xun Hou, Wei Zhao, Baoli Yao, Proc. of SPIE,27th International Congress on High-Speed Photography and Photonics. Proceedings of SPIE, 2007: 62793I1-8.
[5] 张志. 全景视觉大图像的分割及图像增强[D]. 哈尔滨: 哈尔滨工程大学, 2011: 16-23.
[6] 祝小蜜, 张晓頔. 一种全景图像展开的新方法[J]. 信息技术, 2014(2):19-20.
[7] 凌云峰, 朱齐丹, 吴自新, 等. 全景视觉图像柱面理论展开算法实现及其改进[J]. 应用科技, 2006, 33(9): 4-6.
[8] 龚小林, 田向阳. 全景视觉还原算法分析及应用[J]. 计算机技术与发展, 2014, 24(6): 233-235.
[9] Fathi E.Abd EI-Samie, Mohiy M.Hadhoud, Said E.EI-Khamy.图像超分辨率技术及其应用[M]. 蔡成涛, 梁燕华,译.北京: 国防工业出版社, 2015:4-16.
[10] 谢伟. 多帧影像超分辨率复原重建关键技术研究[M]. 武汉: 武汉大学出版社, 2014: 121-124.