[0074] 这里的高低阈值都是因图片而异的,一般取高阈值为低阈值的3倍。
[0075] 步骤5:将步骤4得到的图像在进行车道线参数提取后,进行Hough变换得到车道线;
[0076] 步骤6:对步骤1中获得的交通图像进行车辆目标检测,首先下载用于目标检测的RetinaNet模型文件,再使用ImageAI实现目标检测任务;
[0077] 步骤7:对步骤6中车辆目标检测后的图像进行定位并取出,具体为:记录选中车辆目标检测后的图像中目标车辆矩形的左上角顶点和右下角顶点坐标,再遍历图像中的所有点,将矩形区域以外的像素点的颜色改成黑色,最后保存修改像素点后的图像;
[0078] 步骤8:采用GrabCut算法进行车辆的交互式前景提取,即输入一个矩形,矩形外的所有区域必为背景,矩形框内的图像是未知的,计算机会使用一个高斯混合模型(GMM)对前景和背景建模,再使用mincut算法后,区分前景和背景。其中GrabCut函数中的掩模图像可以采用矩形模式,也可以采用掩码图像模式,本步骤中采用的为后者,即可得到较好的车辆图像;
[0079] 步骤9:对步骤8获得的车辆区域图像进行中值滤波以及图像二值化处理,所用中值滤波函数为medfilt2,应用此函数可对图像进行中值滤波处理,且能较好地降低椒盐噪声的影响;imbinarize函数可用来对图像进行二值化处理;
[0080] 步骤10:对步骤9获得的图像进行删除小面积连通域处理,使图像仅留下最大的连通域,即车辆区域;可利用bwareaopen函数删除图像中面积较小的连通域。其格式为BW2=bwareaopen(BW,P,conn),此函数可用来删除二值图像BW中面积小于P的对象,默认情况下conn使用8邻域。此函数处理后即可得到图像中的最大连通域,即目标车辆区域;
[0081] 步骤11:对步骤10获得的车辆区域图像进行绘制最小外接矩形处理,并获取该矩形的宽高比,该值即为车辆近似的宽高比;
[0082] 绘制车辆区域最小外接矩形的方法为:对于一个凸多边形O来说,其拥有两对和x及y方向上四个端点相切的切线,四条线确定了一个多边形的外接矩形,但是除非多边形有一条水平的或是垂直的边,否则这个矩形的面积就不能算入最小面积中。然而,可以通过旋转线直到条件满足。假设按照顺时针顺序输入一个凸多边形的n个顶点:①计算该多边形的外接矩形的四个端点,称之为xminO,xmaxO,yminO,ymaxO;②通过四个点构造凸多边形O的四条切线,该四条切线确定了两个卡壳集合;③如果一条或两条线与一条边重合,那么计算由四条线决定的矩形的面积,并且保存为当前最小值,否则将当前最小值定义为无穷大;④顺时针旋转线直到其中一条和多边形的一条边重合;⑤计算新矩形的面积,并且和当前最小值比较,如果小于当前最小值则更新,并保存确定最小值的矩形信息;⑥重复步骤④和步骤⑤,直到线旋转过的角度大于90度;⑦输出外接矩形的最小面积;⑧绘制多边形O的最小外接矩形。
[0083] 可通过步骤11获得的车辆区域的最小外接矩形的宽高比whb来近似车辆的宽高比。
[0084] 步骤12:对步骤10获得的图像进行区域边界追踪处理,以获取车辆区域的轮廓边缘坐标;具体为:
[0085] ①从左到右、从上到下的顺序扫描图像,这样首先会找到目标物体最左上方的边界点(像素点)X0,其具有最小行数值和最小列数值的特点。在此我们定义一个变量temp,用来存储边界点的移动方向。当按照八领域方式检测边界时,初始化temp=3;②在最初边界点X0位置时,按照逆时针方向搜素以当前像素X0为中心的3*3领域,执行以下公式并按从以下方式计算的Res的方向开始寻找:(当temp为偶数时:Res=(temp+7)mod8;当temp为奇数时:Res=(temp+6)mod8)。当遇到新的边界时(找到的第一个与当前像素值相同的像素是一个新的边界元素Xn),更新temp。③如果当前的边界元素Xn等于第二个边界元素X1,而且前面一个边界元素Xn‑1等于X0,则停止;否则,重复第二步;④最终检测到的内边界由像素X0,X1,……,Xn‑2构成。由此得到连通域边缘轮廓像素点,并将连通域边缘轮廓像素点坐标存进自定义数组coor中;
[0086] 步骤13:对步骤12获得的数组coor中车辆轮廓坐标进行条件判断,估计并画出车辆的前后轮位置。通过计算所有坐标中分别与图像左下角以及右下角最近的两点,两点连线即为后轮位置;由于车辆可能会有不同程度的倾斜,汽车前轮位置估计有两种方式。
[0087] 估计车辆后轮位置的方法为:遍历步骤5得到的coor数组中的所有坐标值,分别找到其中与图像左下角与右下角的距离最近的两个像素点,它们的连线Line1即为车辆的后轮大致位置。
[0088] 估计车辆前轮位置的方法可分为两种情况,其一,当whb<阈值Q(即车辆倾斜程度较小)时:可认为图像中车辆前轮连线可由车辆后轮连线直接向垂直方向上移h得到,其中h为目标车辆实际车轮位置情况得到,不同车型的h不同。其二,当whb≥阈值Q(即车辆倾斜程度较大)时:可通过遍历coor数组中坐标值,找到横坐标最小(此处以车辆前轮向左倾斜为例,若车辆右斜,则应找到横坐标最大)的像素点Leftpoint,此点即为车辆的左前轮位置,右前轮位置可通过以Leftpoint为起点,绘制与两后轮位置连线Line1斜率相同且长度相同的线段Line2得到。
[0089] 步骤14:对步骤13获得的车辆前后轮位置估计图像与步骤5得到的车道线图像进行小波变换图像融合,并检测车道线与车前、后轮连接线是否相交。
[0090] 其中,将两张目标图像A、B进行融合所用的方法:
[0091] 步骤14.1:将两张图像转化为double类型,否则使用小波变换输出的会有大量大于1的存在,会导致图像显示有问题。
[0092] 步骤14.2:对图像进行二层分解,建立图像的小波塔型分解。
[0093] 步骤14.3:对各分解层分别进行融合处理,各分解层上的不同频率分量可采用不同的融合算子进行融合处理,最终得到融合后的小波金字塔,即在两张图像的小波分解中,绝对值较大的小波高频系数对应着亮度急剧变化的点,也就是图像中对比度变换较大的边缘特征,对两张照片同样的目标,目标明显的被保留下来,目标不明显的就被忽略,两张图像中的目标的小波变换系数将在不同的分辨率水平上占统治地位。
[0094] 步骤14.4:对融合后所得小波金字塔进行小波重构,所得到的重构图像即为融合图像,而在最终的融合图像中,图像A与图像B中的显著目标,即车道线与车前、后轮连接线都被保留,参见图2。
[0095] 步骤14.5:对所得融合图像进行观察检测,设计了一种基于Pixels的RGB提取判别法来对车辆是否压线进行判断,即对融合图像各个像素点进行RGB数值筛选,由于车道线与车前、后轮连接线交点处像素的RGB数值与未发生交点处像素RGB数值不同,故此可独立筛选出交点处像素点。最后若筛选出该像素点,则证明目标车辆压线;若没有筛选出该像素点,则证明目标车辆没有压线。
[0096] 本发明的具体思路是,分别提取出车道线和车辆,首先,在进行车道线提取的过程中,采用感兴趣区域ROI提取,灰度图转换,高斯平滑处理,Canny边缘检测,最后采用霍夫变换,将车道线较好提取出来,其次,在进行车辆提取的过程中,采用感兴趣区域ROI提取,ImageAI车辆识别,通过识别到的目标物的坐标将车辆区域锁定,最后利用GrabCut算法将车辆较好提取出。参见图4(e)、图4(f),在将车辆区域提取完毕后,首先,对其进行二值化处理,并绘出其最小外接矩形(图中用像素为GRB=(255,0,0)的矩形框标出)。其次,进行车辆的前后轮位置估计。其中车辆的两个后轮位置即为二值化图像中分别距离左下角和右下角最近的两个像素点,而车辆前轮位置估计时存在两种情况:当车辆倾斜程度较小时,如图5(a),车辆前轮连线可由车辆后轮连线直接向垂直方向上移h得到;当车辆倾斜程度较大时,如图5(b),可通过遍历二值化图像轮廓coor数组中坐标值,找到横坐标最小(此处以车辆前轮向左倾斜为例,若车辆右斜,则应找到横坐标最大)的像素点Leftpoint,此点即为车辆的左前轮位置,右前轮位置可通过以Leftpoint为起点,绘制与两后轮位置连线Line1斜率相同且长度相同的线段Line2得到。图5(c)、(d)为车辆区域图像和车道线图像融合后的效果图。图5(e)图像中无白色像素点,说明车轮线与车道线无交点,即不压线;图5(f)图像中有白色像素点,说明车轮线与车道线有交点,即压线。