黄宇豪 李晓丽
摘要:相比传统镜头,鱼眼镜头具有更大的视角,且由于其特殊的光学结构,拍摄的图像具有较大的畸变,而图像校正依赖于鱼眼镜头成像区域圆心和半径。提出了一种基于霍夫变换提取鱼眼镜头图像轮廓的算法。实验表明,相比传统轮廓提取算法,鱼眼镜头极大地缩短了轮廓提取所需要的时间,对成像区域外出现光晕、区域边缘存在黑色像素等特殊情况具备良好的检测性能,实时性高,具备实际应用价值。
关键词:鱼眼镜头;轮廓提取;霍夫变换;随机霍夫变换
中图分类号:TP391.41
文献标识码:A
DOI: 10.15913/j.cnki.kjycx.2019.08.017
随着图像处理技术的发展,在有限的条件下获得更多图像信息的需求越来越迫切。考虑到安装相机的成本和图像处理算法上的复杂性,在一定范围内,安装摄像机的数量越少,获取的信息越多越好。普通相机的视角一般在30° - 40°,而鱼眼镜头可以获得180°左右的图像信息。因其独特的光学设计和短焦距、大视角便于获取更多图像信息的优点,在医疗、交通、机器导航、视频监控和识别等各个领域具有广泛应用。在一些对实时性要求较高的场合,例如无人驾驶或无人机自主编队飞行,对通过鱼眼镜头获得的图像的处理速度要求非常高,因此,轮廓提取算法作为校正算法的前提,其实时性的优先级非常高。
目前,以下方法实现了对成像区域的提取:①面积统计法[1]。速度快但是在画面中黑色像素比例大时会产生严重误差;扫描线法及其改进算法[2-3],容易受成像區域边缘噪声影响,且无法实现对成像区域外有光晕或成像区域边缘有大面积黑色图案的图像轮廓提取。②邻域权值二值化[4]、区域生长法[5]等算法基于灰度在轮廓边界突变的特点获得边缘点集合坐标后,采用最小二乘法拟合圆心半径和坐标,精度较高,但是对于不同的图像,需要多次手动调节灰度值的阈值。以上算法虽然均能实现轮廓的提取,但是实时性较差。因此,本文基于霍夫变换检测圆形的原理,提出一种确定鱼眼镜头图像圆心坐标及半径的算法。
1 鱼眼镜头图像的轮廓提取问题
鱼眼镜头相比传统镜头具有更大的视场角。但由于其特殊的光学结构,鱼眼镜头引入了以径向畸变为主的图像畸变[6],目前各类畸变校正算法的实现,均依赖于鱼眼镜头图像轮廓的确定。提取鱼眼镜头的图像轮廓,主要是指获得圆形区域的圆心坐标及半径。在已知图像轮廓为圆形的基础上,可以通过霍夫变换检测。
设圆的参数方程为:
(x-a)2+(y-b)2-r2式(l)中:a,b,r为圆的三个参数,由参数组成的空间称为a-b-r参数空间。当r已知且固定时,X-Y平面中圆上的每一个点对应着参数空间a-b平面中的一个以r为半径的圆形。因此,如果将X-Y平面上的圆转换到参数空间时,X-Y空间中圆上的任意一点,对应参数空间中的一个以X-Y为高度变化的三维锥面。
由于圆上所有点均满足圆的参数方程,因此,X-Y空间中同一圆上的点对应参数空间中的所有三维锥面必然交于一点(ao,b0,ro),即为圆在图像平面的圆心坐标及半径[7]。
2 基于改进霍夫变换的鱼眼镜头轮廓提取算法
针对霍夫变换计算复杂的缺点,提出了一种随机霍夫变换[8]。随机霍夫变换不计算所有的边缘点,随机采样三点,通过映射关系,转换到参数空间的一点,最后判断这三个点是否在同一圆上[9]。随机霍夫变换算法的关键是规定一个条件,当随机采样的点满足条件时,相应的累加器增值,看作一次投票,否则选择下一组随机点,最后选择峰值最高的累加器[1O]。具体如图1所示。
随机霍夫变换的提出在一定程度上克服了标准霍夫变换计算量大、耗时长的缺点。由于在鱼眼镜头图像轮廓提取中,已知图像轮廓应为圆形,可以利用此信息进一步对算法进行改进。
2.1 算法原理
本文利用“圆的内接直角三角形的斜边中点为圆的圆心”的性质,提出了一种基于霍夫变换提取鱼眼镜头轮廓的算法。相比于标准霍夫变化,投票对象从三维参数空间变成一维累加器,实现了参数空间的降维,在满足一定精度的情况下,提取速度快,实时性高。
首先使用边缘检测得到鱼眼镜头圆形轮廓的边缘点集合,边缘点集合可近似看作圆轨迹。如图2所示,对圆轨迹上任意一点C1,做水平线交圆轨迹于点B1,做垂线交圆轨迹于点A1,故线段A1B1的中点即为圆心,线段的长度即为圆的直径,构成的圆看作一个候选圆。
对于图像边缘的最终提取,依赖于以下步骤和相应的两个累加器的值:记录半径的直方分布图,并对每一个半径值设置累加器P(i),当P(i)大于给定的阈值时,认为对应的半径值有可能为鱼眼镜头图像轮廓的半径;在此基础上,针对该半径值检测坐标满足其对应候选圆方程的边缘点数目,设置累加器0 (i),每当有一个边缘点坐标满足候选圆的方程时,累加器PO (i)增值;选择峰值最高的累加器O(i)所对应的圆心坐标及半径构成的圆形,即看作所求图像轮廓。
标准霍夫变换针对不同图像,需要手动设置不同的步长和半径范围,以避免搜索耗时过长、错误检测等情况[11],而改进算法无需手动设置阈值。
2.2 算法流程
步骤1:读取原图像并将RGB图像转化为灰度图。
步骤2:使用Canny算子对图像进行边缘检测,提取图像的边缘特征,获得鱼眼镜头图像的二值图。
步骤3:分别从图像两侧逼近,获得鱼眼镜头图像轮廓边缘点的集合,边缘点的集合近似为一个圆。提取轮廓边缘点集合如图3所示。
步骤4:对边缘集合中每一个点C1,做水平、垂直线,交边缘集合D于点A1和B1,连接A1B1,解出斜边中点坐标即为一个圆心坐标。如果有此圆的半径记录,累加器P(i)=P (i)+1;如果没有半径则创建一个新圆心半径记录,以此圆心和半径构成的圆形,看作一个候选圆。
步骤5:如果累加器P(i)大于一定閾值,检测边缘点集合中,有多少点的坐标满足此候选圆的方程,每当图像边缘点坐标满足候选圆的方程时,累加器O (i)增值。峰值检测寻找最大的O (i)对应的圆心坐标及半径即为鱼眼镜头图像轮廓。
3 实验结果和分析
本文实验在Matlab2016b平台进行。选择成像区域外存在光晕、轮廓边缘存在大量黑色像素两种类型的图片进行轮廓提取实验,采用标准霍夫变换法和改进的算法进行对比,提取流程及效果对比如下。
3.1 边缘外凸
当成像区域内存在强烈光源,成像区域外会存在或强或弱的光晕,因此边缘点集合并不是一个理想的圆形。如图4(b)所示,使用Canny算子提取的图像边缘点集合呈现“外凸”现象。此时标准霍夫变换会检测出多个圆形。这是由于标准霍夫变换会遍历每一个边缘点,误认为光晕为真实边缘点集合。图像边缘存在光晕的处理结果如图4所示。
在不同情况下光晕亮度变换范围较广,文献[4]通过检测亮度突变排除光斑影响,需要根据每一张图片选择合适的阈值,抑制光晕。本算法通过筛选半径和检测候选圆与边缘点重合的程度提取出准确的轮廓,适应性更广。存在光晕的图像轮廓提取实验数据对比如表1所示。
3.2 边缘内凹
当轮廓边缘存在大量黑色像素,边缘检测无法区分成像区域和非成像区域边界,如图5 (b)所示,边缘点集合存在“内凹”现象,标准霍夫变换提取的轮廓半径偏小,且圆心坐标误差较大。
图像边缘存在黑色像素的处理结果如图5所示。实验数据对比如表2所示。
3.3 本文算法与现有算法的实时性比较
为了进一步验证本文算法的实时性,选择分辨率为345x345、600x400、1 000x788的图片进行对比。实验数据如表3所示。
为了方便比对,以下标准霍夫变换圆半径增长步长、角度增长步长均设置为1.实际应用中,需要根据不同图像预先设置合适搜索步长。
4 结束语
本文提出了一种基于霍夫变换检测圆形确定鱼眼镜头图像轮廓的方法,相比于传统霍夫变换将投票设置在三维空间,改进的算法通过对一维数据进行累加,确定了鱼眼镜头的半径及坐标,极大地降低了计算的复杂度,在较快的速度下,同时保证了轮廓提取的准确度,并且可以排除非整形点的影响,在工程领域具备更高的实用性。
参考文献:
[1]唐俊.基于鱼眼图像的全景漫游模型研究[D].合肥:安徽大学,2003.
[2]王大宇,崔汉国,陈军.鱼眼图像轮廓提取及校正研究[J].计算机工程与设计,2007,204( 12):2878-2879, 2882.
[3]肖诗勤,杨关良.一种改进的鱼眼图像轮廓提取算法[J]计算机与数字工程,2010,38(1): 147-150.
[4]王波涛,闰跃,赵轩.基于最小二乘法的鱼眼镜头轮廓提取算法[J].国外电子测量技术,2015,34(4):31-35.
[5]杨丹,游磊,张小洪,等.基于区域生长的鱼眼图像轮廓提取算法[J].计算机工程,2010,36(8):217-218, 221.
[6]赵红旭.鱼眼图像校正算法的研究与实现[D].上海:上海交通大学,2011.
[7]焦圣喜,肖德军,阚一凡.霍夫变换算法在圆心视觉定位中的应用研究[J].科学技术与工程,2013,13( 14):408914093.
[8] Lei Xu, Erkki Oja.Randomized Hough Transform[J] .Encyclopedia ofArtficiallntelligence, 2008(3):1354-1361.
[9]屈汉章,王洋,吴成茂.基于直径累积的霍夫变换检测圆算法[J].西安邮电大学学报,2017,22(5):89-93.
[10]朱桂英,张瑞林.基于Hough变换的圆检测方法[J].计算机工程与设计,2008,29( 6): 1462-1464.
[11]瞿钧,甘岚.梯度Hough变换在圆检测中的应用[J].华东交通大学学报,2007(1):101-104.