1.一种基于OpenCV和综合匹配距离的红绿灯识别方法,包括如下步骤:
步骤一,捕获视频帧;
利用OpenCV中的cv2.VideoCapture类函数从安装在车头用于拍摄前方路况的摄像设备实时读入视频流;同时通过利用cv2.CAP_PROP_FPS函数设置捕获每幅视频帧的帧速,然后调用cv2.VideoCapture.read函数和设置每个帧对象的width、height的cv2.CAP_PROP_FRAME_WIDTH函数、cv2.CAP_PROP_FRAME_HEIGHT函数完成视频帧捕获;
步骤二,对视频图像进行中值滤波;
利用OpenCV中的cv2.medianBlur函数对步骤一捕获的视频帧进行平滑操作,以减少图像中的噪声,避免后续步骤发生误判;
步骤三,霍夫圆环检测;
红绿灯通常为圆形灯,对经过步骤二处理后的图像进行加权平均灰度化,然后利用OpenCV中的cv2.HoughCircles函数对图像进行霍夫圆环检测,即采用HOUGH_GRADIENT检测方法,同时令图像分辨率与圆心累加器分辨率的比率dp为1,maxRadius为minRadius为步骤四,颜色检测;
对步骤三检测、分割到的圆环进行颜色检测,具体流程如下:
(1)将图像从RGB色彩空间转换到HSV色彩空间;
在HSV色彩模型中,图像的取色变得更加直观,同时可以提高目标识别与检测的鲁棒性,获得更为精准的检测结果;通过调用OpenCV中的cv2.cvtColor函数将图像RGB格式转换为HSV格式;
(2)利用cv2.inRange函数筛选颜色;
在HSV色彩空间中,H通道对应着不同颜色,即各颜色的差异主要体现在H通道值的不同上;所以,通过对H通道值进行筛选,筛选出特定的颜色;若待测试图像内像素点的像素值处于区间[lowerb,upperb]内,则输出图像中对应位置上的像素值为255,否则为0;
(3)计算待测试图像的非零像素点数;
首先设置区间[lowerb,upperb]为[0,10],若输出图像存在非零像素点,则计算图像的非零像素点数,然后进入步骤(4);若输出图像的像素值全为0,即表明待测试图像不是红色信号灯,则更改区间[lowerb,upperb]为[50,70],若输出图像存在非零像素点,则计算图像的非零像素点数,然后进入步骤(4);若输出图像的像素值全为0,即表明待测试图像不是绿色信号灯,则更改区间[lowerb,upperb]为[20,40],若输出图像存在非零像素点,则计算图像的非零像素点数,然后进入步骤(4);若三个[lowerb,upperb]区间对应的输出图像的像素值均全为0,则将此待测试图像做报废处理;
(4)构建衡量两幅图像相似度的综合匹配距离;
通过综合待测试图像与数据库图像非零像素点向量之间的欧氏距离以及非零像素点数比值,构建衡量两幅图像相似度的综合匹配距离;
根据图像非零像素点邻域梯度值以及梯度方向对非零像素点进行向量化后,基于圆形领域计算待测试图像与数据库图像非零像素点向量之间的欧氏距离;对于待测试图像中的非零像素点I(x0,y0),在数据库图像中构建以相同的坐标点(x0,y0)为圆心、r为半径的圆形邻域O,且邻域半径r的取值范围为 若数据库图像中在该圆形邻域内存在m个非零像素点,则分别计算待测试图像中的非零像素点向量i与数据库图像中这m个非零像素点向量j之间的欧氏距离,即有:其中,dij为待测试图像中的非零像素点向量i与数据库图像中的非零像素点向量j之间的欧氏距离;k为每幅图像非零像素点向量的向量维数;i∈[1,N1],j∈[1,N2],且N1为待测试图像中的非零像素点数,N2为数据库图像中的非零像素点数;
在此基础上,融合待测试图像与数据库图像之间的非零像素点数比值,即有衡量两幅图像相似度的综合匹配距离D:其中,d(t)为第t个非零像素点之间的欧氏距离;
作为权值对平均欧氏距离进行加权处理,描述了两幅图像之间的匹配程度;两幅图像之间的匹配程度越高,待测试图像的非零像素点数与数据库图像的非零像素点数越接近,该权值越小,因而最终的综合匹配距离越小;当待测试图像遍历数据库中所有训练图像之后,对计算出的所有综合匹配距离进行对比,最小综合匹配距离对应的待测试图像的类别即为识别结果。
2.如权利要求1所述的基于OpenCV和综合匹配距离的红绿灯识别方法,其特征在于:步骤(2)所述的通过对H通道值进行筛选,筛选出特定的颜色,具体包括:在OpenCV中的HSV模式内,红色、绿色、黄色在H通道内的值分别为0、60和30。在提取各颜色时,通常将各颜色值附近的一个区间值作为提取范围,取该区间半径为10,故红色、绿色和黄色调用的cv2.inRange函数中的lowerb分别为0、50和20,upperb分别为10、70和40。