本发明涉及信息加工技术领域,具体涉及一种基于群体多源数据的道路裂纹识别方法。具体地说,利用智能手机对道路裂纹拍照,收集道路裂纹的群体数据,包括同一裂纹多人从不同角度采集到的照片以及拍照时候的手机传感器信息,识别裂纹的类型和尺寸等重要属性。
背景技术:
随着无线通信技术和智能手机的快速发展,大量普通用户使用手机、平板电脑等移动设备作为一个基本感知单元,通过移动互联网之间进行协作,实现感知任务分发、感知数据收集利用,最终完成一些大规模、复杂的社会感知任务。目前的城市道路裂纹检测主要是通过专业的道路裂纹检测车完成,不仅需要专业的人员操作,成本很高,并且只能覆盖城市的主要干道,无法快速、便捷、全面地检测城市的道路裂纹。当前智能手机携带丰富的传感器,包括加速度传感器、陀螺仪、重力计等,使其成为一个能力极强的感知终端。大量的普通用户使用智能手机作为基本感知单元,通过智能手机对裂纹拍照,分析这些拍照的图片,收集整个城市的裂纹信息。
在城市的繁华路段,同一个裂纹有很多人拍,可以得到同一个裂纹从不同角度拍摄的照片。通过图片聚类筛选、图片拼接方法,将两张或多张有重叠部分的照片利用一定的方法进行空间匹配对准,经过采样融合后形成一幅包含各图像序列信息的宽视角场景的、完整的、高清晰的无缝高分辨率图像,更加准确地得到裂纹的重要属性。基于群体多源数据进行裂纹识别的时候,首先对收集到的大量裂纹数据进行聚类和筛选,通过加权投票法判断道路裂纹的类型。计算群体多源数据裂纹尺寸时,利用基于sift算子的图像拼接方法对同一个裂纹的数据进行拼接,然后针对拼接后的裂纹图片计算完整的裂纹实际物理尺寸。
技术实现要素:
要解决的技术问题
为了避免现有技术的不足之处,本发明提出一种基于群体多源数据的道路裂纹识别方法。
技术方案
一种基于群体多源数据的道路裂纹识别方法,其特征在于步骤如下:
步骤1:利用智能手机对道路裂纹拍照,收集道路裂纹的群体数据,群体数据包括同一裂纹多人从不同角度采集到的照片以及拍照时候的手机传感器数据;将群体数据整理成五元组<裂纹照片,传感器名称,传感器数值,拍照者身高,拍照时间>的格式;原始数据表示为(img,ax,ay,az,mx,my,mz,h,lat,lng,er,light),其中img代表裂纹照片,(ax,ay,az)代表加速度传感器在三轴的记录值,(mx,my,mz)代表磁力传感器在三轴的记录值,h代表拍照者的身高,lat和lng代表拍照地点的gps经纬度记录值,er代表gps的定位误差,light代表拍照时刻手机的光传感器的记录值;
步骤2:对裂纹数据进行聚类,把同一个裂纹的所有数据聚类在一起;计算n张照片组k={k1,k2,…,kn}中所有照片的聚类结果时,首先通过n张照片拍照时候得到的gps数据,把经纬度坐标投影到直角坐标系中,得到n张照片组的坐标p={p1(x1,y1),p2(x2,y2),…,pn(xn,yn)},然后计算手机镜头方向,以及相机距离目标之间的实际地面距离,计算得到n张照片组的真实坐标p’={p’1(x’1,y’1),p2(x’2,y’2),…,p’n(x’n,y’n)},然后依次计算p’2与p’1之间的距离d,如果p’2与p’1之间的距离小于实验训练阈值ts,那么p’2与p’1是同一个裂纹的数据,否则p’2与p’1不是同一个裂纹的数据,依次计算直到p’n,把属于同一个裂纹的所有数据聚类在一起;
步骤3:对聚类后同一个裂纹的m张照片组数据s={s1,s2,…,sm}中所有照片进行筛选时,首先把m张照片组数据s={s1,s2,…,sm}按照拍照角度[0,π/3]、[π/3,2π/3]、[2π/3,π]、[0,-π/3]、[-π/3,-2π/3]、[-2π/3,-π]分为六组;然后针对六组中的每张照片使用公式score(i)=light(i)/varx(i)+vary(i)+varz(i)计算照片质量得分socre(i),其中light(i)代表光线传感器对应的三个光线强度取值{1.5,1.0,0.5},varx(i)、vary(i)和varz(i)代表拍照片si的时候手机加速度传感器在手机三轴的记录采样值;最后在拍照角度为[0,π/3]、[π/3,2π/3]、[2π/3,π]、[0,-π/3]、[-π/3,-2π/3]、[-2π/3,-π]的六组中选择得分score(i)最高的照片作为代表;
步骤4:从同一个裂纹的大量数据中,筛选出可以代表裂纹的一组高质量照片数据组g={g1,g2,…,gn}后,通过计算每一个数据的权重值以及从该数据计算得到的裂纹类型,通过加权投票方法计算该数据组的裂纹类型:首先使用连通域阈值判断照片数据组g={g1,g2,…,gn}中裂纹的类型是网状裂纹还是线性裂纹;如果gi是网状裂纹,那么gi=1,否则如果gi是线性裂纹,那么gi=-1;提出加权系数info(i),info(i)=score(i)/time_diffe(i),以此来衡量照片数据组g={g1,g2,…,gn}中每一个数据对于判定裂纹类型的重要程度,score(i)代表照片质量得分值,time_diffe(i)代表距离拍照的时间,time_diffe(i)越小越能代表目前裂纹的情况;通过计算出来的g(i)和info(i)的值,通过
步骤5:从同一个裂纹的大量数据中,筛选出代表本组裂纹的高质量照片数据组g={g1,g2,…,gn}后,用基于sift算子的图像拼接算法对图片组进行拼接,得到拼接后的图像gn+1,拼接过程中保留转换矩阵;利用转换矩阵求出图像gn+1的每一个组成部分c1,c2,…,cn;针对c1,c2,…,cn,计算ci像的大小,使用ci的传感器信息计算拍摄ci时的物距和等效焦距,利用凸透镜成像原理计算ci的实际物理尺寸;针对图像gn+1的每一个组成部分c1,c2,…,cn,对各个部分的物理尺寸求和,得到完整的裂纹实际物理尺寸。
有益效果
本发明提出的一种基于群体多源数据的道路裂纹识别方法,可以更加全面地利用群体数据识别裂纹,利用群体数据判断裂纹的类型和尺寸等重要属性,进一步地为市政人员后期维修提供更好的依据。
附图说明
图1为本发明实施例一种基于群体多源数据的道路裂纹识别方法的整体流程图。
图2为基于拍照方向的裂纹数据聚类方法流程图。
图3为基于加权投票法的裂纹类型识别方法流程图
具体实施方式
现结合实施例、附图对本发明作进一步描述:
为了能够利用群体多源数据便捷地检测城市的道路裂纹情况,本发明提供了一种基于群体多源数据的道路裂纹识别方法,该方法利用智能手机对道路裂纹拍照,收集到道路裂纹的群体数据,包括同一裂纹多人从不同角度采集到的照片以及拍照时候的手机传感器信息,提出了道路裂纹识别方法。
该方法通过图片筛选、图片拼接方法,将两张或多张有重叠部分的照片利用一定的方法进行空间匹配对准,经过采样融合后形成一幅包含各图像序列信息的宽视角场景的、完整的、高清晰的无缝高分辨率图像,更加全面地利用了手机拍照时,照片携带的传感器信息,还原拍照情景信息,包括拍照的角度,裂纹所在道路的方向信息等,结合照片本身的图像信息,判断裂纹的类型和尺寸,进一步地为市政人员后期维修提供更好的依据。
为实现上述目的,本发明采取的技术方案为:
一种基于群体多源数据的道路裂纹识别方法,包括如下步骤:
s1、利用智能手机对道路裂纹拍照,收集道路裂纹的群体数据,包括同一裂纹多人从不同角度采集到的照片以及拍照时候的手机传感器数据。将数据整理成五元组<裂纹照片,传感器名称,传感器数值,拍照者身高,拍照时间>的格式。原始数据表示为(img,ax,ay,az,mx,my,mz,h,lat,lng,er,light),其中img代表裂纹照片,(ax,ay,az)代表加速度传感器在三轴的记录值,(mx,my,mz)代表磁力传感器在三轴的记录值,h代表拍照者的身高,lat和lng代表拍照地点的gps经纬度记录值,er代表gps的定位误差,light代表拍照时刻手机的光传感器的记录值。
s2、对裂纹数据进行聚类,把同一个裂纹的所有数据聚类在一起。计算n张照片组k={k1,k2,…,kn}中所有照片的聚类结果时,首先通过n张照片拍照时候得到的gps数据,把经纬度坐标投影到直角坐标系中,得到n张照片组的坐标p={p1(x1,y1),p2(x2,y2),…,pn(xn,yn)},然后计算手机镜头方向,以及相机距离目标之间的实际地面距离,计算得到n张照片组的真实坐标p’={p’1(x’1,y’1),p2(x’2,y’2),…,p’n(x’n,y’n)},然后依次计算p’2与p’1之间的距离d,如果p’2与p’1之间的距离小于实验训练阈值ts,那么p’2与p’1是同一个裂纹的数据,否则p’2与p’1不是同一个裂纹的数据,依次计算直到p’n,把属于同一个裂纹的所有数据聚类在一起。
s3、由于群体数据的低质量性,使用基于照片传感器的图片筛选方法对同一个裂纹的数据进行筛选,使用筛选后的数据进行后续识别。对聚类后同一个裂纹的m张照片组数据s={s1,s2,…,sm}中所有照片进行筛选时,首先把m张照片组数据s={s1,s2,…,sm}按照拍照角度[0,π/3]、[π/3,2π/3]、[2π/3,π]、[0,-π/3]、[-π/3,-2π/3]、[-2π/3,-π]分为六组;然后针对六组中的每张照片使用公式score(i)=light(i)/varx(i)+vary(i)+varz(i)计算照片质量得分socre(i),其中light(i)代表光线传感器对应的三个光线强度取值{1.5,1.0,0.5},varx(i)、vary(i)和varz(i)代表拍照片si的时候手机加速度传感器在手机三轴的记录采样值。其中socre(i)的值越大说明数据质量越好,越能代表本组裂纹;最后在拍照角度为[0,π/3]、[π/3,2π/3]、[2π/3,π]、[0,-π/3]、[-π/3,-2π/3]、[-2π/3,-π]的六组中选择得分score(i)最高的照片作为代表。
s4、从同一个裂纹的大量数据中,筛选出可以代表裂纹的一组高质量照片数据组g={g1,g2,…,gn}后,通过计算每一个数据的权重值以及从该数据计算得到的裂纹类型,通过加权投票方法计算该数据组的裂纹类型。首先使用连通域阈值判断照片数据组g={g1,g2,…,gn}中裂纹的类型是网状裂纹还是线性裂纹。如果gi是网状裂纹,那么gi=1,否则如果gi是线性裂纹,那么gi=-1;提出加权系数info(i),info(i)=score(i)/time_diffe(i),以此来衡量照片数据组g={g1,g2,…,gn}中每一个数据对于判定裂纹类型的重要程度,score(i)代表照片质量得分值,time_diffe(i)代表距离拍照的时间,time_diffe(i)越小越能代表目前裂纹的情况。通过计算出来的g(i)和info(i)的值,通过
s5、从同一个裂纹的大量数据中,筛选出可以代表本组裂纹的高质量照片数据组g={g1,g2,…,gn}后,用基于sift算子的图像拼接算法对图片组进行拼接,得到拼接后的图像gn+1,拼接过程中保留转换矩阵;利用转换矩阵求出图像gn+1的每一个组成部分c1,c2,…,cn;针对c1,c2,…,cn,计算ci像的大小(图片尺寸),使用ci的传感器信息计算拍摄ci时的物距和等效焦距,利用凸透镜成像原理计算出ci的实际物理尺寸;针对图像gn+1的每一个组成部分c1,c2,…,cn,对各个部分的物理尺寸求和,得到完整的裂纹实际物理尺寸。
实施例
步骤1、利用个人开发的安卓应用程序,实现安卓手机端多种传感器数据和裂纹照片的采集,召集志愿者安装安卓应用程序,对道路上的裂纹进行拍照。
步骤2、对于采集到的裂纹照片及传感器数据,将数据整理成五元组<裂纹照片,传感器名称,传感器数值,拍照者身高,拍照时间>的格式。原始数据表示为(img,ax,ay,az,mx,my,mz,h,lat,lng,er,light),其中img代表裂纹照片,(ax,ay,az)代表加速度传感器在三轴的记录值,(mx,my,mz)代表磁力传感器在三轴的记录值,h代表拍照者的身高,lat和lng代表拍照地点的gps经纬度记录值,er代表gps的定位误差,light代表拍照时刻手机的光传感器记录值。
步骤3、对裂纹数据进行聚类,把同一个裂纹的所有数据聚类在一起。计算n张照片组k={k1,k2,…,kn}中所有照片的聚类结果时,如图2所示,基于拍照方向计算裂纹真实位置范围,然后依次计算裂纹之间的距离,通过距离和实验训练阈值ts比较,把属于同一个裂纹的所有数据聚类在一起。
步骤4、对聚类后同一个裂纹的m张照片组数据s={s1,s2,…,sm}中所有照片进行筛选时,首先把m张照片组数据s={s1,s2,…,sm}按照拍照角度[0,π/3]、[π/3,2π/3]、[2π/3,π]、[0,-π/3]、[-π/3,-2π/3]、[-2π/3,-π]分为六组;然后针对六组中的每张照片使用公式score(i)=light(i)/varx(i)+vary(i)+varz(i)计算照片质量得分socre(i);最后在拍照角度为[0,π/3]、[π/3,2π/3]、[2π/3,π]、[0,-π/3]、[-π/3,-2π/3]、[-2π/3,-π]的六组中选择得分score(i)最高的照片作为代表。
步骤5、从同一个裂纹的大量数据中,筛选出可以代表裂纹的一组高质量照片数据组g={g1,g2,…,gn}后,通过计算每一个数据的权重值以及从该数据计算得到的裂纹类型,如图3所示,通过加权投票方法计算该数据组的裂纹类型。
步骤6、从同一个裂纹的大量数据中,筛选出可以代表本组裂纹的高质量照片数据组g={g1,g2,…,gn}后,用基于sift算子的图像拼接算法对图片组进行拼接,得到拼接后的图像gn+1,拼接过程中保留转换矩阵;利用转换矩阵求出图像gn+1的每一个组成部分c1,c2,…,cn;针对c1,c2,…,cn,计算ci像的大小,使用ci的传感器信息计算拍摄ci时的物距和等效焦距,利用凸透镜成像原理计算出ci的实际物理尺寸;针对图像gn+1的每一个组成部分c1,c2,…,cn,对各个部分的物理尺寸求和,得到完整的裂纹实际物理尺寸。