APP下载

基于边缘编组的车位线检测方法

2022-12-19田海勇王靖岳王若羽郑珺文王军年

科学技术与工程 2022年31期
关键词:像素点车位梯度

田海勇, 王靖岳, 王若羽, 郑珺文, 王军年

(1.中车大同电力机车有限公司, 大同 037038; 2.沈阳理工大学汽车与交通学院, 沈阳 110159; 3.吉林大学汽车仿真与控制国家重点实验室, 长春 130025)

随着中国机动车数量大幅增加,停车难这一现象日益严重[1],为降低泊车难度,实现车位自动检测迫在眉睫。为解决此问题许多研究提出了各种方案,大致可以分为两类:基于基础设施和基于车载传感器的解决方案。其中基于基础设施的方法虽然具有管理停车位的特点,但由于需要在现有的停车场和车辆中安装其他设备,所以可能无法短时间内应用。基于车辆自带传感器来感知停车位又分为两种:基于自由空间和基于停车位标记的方法[2]。基于自由空间的方法是比较受市场欢迎的,因为它可以通过各种测距传感器,如激光扫描仪[3]、超声波传感器[4]、近程雷达等,检测车辆之间的空闲区域来定位停车位,但是该方法有一个致命的缺点:当没有两相邻车辆或单侧车辆这一条件时,则不能找到自由空间。而基于停车位标记方法是通过车辆上的摄像机传输信息来识别路面上的停车标记,从而指定目标位置,提供更加准确的车位信息,并且还具有成本低、可视化等优点。

目前,很多学者针对停车位标记展开研究。陆桂明等[5]采用改进Canny边缘检测技术,之后通过标准Hough变换检测目标车位,但是标准Hough变换的计算量太大,所耗时间过长。张悦旺[6]提出改进Hough变换的车位检测方法,利用车位线内像素一致性检测停车位,提高该算法运行效率,但是最终检测效果并不理想,杂线较多并且如果车位线颜色与路面颜色相差不大时,它的准确性和鲁棒性往往很差。王晋疆等[7]利用LSD(line segment detector)算法检测车位线,但是对于背景复杂、光照条件差时环视图像检测效果并不好。李晏等[8]对摄像机获取到的全景鸟瞰图做Hough变换,并对检测到的线段二次分类并拟合,完成鸟瞰图中车位线识别。Feret等[9]引入一个新的特征提取管道和一个定向特定的Hough变换可以准确检测出车位线标记。通过上述学者研究发现,车位线检测从利用标准Hough变换提取车位线,逐渐演变为更复杂的图像处理并结合改进的Hough变换得到最终车位线。

针对上述问题,故提出一种基于边缘编组的车位线检测方法,经过图像进行预处理后对图像边缘检测、边缘编组,之后对每个边缘组做非车位线特征剔除、随机Hough变换,最后拟合出车位线。

1 图像预处理

在真实工况下汽车摄像头捕获的图像中,除了能获取到车位线标记信息以外,由于光线条件、背景环境等因素影响,还会出现很多无用的信息或噪声,这都会影响车位线检测的准确度,因此对图像预处理,提高图像质量是很有必要的。

1.1 灰度化

摄像头采集的图像为彩色图像,如图1(a)所示,有R、G、B三个分量,若直接用来进行后续操作会加大计算量,并且占用空间较大,所以这里需要对初始图像做灰度化处理,这样图像可以只存在一个分量。常用的灰度化方法有三种:最大值法、平均值法、加权平均法等,实现效果如图1(b)~图1(d)所示,可以看出图像经过加权平均法后细节保留较好,能控制图像避免过亮或过暗的情况,并且考虑到颜色对人眼的影响程度,对绿色敏感度最高,蓝色敏感度最低[10],故选择加权平均法来实现图像灰度化,公式为

Gray(x,y)=0.3R(x,y)+0.59G(x,y)+

0.11B(x,y)

(1)

式(1)中:(x,y)为捕获图像像素点坐标。

图1 常用灰度化方法实现效果图Fig.1 Commonly used grayscale methods to achieve the effect

1.2 直方图均衡化

灰度化后的图像仍然包含诸如光线等因素导致的噪声,这些因素会影响车位线的检测,故需要增强灰度图像,提高图像对比度。对于常见的图像增强方法有图像锐化和直方图均衡化等算法,效果如图2所示,尽管这两种算法都可以消除噪声,改善低对比度图像质量,但明显采用直方图均衡化算法后的图像更清晰,更能凸显出图像中的主要信息,因为该算法本质是扩展个数多的灰度级,减少个数少的灰度级,从而提高图像对比度[11]。

