掌桥专利:专业的专利平台
掌桥专利
首页

车辆计数方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 19:33:46


车辆计数方法、装置、电子设备及存储介质

技术领域

本发明涉及人工智能技术领域,具体涉及一种车辆计数方法、装置、电子设备及存储介质。

背景技术

汽车是交通中使用频率很高的工具,受天气,道路情况和驾驶人员技能等因素的影响,汽车受损是不可避免的,尤其是在交通事故中,上报的事故图片中大多涉及多个车辆,目前大多采用计算机视觉、目标检测等方法为受损车辆进行智能定损。

然而,现有的智能定损系统无法进行事故图片中粘连车辆的计数、定位等处理。因此,在进行车辆定损时,如何精确计算事故图片中车辆,成为了本领域技术人员急切解决的问题。

发明内容

鉴于以上内容,有必要提出一种车辆计数方法、装置、电子设备及存储介质,通过对预处理后的图像进行形态学操作,对粘连车辆进行了多次分离,提高了车辆计数的准确率。

本发明的第一方面提供一种车辆计数方法,所述方法包括:

获取采集的原始图像,并对所述原始图像进行第一预处理,得到第一图像,其中,所述原始图像中包含有多个车辆;

对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓;

基于所述多个轮廓确定目标轮廓;

对所述目标轮廓进行距离变换,得到距离变换图像;

对所述距离变换图像进行第二预处理,得到第二图像;

对所述第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量。

可选地,所述对所述第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量包括:

对所述第二图像进行预设次数的腐蚀操作,并对腐蚀操作后的图像进行连通区域标记;

遍历所述第二图像中的所有连通区域,计算所述原始图像中的车辆数量。

可选地,所述对所述原始图像进行第一预处理,得到第一图像包括:

将所述原始图像输入预先训练的语义分割模型中,得到分割结果;

对所述分割结果进行二值化处理,得到第一图像。

可选地,所述对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓包括:

对所述第一图像进行膨胀操作,得到膨胀图像;

对所述第一图像进行腐蚀操作,得到腐蚀图像;

采用所述膨胀图像减所述腐蚀图像,获取所述第一图像中的多个轮廓。

可选地,所述对所述第一图像进行膨胀操作,得到膨胀图像包括:

获取预先创建的结构元;

采用所述结构元在所述第一图像上依次对比识别,获取所述结构元覆盖下的图像区域中的最大像素值,并将所述结构元的中心位置的像素点的灰度值替换为所述最大像素值,得到膨胀图像。

可选地,所述对所述第一图像进行腐蚀操作,得到腐蚀图像包括:

采用所述结构元在所述第一图像上依次对比识别,获取所述结构元覆盖下的图像区域中的最小像素值,并将所述结构元的中心位置的像素点的灰度值替换为所述最小像素值,得到腐蚀图像。

可选地,所述对所述目标轮廓进行距离变换,得到距离变换图像包括:

将所述目标轮廓生成包含边缘像素点的轮廓掩码图像;

将所述轮廓掩码图像中所包含的所述边缘像素点转换为对应的距离值,得到距离变换图像。

本发明的第二方面提供一种车辆计数装置,所述装置包括:

获取模块,用于获取采集的原始图像,并对所述原始图像进行第一预处理,得到第一图像,其中,所述原始图像中包含有多个车辆;

第一操作模块,用于对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓;

确定模块,用于基于所述多个轮廓确定目标轮廓;

变换模块,用于对所述目标轮廓进行距离变换,得到距离变换图像;

预处理模块,用于对所述距离变换图像进行第二预处理,得到第二图像;

第二操作模块,对所述第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量。

本发明的第三方面提供一种电子设备,所述电子设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现所述的车辆计数方法。

本发明的第四方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的车辆计数方法。

综上所述,本发明所述的车辆计数方法、装置、电子设备及存储介质,能够推动智慧城市的建设,应用于智慧建筑、智慧安防、智慧社区、智慧生活、物联网等领域,通过对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓,在第一次形态学操作时扩大了粘连车辆的破碎部分,同时消除了小且无意义的车辆部件,初步分开了粘连车辆,精确的获取了第一图像中的轮廓。对目标轮廓进行距离变换,对所述距离变换图像进行第二预处理,得到第二图像,进一步对第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量,在第二次形态学操作过程中,对第二图像进行预设次数的腐蚀操作,消除第二图像中的边界点,使得图像沿着边界向内收缩,进一步收缩车辆边界,粘连的车辆被完全分离,提高了车辆计数的准确率。

附图说明

