
1.本发明涉及车辆自动驾驶技术领域,特别是涉及一种道路图像地面标线的标注方法。
背景技术:2.高精地图是目前无人驾驶技术的必备环节,而车道线等地面标线数据是高精地图的核心内容,车辆通常需要沿着高精地图中2条车道线所确定的车道中心线进行自动行驶,所以车道线等地面标线对无人驾驶各个模块的功能有着非常重要的作用,经常需要非常准确地识别出车道线的准确位置,为了达到这些目的,需要大量的车道线图像标注数据,用来给算法模型提供学习,提高算法能力。
3.目前现有的技术对车道线等地面标线,采用逐个像素的手工标注方法,标注的对象是直接标注一条像素中心线,或者标注2侧边缘线,也有的是标注整个标线的外轮廓,逐个像素的手工标注方法,速度非常慢,为了标注精度,需要先对图像进行放大,然后再准确地逐个像素进行手工选点,标注一张图像非常耗时费力。
4.对于车道线等具有固定宽度的标线,现有方案通常是直接标注一条中心线,来表示整个标线,但是这些白线或者黄线的中心是通过肉眼进行判断的,标注精度难以保证,而如果逐个像素标注两侧的边缘线或者整个轮廓线的话,标注量又会大大增加,标注速度非常慢。
技术实现要素:5.为了解决以上技术问题,本发明提供一种道路图像地面标线的标注方法,其特征在于:包括以下步骤
6.s1、使用摄像头采集道路图像数据,并组成图像数据集;
7.s2、加载图像数据,以固定缩放比例在标注工具界面上显示当前图像,同时加载已标注的数据,如果没有已标注的数据内容,则新建一个标注数据,并同样显示到标注工具界面上;
8.s3、对显示的图像内容进行观察,判断是否还有需要标注的标线对象,如果有则执行下一步,没有则执行步骤s13;
9.s4、观察并判断预标注的标线对象,用鼠标在标注工具界面上选择并设置符合标线对象的语义标签;
10.s5、根据预标注对象的走向,用鼠标在标注工具界面上选择并设置当前像素的提取方向,提取方向设置为横向或纵向,根据选择的提取方向,用鼠标左键每隔一定距离点击标线附近任意一个像素点p0(i,j);
11.s6、根据当前像素的提取方向,如果是横向则将图像中第i行像素全部取出来,如果是纵向则将图像中第j列像素全部取出来,作为像素数组v;
12.s7、将p0(i,j)和v作为输入数据,传给像素自动计算模块,得到输出数据,输出数
据为两个像素点p1、p2或者为空;
13.s8、判断输出数据是否为空,如果不为空则执行下一步,如果为空则执行步骤s5;
14.s9、将像素点p1、p2保存到内存中,并将它们传给像素坐标自动分段模块,由像素坐标自动分段模块对当前数据进行判断并决定是否在当前标注数据的标注对象信息列表尾部插入一个新的标注对象信息,然后将像素点p1、p2插入到当前标注对象信息列表中最后一个标注对象信息的像素几何信息列表的结尾;
15.s10、对显示的图像内容进行观察,并确认p1、p2是否为当前标注对象左右或者上下的两个边缘点,如果是则执行下一步,如果不是则执行步骤s14;
16.s11、对显示的图像内容进行观察,并确认当前标注对象是否已经标注完成,如果完成则执行下一步,如果未完成则执行步骤s5;
17.s12、对显示的图像内容进行观察,并确认当前图像内容中的所有标注对象是否已经标注完成,如果完成则执行下一步,如果未完成则执行步骤s15;
18.s13、将内存中当前图像的所有标注结果保存到文件中,并切换到下一张图像内容作为新的标注目标,转到步骤s2;
19.s14、在界面上任意位置点击鼠标右键,从内存中删除当前标注数据中最后一个标注对象的最后一个像素对(p1,p2),转到步骤s5;
20.s15、判断是否需要手动结束当前对象的标注,如果需要手动结束则点击界面上“结束”按钮”,这时会在内存中当前标注数据中新建一个标注对象信息,如果不需要手动结束,则不需要任何操作,然后准备对下一个对象进行标注,转到步骤s3。
21.本发明进一步限定的技术方案是:
22.进一步的,步骤s2中的标注数据包括图像文件名、图像宽度、图像高度、图像缩放比例s以及标注对象信息列表;
23.标注对象信息列表,按顺序保存有一个或多个标注对象信息,或者为空;
24.标注对象信息,包括语义信息和像素几何信息列表;
25.语义信息包括标线的类型、颜色、线型;
26.像素几何信息列表包括一个或多个像素几何信息,一个像素几何信息的内容是(i1,j1,i2,j2),其中(i1,j1)和(i2,j2)表示的像素是标线左右或者上下2个边缘像素的坐标。
27.前所述的一种道路图像地面标线的标注方法,步骤s4中的语义标签包括类型标签、颜色标签以及线型标签,类型标签包括车道线、停止线、人行横道线、待转区以及引导线;颜色标签包括白色和黄色;线型标签包括实线和虚线。
28.前所述的一种道路图像地面标线的标注方法,步骤s2中的标注工具界面由上至下分为四行,第一行包括用于显示当前图像序列号、图像总数以及当前图像文件名的信息显示框;第二行包括用于显示图像、标注内容以及用于标注点击的图像显示操作框;第三行包括类型标签按钮、颜色标签按钮、线型标签按钮、像素方向按钮以及“结束”按钮;第四行包括上一张图像切换按钮和下一张图像切换按钮。
29.前所述的一种道路图像地面标线的标注方法,步骤s5中的鼠标左键点击设置为选择并增加标注对象的像素几何信息,增加方式是在像素几何信息列表尾部进行追加,点击一次增加一个像素几何信息,若像素自动计算模块输出为空时则不增加。
30.前所述的一种道路图像地面标线的标注方法,步骤s14中的鼠标右键点击设置为对标注对象的像素几何信息进行删除,删除方式是点击一次只删除标注对象中像素几何信息列表尾部一个元素,如果当前标注对象的像素几何信息列表中只有一个元素,那么则删除整个标注对象信息,下一次再进行新增或者删除操作时,目标切换为上一个标注对象。
31.前所述的一种道路图像地面标线的标注方法,步骤s9中像素坐标自动分段模块的自动分段方法设置为
32.假设当前标注数据内且在内存中的标注对象数目是n,如果n=0,则新建一个标注对象,且该标注对象使用当前各项语义标签,然后将当前像素坐标信息插入到该标注对象的像素几何信息列表中;
33.如果n》0,则取标注对象列表中的最后一个标注对象,假设该标注对象的像素几何信息列表中像素几何信息数目是m,如果m《2,则直接将当前像素坐标信息追加到该标注对象的像素几何信息列表尾部,且使用当前各项语义标签内容覆盖该标注对象的语义信息;
34.如果m》=2,则计算当前像素几何信息是否属于该标注对象,如果属于则将当前像素坐标信息追加到其像素几何信息列表尾部,且该标注对象的语义信息保持不变;
35.如果不属于该标注对象,则新建一个标注对象,且该标注对象使用当前各项语义标签,然后将当前像素坐标信息插入到该标注对象的像素几何信息列表中;
36.计算当前像素几何信息是否属于某个标注对象,假设当前像素坐标信息中两个边缘像素坐标是左边缘像素p1和右边缘像素p2,目标标注对象的最后2个像素几何信息中,倒数第二个像素坐标信息的两个边缘像素坐标是s1、s2,最后一个像素坐标信息的两个边缘像素坐标是s3、s4;
37.分别计算s1、s3、p1这3个点和s2、s4、p2这3个点的关系,计算他们是否是自然连续的3个点;
38.s1到s3距离是d1,s3到p1距离是d2,对s1-s3线段的延长上延长距离d2,得到点s5;
39.再计算p1到s5之间的距离d3,设定一个阈值t,如果d3《t,则p1是s1、s3的自然连续点,否则认为p1是一个新线段的起点;
40.s5坐标的计算公式是:
41.r=(d1+d2)/d1
42.dx=s3.x-s1.x
43.dy=s3.y-s1.y
44.s5.x=s1.x+r*dx
45.s5.y=s1.y+r*dy
46.如果p1是s1、s3的自然连续点,且p2是s2、s4的自然连续点,则当前像素几何信息是属于该标注对象的,否则认为当前像素几何是新的标注对象的起点。
47.前所述的一种道路图像地面标线的标注方法,步骤s7中像素自动计算模块的自动计算方法包括以下步骤
48.e1、输入数据:像素数组v和像素p0(i,j);
49.e2、设定窗口半径k,k设置为大于0的整数;
50.e3、假设v中的像素个数为m个,对v中的像素,从第k-1个像素开始直到第m-1-k个像素结束,遍历每个像素v(n);
51.e4、对像素v(n),取左边k个点,即从v(n-k+1)到v(n),再取右边k个点,即从v(n+1)到v(n+k);
52.e5、对左边k个点和右边k个点分别计算像素平均值,将图像像素设置为(r,g,b),分别计算两边k个点的像素平均值(r_mean,g_mean,b_mean);
53.e6、用左边k个点的(r,g,b)平均值分别减去右边(r,g,b)的平均值,得到(r,g,b)的梯度值(grad_r,grad_g,grad_b);
54.e7、设定梯度加权系数(c_r,c_g,c_b),三个值取值范围为0到1之间,且c_r+c_g+c_b=1.0,然后得到最终梯度值grad=grad_r*c_r+grad_g*c_g+grad_b*c_b;
55.e8、对每一个像素v(n)都计算得到梯度,形成梯度列grad(n);
56.e9、设定一个搜索窗口半径d,查找grad(n)中的局部极大值;
57.e10、设定阈值h,对每个梯度局部极大值点进行遍历,计算其梯度值grad是否大于h,保存该像素v(n)到梯度局部极大值像素集合s中;
58.e11、遍历s中的像素,计算离p0(i,j)最近的2个像素点,得到左右或上下分布的2个点p1、p2,则最终的2个边缘点为p1在v中的后一个点和p2,p1在v中的后一个点为右一或下一个像素点。
59.前所述的一种道路图像地面标线的标注方法,步骤s1至s15中图像像素的数据格式设置为rgb、hsv、hsl以及yuv格式中的任意一种,或者是像素只有单通道的灰度图。
60.前所述的一种道路图像地面标线的标注方法,步骤e9中查找grad(n)中局部极大值的方法设置为,对每个grad(n)计算从第n-d个值到第n+d个值之间,所属d设置为梯度极大值窗口,如果grad(n)是他们中的最大值,则该像素就是梯度局部极大值点。
61.本发明的有益效果是:
62.本发明中,对于大量图像数据进行标注时,本方法可以快速、准确地标注出图像中道路标线的像素几何信息,只需要点击标线像素附近任意一个点就可以自动得到标线上的两侧边缘点,多次连续点击后,就可以得到整条标线的完整像素几何信息,而不需要人工逐个像素点地精确选取,作为一种半自动标注方法,本方法大大降低标注难度,极大地提高了标注速度和精度。
63.另外,本方法的适应性更强,不仅可以标注图像中横向的标线,也可以标注图像中纵向的标线,不仅可以标注车道线,也可以标注停止线、人行横道线、引导线等多种地面标线,不仅可以标注白色标线,也可以标注黄色标线。
附图说明
64.图1为本发明的整体流程图;
65.图2为本发明的标注工具界面图;
66.图3为本发明标注的示意图;
67.图4为本发明像素自动计算的方法流程图。
具体实施方式
68.本实施例提供的一种道路图像地面标线的标注方法,总体流程是,首先采集道路上的图像数据,采集方式是用摄像头在道路上进行图像拍摄,通常是每隔一定距离拍摄一
张,保证每张图像都不是完全一样的,同一位置和角度避免重复拍摄,另外拍摄的主体是道路,所以需要拍到地面,不能完全朝天空拍摄,收集到的图像放到一起,形成一个图像数据集;其次,使用标注工具对图像数据集进行逐个图像的标注操作,具体标注流程是,逐个加载图像,对每个图像以一个固定的缩放比例显示到屏幕上,然后由标注员肉眼观察和判断图像中的内容,如图3所示,对图像中的标线进行逐条标注,每个图像标注完成后标注工具自动保存一个标注文件,里面保存有当前图像名称、标注的语义信息、标注的像素信息等,所有图像标注完成之后,形成一个标注数据集,里面的标注信息和图像数据集中的图像信息一一对应。
69.一个标注数据对应一个图像数据,标注数据内容包括图像文件名、图像宽度width、图像高度height、图像缩放比例s、标注对象信息列表。
70.标注对象信息列表,按顺序保存有一个或多个标注对象信息,也可能为空。
71.标注对象信息,包括语义信息和像素几何信息列表。语义信息包括类型、颜色、线型等,像素几何信息列表包括一个或多个像素几何信息,一个像素几何信息的内容是(i1,j1,i2,j2),其中(i1,j1)和(i2,j2)表示的像素是标线左右或者上下2个边缘像素的坐标。
72.如图2所示,标注工具界面设计是,根据输入的图像数据集的文件路径,检查该路径下所有图像文件,并且按照文件名进行排序,然后打开第一张图像,在界面右上角显示当前图像序列号,图像总数,以及当前图像文件名。然后在中间区域对图像进行显示,图像显示的时候统一设定一个固定的缩放比例s,比如s=1.0,则图像保持原始大小进行显示,如果s=0.5,则先将图像大小压缩到原来的一半,再显示到界面上,如果s=2.0,则将图像放大一倍,再显示到界面上。显示图像数据的同时,也一起在中间区域将该图像对应的标注数据显示到图像中去,如图3中的加粗线所示。同时,后续的用鼠标进行的图像标注点击操作也是在中间区域进行鼠标左、右键的点击操作。
73.鼠标左键点击是选择并增加标注对象的像素几何信息,增加方式是在像素几何信息列表尾部进行追加,点击一次增加一个像素几何信息,或者点击后像素自动计算模块输出为空时则不增加。
74.鼠标右键点击是对标注对象的像素几何信息进行删除,删除方式是点击一次只删除标注对象中像素几何信息列表尾部一个元素,如果当前标注对象的像素几何信息列表中只有一个元素,那么则删除整个标注对象信息,下一次再进行新增或者删除操作时,目标切换为上一个标注对象。
75.如图1所示,具体的标注方法为:
76.(1)加载当前图像和对应的标注数据到内存中去,并显示到界面上,如果没有对应的标注数据,则在内存里面新建一个标注数据;
77.(2)由标注员观察当前图像中的内容,判断是否还有需要标注的标线对象,如果有,则进入下一步,如果没有,则跳到第8步;
78.(3)观察准备标注的标线对象,判断其语义信息,包括类型、颜色、线型等信息,然后用鼠标在界面倒数第二行点击各个标签切换按钮,将标签状态设置为需要的状态。类型标签有车道线、停止线、人行横道线、待转区、引导线等多个选项可以选择,颜色标签有白色、黄色可以选择,线型标签有实线、虚线可以选择;
79.一个图像对应一个标注数据,一个标注数据中包含多个标注对象。当在内存里面
新建标注对象时,需要传入语义信息给标注对象,确定了语义信息之后,后面的步骤再添加标注对象的像素几何信息。
80.(4)根据准确标注的标线对象的走向,即线条是横向的还是纵向的,鼠标点击界面倒数第二行的“像素方向按钮”,将按钮状态相应地切换为纵向或者横向。然后,用鼠标在界面中间区域对标线对象的像素几何信息进行标注,标注方法是,按照标线对象的走向,从前往后进行标注,或者从后往前进行标注,都可以。具体标注方法是,沿着一个方向,每隔一段距离,用鼠标左键点击标线对象中间附近任意一个像素点,得到输入像素点p0(i,j),i、j表示图像中的从左到右、从上到下的第j行、第i列所在的像素,i、j都从0开始;
81.(5)根据p0所在的i、j值和当前“像素方向按钮”的状态,即横向或者纵向,取一整行像素或者一整列像素,组成像素数组v。如果是横向,则v是图像的第j行像素,如果是纵向,则v是图像的第i列像素;
82.(6)将(i,j)和v作为输入参数,传给像素自动计算模块,得到输出数据为2个像素点p1、p2或者输出为空。判断输出是否为空,如果为空,则本次像素自动计算没有结果,所有信息保持不变,如果输出不为空,则得到2个像素点p1、p2,将这两个点的像素坐标信息(i1,j1,i2,j2)传入像素坐标自动分段模块,最终正确放入到当前标注数据中。
83.像素坐标自动分段模块,工作流程是,假设当前标注数据(在内存中)中的标注对象数目是n,如果n=0,则新建一个标注对象(使用当前各项语义标签),然后将当前像素坐标信息插入到该标注对象的像素几何信息列表中;如果n》0,则取标注对象列表中的最后一个标注对象,假设该标注对象的像素几何信息列表中像素几何信息数目是m,如果m《2,则直接将当前像素坐标信息追加到该标注对象的像素几何信息列表尾部,且使用当前各项语义标签内容覆盖该标注对象的语义信息,如果m》=2,则计算当前像素几何信息是否属于该标注对象,如果属于则将当前像素坐标信息追加到其像素几何信息列表尾部,且该标注对象的语义信息保持不变,如果不属于则新建一个标注对象(使用当前各项语义标签),然后将当前像素坐标信息插入到该标注对象的像素几何信息列表中。
84.计算当前像素几何信息是否属于某个标注对象的方法是,假设当前像素坐标信息中两个边缘像素坐标是p1(左边缘像素)、p2(右边缘像素),目标标注对象的最后2个像素几何信息中,倒数第二个像素坐标信息的两个边缘像素坐标是s1、s2,最后一个像素坐标信息的两个边缘像素坐标是s3、s4,则分别计算s1、s3、p1这3个点和s2、s4、p2这3个点的关系,以s1、s3、p1这3个点为例,计算他们是否是自然连续的3个点。计算方法是,如图4所示,s1到s3距离是d1,s3到p1距离是d2,对s1-s3线段的延长上延长距离d2,得到点s5,然后计算p1到s5之间的距离d3,设定一个阈值t,如果d3《t,则p1是s1、s3的自然连续点,否则认为p1是一个新线段的起点。s5坐标的计算公式是:
85.r=(d1+d2)/d1
86.dx=s3.x-s1.x
87.dy=s3.y-s1.y
88.s5.x=s1.x+r*dx
89.s5.y=s1.y+r*dy
90.如果p1是s1、s3的自然连续点,且p2是s2、s4的自然连续点,则当前像素几何信息是属于该标注对象的,否则认为当前像素几何是新的标注对象的起点。
91.像素坐标自动放入到当前标注数据(在内存中)中后,需要更新界面显示信息,显示p1、p2所在像素的位置,如果当前像素几何信息列表中有上一个点,则分别增加上一个p1、p2到当前p1、p2的连线,线型和颜色按照当前标注对象进行设置,比如如果颜色标签为“白线”可以显示为红色,颜色标签为“黄色”可以显示为蓝色,线型标签“实线”或“虚线”则连线也同样用实线或者虚线来显示;
92.(7)观察p1、p2是否是当前标注对象的左右或者上下2个边缘点,如果是,则进入下一步,如果不是,则可以点击鼠标右键,从内存中当前标注对象中删除上一步中追加的像素坐标信息,同时更新界面显示,删除上一步新增的点或者线,然后转到第4步,点击选择一个新的像素重新进行计算;
93.(8)确认当前标注对象是否已经完成,如果完成,则点击“下一张图像”按钮,将内存中当前标注信息保存到文件中,然后将目标图像切换成下一张图像,转到第1步。
94.如果没有全部完成,还有其他标注对象需要标注,判断是否需要手动结束当前标注对象的标注,如果需要手动结束则点击“结束”按钮,这时会在内存中新建一个标注对象,如果不需要手动结束则不需要进行任何操作,直接准备对下一个标注对象进行标注,转到第3步。
95.像素自动计算方法:
96.给定像素p0(i,j),和根据p0得到的图像整行或者整列像素v(n),设计了一套边缘点计算方法,自动计算p0(i,j)附近的标线边缘点p1、p2。计算方法基于的假设是,对于标线,不管是白线还是黄线,其边缘像素处,其颜色变化最明显,即是其左右一定范围内颜色梯度变化最大的一个点,这样的话,我们就可以对每个像素点,设计一套颜色梯度计算方法,然后选出梯度图中的局部极大值点,取出离p0最近的2个局部极大值点,就是我们想要得到的标线的2个边缘点。依次确定多个边缘点,就确定了整条标线在图像中的位置,最后将所有边缘点分别连成线就得到了标线的2条边缘线,就准确地标注出了标线的像素几何信息。
97.图像像素既可以是(r,g,b)格式,也可以是(h,s,v)、(h,s,l)、(y,u,v)等其他格式,或者是灰度图,灰度图的像素只有单通道,这时每个像素的内容只有灰度值一个值,像素梯度计算的时候只对这一个值进行相应计算,而不是对3个值进行分别计算,过程更加简单快速。
98.对于大量图像数据进行标注时,本方法可以快速、准确地标注出图像中道路标线的像素几何信息,只需要点击标线像素附近任意一个点就可以自动得到标线上的两侧边缘点,多次连续点击后,就可以得到整条标线的完整像素几何信息,而不需要人工逐个像素点地精确选取,作为一种半自动标注方法,本方法大大降低标注难度,极大地提高了标注速度和精度。
99.另外,本方法的适应性更强,不仅可以标注图像中横向的标线,也可以标注图像中纵向的标线,不仅可以标注车道线,也可以标注停止线、人行横道线、引导线等多种地面标线,不仅可以标注白色标线,也可以标注黄色标线。
100.除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。