图2 常见图像增强方法效果图Fig.2 Common image enhancement methods effect chart

1.3 二值化

经过直方图均衡化操作后,图像的灰度等级仍为256,为了方便后期处理以及分离背景与前景,故采用二值化处理的方法,通过阈值分割的方式将图像中的灰度等级变为只是0或1,这样可以明显增加图像对比效果。但如果阈值选择不恰当,就会导致图像部分信息丢失,因此选择Otsu[12](最大类间方差)算法求取阈值,当两类灰度值的均值和方差的协方差最大时,得到最佳阈值,该算法在不同背景以及光照条件下自适应选取阈值,具有较强鲁棒性,检测结果如图3(a)所示。

1.4 形态学去噪

虽然经过二值化处理后的图像可以直接进行边缘检测,但由于车辆周边环境因素影响,图像中还是会出现边界毛刺、噪声、微小结构元素等,因此本文采用开运算方法去除噪声干扰。开运算为先腐蚀后膨胀,腐蚀运算用来将图像中面积较小且不重要的部分去除,膨胀运算与其相反,将图像中空洞和断裂部分填充,图像如图3(b)所示。

图3 图像预处理Fig.3 Image preprocessing

2 边缘编组

2.1 边缘检测

图像的边缘具有丰富的目标信息,对于车位线检测来说,泊车位边缘的提取是必要的。

常用的边缘检测算法有Prewitt、Robert、索贝尔、Laplace、Canny等,本文中采用Canny算子[13]进行边缘检测,该算法具有较强的抗噪性,但为提取车位线的边缘更细致,做了如下改进。

(1)运用高斯滤波器来平滑图像,本质是用其一阶导数对图像中像素按行和列进行卷积(*),公式为

G(x,y)=f(x,y)*H(x,y)

(2)

(3)

式中:G(x,y)为输出图像;f(x,y)为经过预处理操作后的图像;H(x,y)为选取的高斯滤波器;σ为高斯函数的标准差,取0.5。

(2)传统Canny算法计算经过上述预处理后图像的梯度和幅值,采用2×2领域内一阶偏导数的有限差分,计算公式为

Gx(i,j)=[I(i+1,j)-I(i,j)+I(i+1,j+1)-

I(i,j+1)]/2

(4)

Gy(i,j)=[I(i,j+1)-I(i,j)+I(i+1,j+1)-

I(i+1,j)]/2

(5)

式中:Gx表示水平梯度幅值;Gy表示垂直梯度幅值;I表示点(x,y)处的灰度值;(i,j)表示像素点坐标;x表示图像横坐标;y表示图像纵坐标,(x,y)表示图像从左至右后,从上至下。

为减少假边缘和噪声的产生,采用3×3的方向模板替换掉传统的2×2方向模板[14],还增加45°和135°这两个方向模板,这样一共4个方向计算边缘幅值和方向。梯度模板如图4所示。Gx、Gy、G45、G135分别为像素点在x、y、45°、135°方向的一阶偏导数值,根据这4个方向梯度幅值计算水平梯度幅值GX和垂直梯度幅值GY,再利用GX和GY合成像素点(i,j)处的梯度幅值G(i,j)和梯度方向θ(i,j),公式为

(6)

(7)

(8)

(9)

I(i+1,j+1)]-[I(i-1,j-1)+

2I(i-1,j)+I(i-1,j+1)]}

(10)

I(i+1,j+1)]-[I(i-1,j-1)+

2I(i,j-1)+I(i+1,j-1)]}

(11)

I(i,j+1)]-[2I(i-1,j-1)+

I(i-1,j)+I(i,j-1)]}

(12)

I(i,j+1)]-[2I(i+1,j-1)+

I(i+1,j)+I(i,j-1)]}

(13)

图4 梯度模板Fig.4 Gradient template

(3)利用非极大值抑制剔除非边缘点,保留像素点局部最大值,对其余非极大值的相关信息进行抑制。

(4)利用双阈值减少伪边缘数量,其分为高、低两个阈值,如果阈值过高会提取不到边缘,阈值过低则会检测出过多边缘,故采用Otsu算法来选取高阈值Th,对于低阈值来说,一般为高阈值的一半[15],但是为了避免低阈值较高而使得漏检一些重要车位线边缘信息,故令低阈值Tl=0.39Th,这样的设定可以相对来说检测出更多与高阈值边缘相连接的低阈值边缘,为后续边缘编组做好准备。