图1是本发明实施例一提供的车辆计数方法的流程图。

图2是本发明实施例二提供的车辆计数装置的结构图。

图3是本发明实施例三提供的电子设备的结构示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

实施例一

图1是本发明实施例一提供的车辆计数方法的流程图。

在本实施例中,所述车辆计数方法可以应用于电子设备中,对于需要进行车辆计数的电子设备,可以直接在电子设备上集成本发明的方法所提供的车辆计数的功能,或者以软件开发工具包(Software Development Kit,SDK)的形式运行在电子设备中。本发明实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(ArtificialIntelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。

人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习、深度学习等几大方向。

如图1所示,所述车辆计数方法具体包括以下步骤,根据不同的需求,该流程图中步骤的顺序可以改变,某些可以省略。

101,获取采集的原始图像,并对所述原始图像进行第一预处理,得到第一图像,其中,所述原始图像中包含有多个车辆。

本实施例中,原始图像是通过摄像设备采集的,其中,所述摄像设备可以为摄像头、行车记录仪、手机等可以采集图像的设备。所述原始图像中包含有多个车辆,同时,原始图像中还包含有背景图像。

本实施例中,在获取到原始图像中,需要对原始图像进行第一预处理,便于后续统计原始图像中的车辆。

在一个可选的实施例中,所述对所述原始图像进行第一预处理,得到第一图像包括:

将所述原始图像输入预先训练的语义分割模型中,得到分割结果;

对所述分割结果进行二值化处理,得到第一图像。

本实施例中,所述语义分割指的是把一张图像的每个像素都标注上对应的类别,基于标注的类别进行分类,结合了图像分类、目标检测和图像分割,将图像分割成具有一定语义含义的区块域,并识别出每个区域块的语义类别。

本实施例中,可以预先训练语义分割模型,具体地,所述语义分割模型的训练过程包括:

获取多张历史图像,其中,所述多张历史图像包括对应于不同事故背景的车辆图像;

对每张所述历史图像的车辆轮廓进行标注,得到目标历史图像;

将多张目标历史图像输入与语义分割模型中进行训练,使得训练得到的语义分割模型能够从不同事故背景的车辆图像中分割出车辆轮廓。

本实施例中,事故背景的车辆图像中可能存在多个车辆粘连在一起的情况,或者车辆部件和车身未在同一个位置的情况,故语义分割模型分割出的车辆轮廓可能为车辆某个部件的轮廓、一个车辆的车身的轮廓、几个车辆粘连在一个的轮廓。

本实施例中,所述语义分割模型可以为基于全卷积的扩张卷积语义分割模型,也可以为基于全卷积的对称语义分割模型。

其中,基于全卷积的扩张卷积语义分割模型考虑了像素与像素之间的空间一致性关系,利用多个不同采样率的扩张卷积提取特征,再将特征融合以捕获不同大小的上下文信息,及采用了完全连接条件随机场(Conditional Random Field,CRF)来提高模型捕获细节的能力,所述全卷积的扩张卷积语义分割模型通过使用空洞卷积提升了目标边界的定位,进而提高了获取的车辆轮廓的准确率。

其中,基于全卷积的对称语义分割模型中不包含全连接层,全部由卷积层构成,通过将一张原始图像输入到卷积神经网络后,经过多次卷积及池化过程得到一系列的特征图,然后利用反卷积层对最后一个卷积层得到的特征图进行上采样,使得上采样后特征图与原始图像的大小一样,从而实现对特征图上的每个像素值进行预测的同时保留其在原图像中的空间位置信息,最后对上采样特征图进行逐像素分类,逐个像素计算softmax分类损失。由于全卷积的对称语义分割模型中不包含全连接层的全卷积网络,适应任意尺寸的原始图像,同时结合不同深度层结果的跳级结构,确保了语义分割模型的鲁棒性和精确性。

本实施例中,通过对原始图像进行语义分割,例如,原始图片中包含有车辆、树、人等类别,对车辆、树、人对应的每个像素进行类别标注,将相同类别进行分割,得到原始图像中各个区域块的类别及对应的分割掩码。

具体地,所述分割掩码是指所述原始图像中标注的类别对应的标签,所述分割掩码是一个二进制图像(像素值为0或者1)例如,将与车相关的区域块的像素值设置为1,将与车无关的区域块的像素值设置为0。

本实施例中,在得到分割结果后,需要对所述分割结果进行二值化处理,具体地,将分割结果中的前景图像对应的像素值设置为1,背景图像对应的像素值设置为0,得到二值化图像,即第一图像。

102,对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓。

本实施例中,所述第一图像是指非车类别的部件遮挡后的图像,所述第一图像中包含有多个车部件的轮廓。

本实施例中,形态学操作主要从第一图像内提取分量信息,所述分量信息通常对于表达和描绘图像的形状,形态学操作可以包含有腐蚀、膨胀、开运算、闭运算、形态学梯度运算等。

本实施例中,所述轮廓是指通过对所述第一图像进行第一次形态学操作后得到的。

具体地,所述对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓包括:

对所述第一图像进行膨胀操作,得到膨胀图像;

对所述第一图像进行腐蚀操作,得到腐蚀图像;

采用所述膨胀图像减所述腐蚀图像,获取所述第一图像中的多个轮廓。

本实施例中,通过用膨胀图像减腐蚀图像的操作,可以获取所述第一图像中的前景图像的边缘,即多个轮廓。具体地,可以通过将预设函数cv2.morphologyEx()的操作类型参数op设置为‘cv2.MORPH_GRADIENT’,采用所述预设函数可以实现所述膨胀图像减所述腐蚀图像的操作。

进一步地,所述对所述第一图像进行膨胀操作,得到膨胀图像包括:

获取预先创建的结构元;

采用所述结构元在所述第一图像上依次对比识别,获取所述结构元覆盖下的图像区域中的最大像素值,并将所述结构元的中心位置的像素点的灰度值替换为所述最大像素值,得到膨胀图像。

本实施例中,可以预先创建结构元,所述结构元可以为椭圆或者圆形形状的内核,也可以为任意形状。

本实施例中,所述膨胀操作能对第一图像的边界进行扩张,用于填补分割后图像内所存在的空白,可以扩大粘连车辆的破碎部分。具体地,在进行膨胀操作时,采用结构元在所述第一图像上依次对比识别,将所述结构元的中心位置的像素点的灰度值设置为所述结构元所覆盖的图像区域的所有像素中最大的像素值,其中,最大像素值可以为255。

进一步地,所述对所述第一图像进行腐蚀操作,得到腐蚀图像包括:

采用所述结构元在所述第一图像上依次对比识别,获取所述结构元覆盖下的图像区域中的最小像素值,并将所述结构元的中心位置的像素点的灰度值替换为所述最小像素值,得到腐蚀图像。

本实施例中,所述腐蚀操作能对第一图像的边界进行缩小,用于腐蚀前景图像中车辆部件的边界,可以消除小且无意义的车辆部件。具体地,在进行腐蚀操作时,采用结构元在所述第一图像上依次对比识别,将所述结构元的中心位置的像素点的灰度值设置为所述结构元所覆盖的图像区域的所有像素中最小的像素值,其中,最小像素值可以为0。

本实施例中,通过用对所述第一图像进行膨胀和腐蚀操作,识别出所述第一图像中目标的形状和轮廓,扩大了粘连车辆的破碎部分,同时消除了小且无意义的车辆部件,同时采用所述膨胀图像减所述腐蚀图像,初步分开了粘连车辆,精确的获取了第一图像中的轮廓。

103,基于所述多个轮廓确定目标轮廓。

本实施例中,从所述第一图像中获取的轮廓,可能为车辆的轮廓,也可能为车辆部件的轮廓,为了后续提高车辆计数的准确率和效率,对所述多个轮廓进行过滤,将不符合车辆面积要求的进行过滤,将过滤后保留的轮廓确定为目标轮廓。

在一个可选的实施例中,所述基于所述多个轮廓确定目标轮廓包括:

计算每个轮廓的面积;

将每个轮廓的面积与预设的轮廓面积阈值进行比较;

将大于或者等于所述预设的轮廓面积阈值的轮廓确定为目标轮廓,并删除小于所述预设的轮廓面积阈值的轮廓。

本实施例中,可以采用cv2.contourArea()函数计算每个轮廓的面积。

本实施例中,可以预先设置轮廓面积阈值,过滤掉轮廓面积小于所述预设的轮廓面积阈值,即过滤掉一些较小的车辆部件的轮廓,减少了小的车辆部件的轮廓的干扰,提高了后续车辆轮廓计数的效率及准确率。

104,对所述目标轮廓进行距离变换,得到距离变换图像。

本实施例中,通常的像素级的匹配结果难以满足定位测量应用中的轮廓匹配要求,本实施例通过对所述目标轮廓进行距离变换,便于后续轮廓定位,进而提高了车辆计数的准确率。

在一个可选的实施例中,所述对所述目标轮廓进行距离变换,得到距离变换图像包括:

将所述目标轮廓生成包含边缘像素点的轮廓掩码图像;

将所述轮廓掩码图像中所包含的所述边缘像素点转换为对应的距离值,得到距离变换图像。

本实施例中,在进行目标轮廓的距离转换时,将所述目标轮廓生成包含边缘像素点的轮廓掩码图像,所述目标轮廓是指连接所有连续点(沿着边界)的曲线,具有相同的像素值,基于所述像素值对所述目标轮廓的内部进行填充,并对填充后的掩码图像进行高斯模糊,得到轮廓掩码图像。

本实施例中,通过对掩码图像进行高斯模糊,对所述掩码图像进行了去噪,使得轮廓掩码图像的边缘平滑,确保了轮廓掩码图像的质量。

本实施例中,通过OpenCV中的distanceTransform()函数,计算所述轮廓掩码图像中每个非零点(掩码不为0)与最近的零点(掩码为0)之间的距离,得到距离变换图像,所述距离变换图像上越亮的点,表示离零点的距离越远,将在车辆中心形成一条亮纹,以车辆中心的亮纹代表一辆车。

105,对所述距离变换图像进行第二预处理,得到第二图像。

本实施例中,所述第二预处理是指对距离变换图像进行归一化处理,并对归一化处理后的距离变换结果作自适应阈值化操作,得到新的分割结果,即第二图像。

在一个可选的实施例中,所述对所述距离变换图像进行第二预处理,得到第二图像包括:

对所述距离变换图像进行归一化处理;

对归一化处理结果进行阈值二值化处理,得到第二图像。

本实施例中,在距离变换之后,对距离变换图像进行归一化处理,具体地,所述归一化处理是指将距离变换图像中的多个距离转换为[0,1]的范围。

本实施例中,进一步地,对归一化处理结果采用自适应阈值分割算法进行二值化,所述自适应阈值分割算法可以为OTSU算法,利用所述OTSU算法确定最佳阈值,从上到下、从左到右,依次遍历图像所有像素点的像素值,若像素值大于最佳阈值则设定像素值为255,若小于或等于最佳阈值则设定像素值为0,得到二值化图像,即第二图像。

106,对所述第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量。

本实施例中,第二次形态学操作是为了更加精确的计算原始图像中的车辆数量。

在一个可选的实施例中,所述对所述第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量包括:

对所述第二图像进行预设次数的腐蚀操作,并对腐蚀操作后的图像进行连通区域标记;

遍历所述第二图像中的所有连通区域,计算所述原始图像中的车辆数量。

本实施例中,可以预先设置腐蚀操作的次数,例如,5次或者10次等。

本实施例中,通过将第二图像中具有相同像素值且相邻的像素找出来,并将每个连通区域设置一个标记,完成连通区域标记。

进一步地,所述遍历所述第二图像中的所有连通区域,计算所述原始图像中的车辆数量包括:

第一次遍历所述第二图像,对所述第二图像中的每个像素设置一个标记;

记录每个像素的标记所属的连通区域;

第二次遍历所属第二图像,将每个像素的标记替换为所属的连通区域的连通区域标记;

将相同的连通区域标记的像素组件成一个连通区域;

对每个连通区域进行分析,得到分析结果;

根据分析结果,计算所述原始图像中的车辆数量。

本实施例中,可以利用connectedComponents()函数对第二图像进行连通域的统计和分析。

进一步地,所述对每个连通区域进行分析,得到分析结果包括:

采用预设的函数计算每个连通区域的多个参数,其中,所述参数可以为面积、外接矩形,质心;

判断所述多个参数是否满足车辆计数条件;

当每个参数满足所述车辆计数条件时,确定所述分析结果为记录对应连通区域;

当任意一个参数不满足所述车辆计数条件时,确定所述分析结果为不记录对应连通区域。

本实施例中,所述原始图像中携带有车辆计数条件,包含有车辆的面积、车辆的质心等车辆信息。

本实施例中,所述预设的函数可以为OpenCV 4提供的connectedComponentsWithStats()函数,采用所述预设的函数标记出第二图像中不同连通区域的同时,统计连通区域的位置、面积的信息。

本实施例中,通过对第二图像进行预设次数的腐蚀操作,消除第二图像中的边界点,使得图像沿着边界向内收缩,进一步收缩车辆边界,粘连的车辆被完全分离,并通过遍历所述第二图像中的所有连通区域,对所述连通区域进行分析,在分析过程中筛选掉不满足车辆计数条件的连通区域,提高了车辆计数的准确率。

综上所述,本实施例所述的车辆计数方法,通过对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓,在第一次形态学操作时扩大了粘连车辆的破碎部分,同时消除了小且无意义的车辆部件,初步分开了粘连车辆,精确的获取了第一图像中的轮廓。对目标轮廓进行距离变换,对所述距离变换图像进行第二预处理,得到第二图像,进一步对第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量,在第二次形态学操作过程中,对第二图像进行预设次数的腐蚀操作,消除第二图像中的边界点,使得图像沿着边界向内收缩,进一步收缩车辆边界,粘连的车辆被完全分离,提高了车辆计数的准确率。

实施例二

图2是本发明实施例二提供的车辆计数装置的结构图。

在一些实施例中,所述车辆计数装置20可以包括多个由程序代码段所组成的功能模块。所述车辆计数装置20中的各个程序段的程序代码可以存储于电子设备的存储器中,并由所述至少一个处理器所执行,以执行(详见图1描述)车辆计数的功能。

本实施例中,所述车辆计数装置20根据其所执行的功能,可以被划分为多个功能模块。所述功能模块可以包括:获取模块201、第一操作模块202、确定模块203、变换模块204、预处理模块205及第二操作模块206。本发明所称的模块是指一种能够被至少一个处理器所执行并且能够完成固定功能的一系列计算机可读指令段,其存储在存储器中。在本实施例中,关于各模块的功能将在后续的实施例中详述。

获取模块201,获取采集的原始图像,并对所述原始图像进行第一预处理,得到第一图像,其中,所述原始图像中包含有多个车辆。

本实施例中,原始图像是通过摄像设备采集的,其中,所述摄像设备可以为摄像头、行车记录仪、手机等可以采集图像的设备。所述原始图像中包含有多个车辆,同时,原始图像中还包含有背景图像。

本实施例中,在获取到原始图像中,需要对原始图像进行第一预处理,便于后续统计原始图像中的车辆。

在一个可选的实施例中,所述获取模块201对所述原始图像进行第一预处理,得到第一图像包括:

将所述原始图像输入预先训练的语义分割模型中,得到分割结果;

对所述分割结果进行二值化处理,得到第一图像。

本实施例中,所述语义分割指的是把一张图像的每个像素都标注上对应的类别,基于标注的类别进行分类,结合了图像分类、目标检测和图像分割,将图像分割成具有一定语义含义的区块域,并识别出每个区域块的语义类别。

本实施例中,可以预先训练语义分割模型,具体地,所述语义分割模型的训练过程包括:

获取多张历史图像,其中,所述多张历史图像包括对应于不同事故背景的车辆图像;

对每张所述历史图像的车辆轮廓进行标注,得到目标历史图像;

将多张目标历史图像输入与语义分割模型中进行训练,使得训练得到的语义分割模型能够从不同事故背景的车辆图像中分割出车辆轮廓。

本实施例中,事故背景的车辆图像中可能存在多个车辆粘连在一起的情况,或者车辆部件和车身未在同一个位置的情况,故语义分割模型分割出的车辆轮廓可能为车辆某个部件的轮廓、一个车辆的车身的轮廓、几个车辆粘连在一个的轮廓。

本实施例中,所述语义分割模型可以为基于全卷积的扩张卷积语义分割模型,也可以为基于全卷积的对称语义分割模型。

其中,基于全卷积的扩张卷积语义分割模型考虑了像素与像素之间的空间一致性关系,利用多个不同采样率的扩张卷积提取特征,再将特征融合以捕获不同大小的上下文信息,及采用了完全连接条件随机场(Conditional Random Field,CRF)来提高模型捕获细节的能力,所述全卷积的扩张卷积语义分割模型通过使用空洞卷积提升了目标边界的定位,进而提高了获取的车辆轮廓的准确率。

其中,基于全卷积的对称语义分割模型中不包含全连接层,全部由卷积层构成,通过将一张原始图像输入到卷积神经网络后,经过多次卷积及池化过程得到一系列的特征图,然后利用反卷积层对最后一个卷积层得到的特征图进行上采样,使得上采样后特征图与原始图像的大小一样,从而实现对特征图上的每个像素值进行预测的同时保留其在原图像中的空间位置信息,最后对上采样特征图进行逐像素分类,逐个像素计算softmax分类损失。由于全卷积的对称语义分割模型中不包含全连接层的全卷积网络,适应任意尺寸的原始图像,同时结合不同深度层结果的跳级结构,确保了语义分割模型的鲁棒性和精确性。

本实施例中,通过对原始图像进行语义分割,例如,原始图片中包含有车辆、树、人等类别,对车辆、树、人对应的每个像素进行类别标注,将相同类别进行分割,得到原始图像中各个区域块的类别及对应的分割掩码。

具体地,所述分割掩码是指所述原始图像中标注的类别对应的标签,所述分割掩码是一个二进制图像(像素值为0或者1)例如,将与车相关的区域块的像素值设置为1,将与车无关的区域块的像素值设置为0。

本实施例中,在得到分割结果后,需要对所述分割结果进行二值化处理,具体地,将分割结果中的前景图像对应的像素值设置为1,背景图像对应的像素值设置为0,得到二值化图像,即第一图像。

第一操作模块201,用于对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓。

本实施例中,所述第一图像是指非车类别的部件遮挡后的图像,所述第一图像中包含有多个车部件的轮廓。

本实施例中,形态学操作主要从第一图像内提取分量信息,所述分量信息通常对于表达和描绘图像的形状,形态学操作可以包含有腐蚀、膨胀、开运算、闭运算、形态学梯度运算等。

本实施例中,所述轮廓是指通过对所述第一图像进行第一次形态学操作后得到的。

具体地,所述第一操作模块201对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓包括:

对所述第一图像进行膨胀操作,得到膨胀图像;

对所述第一图像进行腐蚀操作,得到腐蚀图像;

采用所述膨胀图像减所述腐蚀图像,获取所述第一图像中的多个轮廓。

本实施例中,通过用膨胀图像减腐蚀图像的操作,可以获取所述第一图像中的前景图像的边缘,即多个轮廓。具体地,可以通过将预设函数cv2.morphologyEx()的操作类型参数op设置为‘cv2.MORPH_GRADIENT’,采用所述预设函数可以实现所述膨胀图像减所述腐蚀图像的操作。

进一步地,所述对所述第一图像进行膨胀操作,得到膨胀图像包括:

获取预先创建的结构元;

采用所述结构元在所述第一图像上依次对比识别,获取所述结构元覆盖下的图像区域中的最大像素值,并将所述结构元的中心位置的像素点的灰度值替换为所述最大像素值,得到膨胀图像。

本实施例中,可以预先创建结构元,所述结构元可以为椭圆或者圆形形状的内核,也可以为任意形状。

本实施例中,所述膨胀操作能对第一图像的边界进行扩张,用于填补分割后图像内所存在的空白,可以扩大粘连车辆的破碎部分。具体地,在进行膨胀操作时,采用结构元在所述第一图像上依次对比识别,将所述结构元的中心位置的像素点的灰度值设置为所述结构元所覆盖的图像区域的所有像素中最大的像素值,其中,最大像素值可以为255。

进一步地,所述对所述第一图像进行腐蚀操作,得到腐蚀图像包括:

采用所述结构元在所述第一图像上依次对比识别,获取所述结构元覆盖下的图像区域中的最小像素值,并将所述结构元的中心位置的像素点的灰度值替换为所述最小像素值,得到腐蚀图像。

本实施例中,所述腐蚀操作能对第一图像的边界进行缩小,用于腐蚀前景图像中车辆部件的边界,可以消除小且无意义的车辆部件。具体地,在进行腐蚀操作时,采用结构元在所述第一图像上依次对比识别,将所述结构元的中心位置的像素点的灰度值设置为所述结构元所覆盖的图像区域的所有像素中最小的像素值,其中,最小像素值可以为0。

本实施例中,通过用对所述第一图像进行膨胀和腐蚀操作,识别出所述第一图像中目标的形状和轮廓,扩大了粘连车辆的破碎部分,同时消除了小且无意义的车辆部件,同时采用所述膨胀图像减所述腐蚀图像,初步分开了粘连车辆,精确的获取了第一图像中的轮廓。

确定模块203,用于基于所述多个轮廓确定目标轮廓。

本实施例中,从所述第一图像中获取的轮廓,可能为车辆的轮廓,也可能为车辆部件的轮廓,为了后续提高车辆计数的准确率和效率,对所述多个轮廓进行过滤,将不符合车辆面积要求的进行过滤,将过滤后保留的轮廓确定为目标轮廓。

在一个可选的实施例中,所述确定模块203基于所述多个轮廓确定目标轮廓包括:

计算每个轮廓的面积;

将每个轮廓的面积与预设的轮廓面积阈值进行比较;

将大于或者等于所述预设的轮廓面积阈值的轮廓确定为目标轮廓,并删除小于所述预设的轮廓面积阈值的轮廓。

本实施例中,可以采用cv2.contourArea()函数计算每个轮廓的面积。

本实施例中,可以预先设置轮廓面积阈值,过滤掉轮廓面积小于所述预设的轮廓面积阈值,即过滤掉一些较小的车辆部件的轮廓,减少了小的车辆部件的轮廓的干扰,提高了后续车辆轮廓计数的效率及准确率。

变换模块204,用于对所述目标轮廓进行距离变换,得到距离变换图像。

本实施例中,通常的像素级的匹配结果难以满足定位测量应用中的轮廓匹配要求,本实施例通过对所述目标轮廓进行距离变换,便于后续轮廓定位,进而提高了车辆计数的准确率。

在一个可选的实施例中,所述变换模块204对所述目标轮廓进行距离变换,得到距离变换图像包括:

将所述目标轮廓生成包含边缘像素点的轮廓掩码图像;

将所述轮廓掩码图像中所包含的所述边缘像素点转换为对应的距离值,得到距离变换图像。

本实施例中,在进行目标轮廓的距离转换时,将所述目标轮廓生成包含边缘像素点的轮廓掩码图像,所述目标轮廓是指连接所有连续点(沿着边界)的曲线,具有相同的像素值,基于所述像素值对所述目标轮廓的内部进行填充,并对填充后的掩码图像进行高斯模糊,得到轮廓掩码图像。

本实施例中,通过对掩码图像进行高斯模糊,对所述掩码图像进行了去噪,使得轮廓掩码图像的边缘平滑,确保了轮廓掩码图像的质量。

本实施例中,通过OpenCV中的distanceTransform()函数,计算所述轮廓掩码图像中每个非零点(掩码不为0)与最近的零点(掩码为0)之间的距离,得到距离变换图像,所述距离变换图像上越亮的点,表示离零点的距离越远,将在车辆中心形成一条亮纹,以车辆中心的亮纹代表一辆车。

预处理模块205,用于对所述距离变换图像进行第二预处理,得到第二图像。

本实施例中,所述第二预处理是指对距离变换图像进行归一化处理,并对归一化处理后的距离变换结果作自适应阈值化操作,得到新的分割结果,即第二图像。

在一个可选的实施例中,所述预处理模块205对所述距离变换图像进行第二预处理,得到第二图像包括:

对所述距离变换图像进行归一化处理;

对归一化处理结果进行阈值二值化处理,得到第二图像。

本实施例中,在距离变换之后,对距离变换图像进行归一化处理,具体地,所述归一化处理是指将距离变换图像中的多个距离转换为[0,1]的范围。

本实施例中,进一步地,对归一化处理结果采用自适应阈值分割算法进行二值化,所述自适应阈值分割算法可以为OTSU算法,利用所述OTSU算法确定最佳阈值,从上到下、从左到右,依次遍历图像所有像素点的像素值,若像素值大于最佳阈值则设定像素值为255,若小于或等于最佳阈值则设定像素值为0,得到二值化图像,即第二图像。

第二操作模块206,用于对所述第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量。

本实施例中,第二次形态学操作是为了更加精确的计算原始图像中的车辆数量。

在一个可选的实施例中,所述第二操作模块206对所述第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量包括:

对所述第二图像进行预设次数的腐蚀操作,并对腐蚀操作后的图像进行连通区域标记;

遍历所述第二图像中的所有连通区域,计算所述原始图像中的车辆数量。

本实施例中,可以预先设置腐蚀操作的次数,例如,5次或者10次等。

本实施例中,通过将第二图像中具有相同像素值且相邻的像素找出来,并将每个连通区域设置一个标记,完成连通区域标记。

进一步地,所述遍历所述第二图像中的所有连通区域,计算所述原始图像中的车辆数量包括:

第一次遍历所述第二图像,对所述第二图像中的每个像素设置一个标记;

记录每个像素的标记所属的连通区域;

第二次遍历所属第二图像,将每个像素的标记替换为所属的连通区域的连通区域标记;

将相同的连通区域标记的像素组件成一个连通区域;

对每个连通区域进行分析,得到分析结果;

根据分析结果,计算所述原始图像中的车辆数量。

本实施例中,可以利用connected Components()函数对第二图像进行连通域的统计和分析。

进一步地,所述对每个连通区域进行分析,得到分析结果包括:

采用预设的函数计算每个连通区域的多个参数,其中,所述参数可以为面积、外接矩形,质心;

判断所述多个参数是否满足车辆计数条件;

当每个参数满足所述车辆计数条件时,确定所述分析结果为记录对应连通区域;

当任意一个参数不满足所述车辆计数条件时,确定所述分析结果为不记录对应连通区域。

本实施例中,所述原始图像中携带有车辆计数条件,包含有车辆的面积、车辆的质心等车辆信息。

本实施例中,所述预设的函数可以为OpenCV 4提供的connectedComponentsWithStats()函数,采用所述预设的函数标记出第二图像中不同连通区域的同时,统计连通区域的位置、面积的信息。

本实施例中,通过对第二图像进行预设次数的腐蚀操作,消除第二图像中的边界点,使得图像沿着边界向内收缩,进一步收缩车辆边界,粘连的车辆被完全分离,并通过遍历所述第二图像中的所有连通区域,对所述连通区域进行分析,在分析过程中筛选掉不满足车辆计数条件的连通区域,提高了车辆计数的准确率。

综上所述,本实施例所述的车辆计数装置,通过对所述第一图像进行第一次形态学操作,获取所述第一图像中的多个轮廓,在第一次形态学操作时扩大了粘连车辆的破碎部分,同时消除了小且无意义的车辆部件,初步分开了粘连车辆,精确的获取了第一图像中的轮廓。对目标轮廓进行距离变换,对所述距离变换图像进行第二预处理,得到第二图像,进一步对第二图像进行第二次形态学操作,计算所述原始图像中的车辆数量,在第二次形态学操作过程中,对第二图像进行预设次数的腐蚀操作,消除第二图像中的边界点,使得图像沿着边界向内收缩,进一步收缩车辆边界,粘连的车辆被完全分离,提高了车辆计数的准确率。

实施例三

参阅图3所示,为本发明实施例三提供的电子设备的结构示意图。在本发明较佳实施例中,所述电子设备3包括存储器31、至少一个处理器32、至少一条通信总线33及收发器34。

本领域技术人员应该了解,图3示出的电子设备的结构并不构成本发明实施例的限定,既可以是总线型结构,也可以是星形结构,所述电子设备3还可以包括比图示更多或更少的其他硬件或者软件,或者不同的部件布置。

在一些实施例中,所述电子设备3是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路、可编程门阵列、数字处理器及嵌入式设备等。所述电子设备3还可包括客户设备,所述客户设备包括但不限于任何一种可与客户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、数码相机等。

需要说明的是,所述电子设备3仅为举例,其他现有的或今后可能出现的电子产品如可适应于本发明,也应包含在本发明的保护范围以内,并以引用方式包含于此。

在一些实施例中,所述存储器31用于存储程序代码和各种数据,例如安装在所述电子设备3中的车辆计数装置20,并在电子设备3的运行过程中实现高速、自动地完成程序或数据的存取。所述存储器31包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM)、一次可编程只读存储器(One-timeProgrammable Read-Only Memory,OTPROM)、电子擦除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。