两种边缘检测后对比图像如图5所示。

图5 边缘检测Fig.5 Edge detection

2.2 边缘编组

经过预处理、边缘检测后的图像,若直接进行随机Hough变换检测直线,处理过程中会受到由噪声产生的短直线对真正车位线的影响,所以首先对边缘图像做8领域搜索并聚类分组,这样每个边缘组都是独立的,单独计算各边缘组直线参数,可以剔除噪声和短线的影响,解决过连接问题。

(1)遍历边缘二元图像,搜索顺序从左到右,从上到下,将得到第一个边缘像素点(xi,yi)作为开头点。

(2)将开头点(xi,yi)作为P0,令P0处灰度值为0,并搜索P0的8邻域中是否存在边缘点,若不存在,返回步骤(1),重新寻找开头点。若存在建立边缘组Hm,将(xi,yi)存入Hm={(xi,yi)},其中m代表第m边缘。

(3)将P0处8邻域内存在的边缘点存入Hm={(xi,yi),(xi+1,yi+1),…,(xi+n,yi+n)},从而更新边缘组,并且将这些边缘点处灰度值置为0,使这些点不被再次扫描,同时建立一个空的边缘组Gm={(xi+1,yi+1),(xi+2,yi+2),…,(xi+n,yi+n)},用于记录除P0外新增加边缘点;

(4)把Gm中最后一点作为P0继续遍历,之后将该点从Gm中删除,并且更新Gm={(xi+1,yi+1),(xi+2,yi+2),…,(xi+n-1,yi+n-1)},若该点8邻域内存在边缘点,则转到步骤(3),若不存在,继续执行本步骤,直至Gm为空。

(5)重复步骤(1)~步骤(4),直至该图像没有再发现边缘点。

(6)设定阈值T2与每个边缘组像素数目比较,剔除小于该阈值的边缘组,从而去除短直线和独立像素点等信息。

3 车位线检测

3.1 剔除非车位线特征边缘

经过边缘分组后,各边缘组内均为8邻域内互相连通的边缘像素点,但是由于环境等影响,其中还是会存在非车位线边缘组,并且当获取到的图片中车位线较细时,之前形态学操作中的核不能很大,如果较大,虽然可以剔除噪声边缘,但是本身车位线边缘信息也会被删除,如图6(a)所示。所以当形态学操作中选取较小的核运算时,可以最大程度保留车位线信息,但不可避免也会存在一些杂乱信息,如图6(b)所示。

图6 剔除非车位线特征效果图Fig.6 Effect of removing non-car parking line features

利用其杂乱信息边缘组内各点梯度方向不一致和车位线边缘组内各点梯度方向相同这一特征,用各边缘组内相邻两像素点梯度方向差分[16]的概念剔除非车位线特征边缘,算法基本步骤如下。

(1)任选取边缘组Hm。

(2)梯度方向θ(i,j)利用上文改进的Canny算子计算。任意边缘组Hm{(xi,yi)}(i=1,2,…,n)中相邻像素点梯度差分ΔU公式定义为ΔU=|θ(xi+1,yi+1)-θ(xi,yi)|(i=1,2,…,n-1)。

(3)设定计数器NH并将初始值赋为0;设定计数器定值NLH,设定梯度方向差分阈值θH。

(4)若ΔU<θH,则累加器NH=NH+1。

(5)若NH>NLH,则该边缘组存在车位线边缘;若不成立,则该将该边缘组像素点灰度值全部置零并返回步骤(1),直至所有边缘组检测完成;最终剔除非车位线特征后的效果如图7所示。

图7 剔除非车位线特征后效果图Fig.7 Effect diagram after removing the feature of non-parking line

3.2 随机Hough变换

直线方程可以转换为

ρ=xcosθ+ysinθ

(14)

式(14)中:ρ为坐标原点到直线的距离;θ为正X轴方向与直线的法线逆时针角度。随机Hough变换的原理为:在图像边缘点中随机选取两个点,通过上式计算出由这两点确定的直线参数ρ、θ,随着采样次数增加,当某一直线参数超过一定阈值则认为检测到一条直线[17],这样可以避免Hough变换中一到多计算量大的问题。

随机Hough变换算法简述如下。

(1)整理经过3.1节剔除非车位线特征边缘后剩余边缘组HK(K=1,2,…,n),初始化参数空间P,令k=0。

(2)从HK中随机选取点(xi,yi)(xi+1,yi+1)代入式(14)求得Pi=(ρi,θi)。

(3)在参数空间P中寻找Pc:|Pc-Pi|<ε,若存在,则Pc的累加器加1;若不存在,则把Pi插入P中且迭代步骤k=k+1。

(4)当k>kmax,结束循环;若没有则进行下一步。

(5)检查Pc的累加器是否达到一定阈值,若没有返回步骤(2);若满足,则输出Pc对应的ρ、θ,并返回步骤(1),对下一边缘组继续检测,直至完成所有边缘组。

3.3 车位线拟合

由于车辆边缘、车位线不连续、地面裂缝及噪声等的影响,经过随机Hough变换后的会得到长度、角度不一的干扰线,故需要进行直线拟合。

(1)随机选取两条直线,计算两直线中点之间的距离以及夹角,若都小于阈值T3、T4,则将这两条直线归为同一直线,删除其中一条长度较短的直线。

(2)对剩余直线段中,角度相同且直线中点之间距离小于车位线宽的线段的端点进行最小二乘法拟合[18]。

(3)求出所剩直线的交点进行标定,即为车位线的顶点,再将各点连接起来,得到最终车位线。

4 实验及结果

为验证基于边缘编组的车位线检测的有效性和实时性,对采集到的车位线图片分别应用传统Hough变换和本文算法检测车位线来对比结果,本文算法利用OpenCV4.2.0库在Visual Studio 2015开发环境中实现,计算机CPU为Core i5 10300H,主频为2.50 GHz,内存16 G。其中T2=80,NLH=100,θH=0.15,T3=5,T4=3°,传统Hough变换中ρ、θ间隔分别为1、0.01°,在传统Hough直线检测过程中,th表示累加平面的阈值参数,即识别某部分为图中的一条直线时,它在累平面中必须达到的值,大于阈值th才可以被认为检测得到一条直线,该实验中直线最少曲线交点th=40,σ为高斯函数的标准差,取0.5。

检测结果如图8所示,当图8(a)中存在一定畸变时,传统Hough变换并不能够准确检测到车位线,并且会出现断裂情况,在实验组二、三中还会产生过连接和漏检问题,如图9、图10所示,将噪声点和边缘点检测为同一直线,本文算法通过边缘分组解决过连接问题和利用梯度差分概念去除非车位线特征边缘组,最后做随机Hough变换检测车位线并达到较好的检测效果和稳定性。

图8 实验组一Fig.8 Experimental group one

图9 实验组二Fig.9 Experimental group two

图10 实验组三Fig.10 Experimental group three

将获取到的车位图片分为三组:垂直停车位、斜式停车位、两侧有车辆停车位,为验证本文算法的运行效率,实验30次取平均所需时间,本文算法时间为边缘编组到检测车位线所需时间,传统Hough时间为边缘检测到直接运用传统Hough变换检测车位线所需时间,如表1所示。其中实验组一、二、三在图像预处理部分所耗时间分别为13、17、14 ms,最终得到三组实验平均每帧图像处理时间分别为87、118、79 ms,即平均每秒可以检测图像帧数分别为11.5、8.5、12.3帧,平均约为10.8帧,基本符合实际应用要求,具有不错的实时性。

表1 两种方法运行效率实验对比 Table 1 Experimental comparison of the operating efficiency of the two methods

5 结论

提出一种基于边缘编组的车位线检测方法,先经过图像预处理,消除部分无用信息,接着采用改进的Canny边缘检测算法,增加45°和135°的方向模板可减少假边缘和噪声影响,同时对检测到的图像边缘进行8邻域聚类分组,解决过连接问题并删除短直线,减少对车位线检测的影响;对剩余边缘组采用相邻两像素点之间梯度差分来剔除非车位线特征边缘组,可提高检测图片中车位线较细车位的效果;最后做随机Hough变换,拟合车位线。实验结果表明,本文算法对不同类型的车位线检测具有不错的表现。

猜你喜欢

像素点车位梯度
磁共振梯度伪影及常见故障排除探讨
图像二值化处理硬件加速引擎的设计
基于局部相似性的特征匹配筛选算法
为了车位我选择了环保出行
我自己找到一个
一个具梯度项的p-Laplace 方程弱解的存在性
基于像素点筛选的舰船湍流尾迹检测算法
基于AMR的梯度磁传感器在磁异常检测中的研究
基于canvas的前端数据加密
一个车位,只停一辆?