在一些实施例中,所述至少一个处理器32可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述至少一个处理器32是所述电子设备3的控制核心(Control Unit),利用各种接口和线路连接整个电子设备3的各个部件,通过运行或执行存储在所述存储器31内的程序或者模块,以及调用存储在所述存储器31内的数据,以执行电子设备3的各种功能和处理数据。

在一些实施例中,所述至少一条通信总线33被设置为实现所述存储器31以及所述至少一个处理器32等之间的连接通信。

尽管未示出,所述电子设备3还可以包括给各个部件供电的电源(比如电池),可选的,电源可以通过电源管理装置与所述至少一个处理器32逻辑相连,从而通过电源管理装置实现管理充电、放电、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备3还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。

应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。

上述以软件功能模块的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分。

在进一步的实施例中,结合图2,所述至少一个处理器32可执行所述电子设备3的操作装置以及安装的各类应用程序(如所述的车辆计数装置20)、程序代码等,例如,上述的各个模块。

所述存储器31中存储有程序代码,且所述至少一个处理器32可调用所述存储器31中存储的程序代码以执行相关的功能。例如,图2中所述的各个模块是存储在所述存储器31中的程序代码,并由所述至少一个处理器32所执行,从而实现所述各个模块的功能以达到车辆计数的目的。

示例性的,所述程序代码可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器31中,并由所述处理器32执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述程序代码在所述电子设备3中的执行过程。例如,所述程序代码可以被分割成获取模块201、第一操作模块202、确定模块203、变换模块204、预处理模块205及第二操作模块206。

在本发明的一个实施例中,所述存储器31存储多个计算机可读指令,所述多个计算机可读指令被所述至少一个处理器32所执行以实现车辆计数的功能。

具体地,所述至少一个处理器32对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或,单数不排除复数。本发明中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

技术分类

06120115954208