发明内容
本发明的主要目的在于提供一种基于动态规划的裂缝检测方法,能实现对对比度低、连续性差的裂缝的有效提取。
为了达到上述目的,本发明提供了一种基于动态规划的路面裂缝检测方法,其包括以下步骤:
步骤11:运用模糊梯度和路径跟踪对对比度低的裂缝进行有效增强;
步骤12:运用动态规划的方法,实现对连续性差的裂缝的有效检测;
步骤13:运用支持向量机模型,对所提取的裂缝进行分类。
实施时,步骤11包括:
步骤111:从局部特征出发用方向滤波对线特征进行增强;
步骤112:从全局特征出发运用最优路径搜索的方法进行线特征的增强。
实施时,步骤12包括:
步骤121:运用线段局域链算法进行局部最优搜索,得到候选裂缝段;
步骤122:运用线段全局链算法进行全局最优搜索,得到最大的Beam能量对应的线目标,从而实现对裂缝的提取。
实施时,步骤12包括以下步骤:
步骤1:设定要进行划分的尺度,对图像进行相应的划分,得到多个固定的M ×N个图像小方块,通常每个图像方块的大小为32×32像素;其中,M、N为大于1的整数;
步骤2:对于每个小方块数据,在其四条边线上从左上角开始,按顺时针方向进行标注,得到多个标注点;
步骤3:每两个标注点之间构成一条Beamlet,应用Bresenham算法进行相应的插值来确定Beamlet上所有图像数据点;
步骤4:搜索每两个标注点之间的最小代价路径,并计算平均路径代价值,作为对应得Beamlet值,将路径长度作为Beamlet变换系数;
步骤5:对Beamlet值进行标准归一化处理,并进行统计分析,用类间方差最大法进行二类聚类,得到阈值,并运用广义似然比检验法来检测判断检验假设,确定符合假设条件下的Beamlets;
步骤6:应用Beamlet局域链算法将步骤5所得Beamlets进行逼近,用逼近后的Beamlets对原Beamlets进行更新;
步骤7:用格状图来存储余下的Beamlets,得到M×N个节点,节点的权值为Beamlet值与Beamlet变换系数的乘积;
步骤8:用Dijkstra算法计算每两个Beamlet节点之间的最小代价路径,并计算J(L)值;最小的J(L)值对应的Beamlets即为裂缝。
实施时,步骤13包括:
步骤131:选择基于统计学习理论的支持向量机模型,核函数为径向基函数,标准差为σ,取σ在1×10-7和3×10-7之间;
步骤132:对裂缝特征提取;
步骤133:基于支持向量机的裂缝分类。
实施时,该裂缝特征包括:裂缝对应面元的面积、裂缝最小外接矩形的面积、裂缝最大外接矩形的面积、线性度、饱和度、裂缝总方向、裂缝平均方向、面元间最大距离、面元间平均距离和面元密度。
实施时,步骤133包括:
步骤1331:构建样本集,选择预定数目的横向裂缝、纵向裂缝、龟裂和块状裂缝样本预定数目;
步骤1332:对每个样本,计算其10种特征值,构成样本的特征向量;
步骤1333:将每两类样本的特征向量输入SVM模型进行训练,得到SVM模 型的参数,得到训练好的模型;
步骤1334:在裂缝分类中,用训练好的模型对裂缝进行分类。
与现有技术相比,本发明所述的基于动态规划的裂缝检测方法,能实现对对比度低、连续性差的裂缝的有效提取。
具体实施方式
本发明设计的基于动态规划的裂缝检测方法是一种全局处理的方法,能实现对对比度低、连续性差的裂缝的有效提取。
本发明设计了分为三个步骤的裂缝检测方法:第一步为裂缝增强,第二步为裂缝提取,第三步为裂缝分类。
设计了基于局部特征和全局特征的裂缝增强算法。局部增强用到模糊梯度和方向滤波算法;全局增强中,用到了最小代价路径搜索的方法。局部增强和全局增强配合使用,保证了增强的效果。
设计了基于Beamlet变换和动态规划的裂缝提取方法。Beamlet变换常被用于线目标的提取,特别是基于Beamlet变换的线段全局链算法在理论上具有最优效果。但由于其计算复杂度极高,一直没有得到有效发挥。本专利巧妙地运用动态规划的方法解决了这一难题。
设计了基于支持向量机(SVM)的裂缝分类方法。其中,特征提取中所选择的10个特征构成的特征是算法能够成功的关键。
支持向量机(SVM)
学习的目的就是根据给定的训练样本求解系统输入输出之间的依赖关系。经典的模式识别分类器如神经网络是基于经验风险最小化(ERM)原则的。它希望通过 最小化训练误差来实现最小化测试误差的目的,但实际却难以达到这个目标。与传统统计学相比,统计学习理论提出了建立在结构风险最小化(SRM)原则上的学习方法,它能有效解决在小样本情况下建立有效的学习和推广方法。SVM是统计学习理论的实践。
给定一组训练样本(xi,yi),i=1,...,l,xi∈Rd,yi∈(-1,1),其中l为训练样本数,d为输入空间维数,SVM训练的目的就是找到一个超平面:w·x+b=0,将这两类数据完全分开。与样本间隔为Δ的分类超平面可描述如下:
w·x+b=0, (8-1)
subject to:||w||=1,
w·x+b≥Δ,if yi=1,
w·x+b≤Δ,if yi=-1.
则两类的边界分隔面的距离是:
与两类样本点距离最大(称为间隔最大)的分类超平面将会获得最佳的推广能力,这种最优分类超平面将由离它最近的样本点(称为支持向量)决定,而与其它样本无关。
求解最优分类超平面可以归结为二次凸规划问题,可以通过求解下列Lagrange方程来实现:
subject to:αi≥0,i=1,...,l
现实世界中大部分的问题都不是线性可分的,解决的方法就是将输入向量映射到一个高维的特征空间,并在该特征空间中构造最优分类面(图5)。
SVM通过一个Mercer核函数k,使得
内积运算
就可以用原空间中的函数来实现,实现某一非线性变化后的线性分类,从而避免了“维数灾难”问题。此时的Lagrange方程变为:
本发明提供了一种基于动态规划的路面裂缝检测方法,其包括以下三个步骤:
(1)裂缝增强:运用模糊梯度和路径跟踪对对比度低的裂缝进行有效增强;
路面检测工程实践中,由于裂缝具有对比度低的特点,裂缝信号非常弱,因此为了准确、有效地检测裂缝,需要对裂缝信号进行增强。但是路面图像具有颗粒纹理背景特征,给裂缝增强带来巨大困难,传统的图像增强算法很难发挥作用,而本发明将线目标增强的局部方法和全局方法相结合,对裂缝进行增强。
(2)裂缝提取:运用动态规划的方法,实现对连续性差的裂缝的有效检测;
路面裂缝还具有连续性差的特点,其只是在宏观上呈现为线状目标,因为基于线检测的局部方法不能有效检测裂缝,所以本发明采用的是线检测的全局方法,在该全局方法中,裂缝检测问题被转化为全局最优化计算的问题,并通过动态规划的方法实现了该最优化问题的求解,从而实现了裂缝的全局最优提取。
(3)裂缝分类:运用支持向量机(SVM)模型,对所提取的裂缝进行分类;
通常的裂缝分类方法是独立对每一幅图像上的裂缝进行判断,判断的规则通常是固定的;但是,实际上裂缝是不规则的,用“有限的规则”去判别“无限案例”是不足的。因此,本发明涉及了机器学习的方法进行裂缝类别的判断,它具有学习型,使得历史数据和现实数据有效关联起来,通过不断增长的“知识库”来对最新的“案例”进行判别。
如图1所示,本发明所述的基于动态规划的路面裂缝检测方法的实施流程图;
(1)裂缝增强
如图2所示,裂缝增强步骤的流程图;
对图像线特征进行增强处理,采用局部处理和全局处理相结合的方法,首先从局部特征触发用方向滤波对线特征进行增强,然后从全局特征触发运用最优路径搜索的方法进行线特征的增强。
裂缝增强的步骤包括:
对原始路面影像I根据式(1)计算每一像素点的模糊梯度,得到模糊梯度矩阵GF;
式(1)中,GF(i,j)代表点(i,j)的模糊梯度,G(i,j,s)表示求尺度为s时的像素点(i,j)的梯度。
2)根据模糊梯度矩阵GF,对图像I进行方向滤波,得到基于局部处理的增强图像Ie1;
Ie1(i,j)=I(i,j)*GF(i,j) (2)
3)建立路径矩阵X(col,row)并将元素初始化为0,对图像Ie1每条边上的点(i,j),用Ford(F*)算法计算其到达对边的最小能量路径,并在路径矩阵对应的元素位置累积计数加1;
4)将路径矩阵X叠加到影像I,并进行归一化处理,得到增强图像Ie2。
Ie2(i,j)=I(i,j)+X(i,j) (3)
Ford(F*)算法是一种动态规划算法,用图论的方法来描述目标之间的关系,运用网络流(net flow)模型搜索最小能量路径。X={(i,j)|0≤i<row,0≤j<col}是图像构成的格状图中的节点集合,定义ci,j为相邻节点到达节点(i,j)的代价值,xi,j为节点(i,j)到达搜索起点的累积代价,即路径代价。则搜索格状图中两节点之间的最小代价路径的步骤为:
a)设定搜索起点(m,n),按式(4)初始化路径代价矩阵X;
b)按式(5)更新路径代价矩阵X;
其中,Nr(xi,j)是xi,j的相邻节点。这一过程重复进行,直到所有节点值保持稳定。此时,节点路径代价值即为该节点到搜索起点的最小代价;
c)反向跟踪最小路径代价节点可得到任一节点到搜索起点(m,n)的最小代价路径。
(2)裂缝提取
Beamlet变换是一种多尺度几何分析工具,通过对Beam基b进行线积分,得到T(b),由于b具有多尺度特征,故所有T组成的集合便构成Beamlet金字塔。从金字塔中提取最大的Beam能量,是Beamlet算法的关键。目前有四种不同层次的Beamlet算法:基于Beamlet变换的无结构算法、树结构算法、线段局域链算法和线段全局链算法。
连续Beamlet变换
假设f(x1,x2)为[0,1]2上的连续函数,函数f的连续Beamlet变换定义为线积分的集合,如式(6)。
其中,
任意的两个标注点v
i,v
j组成的线段,B
N,ε表示在分辨率ε下所有线段b的集合;x(l)表示Beamlet b沿线段在单位速度上的描述。对于一幅N×N的数字图像f(i
1,i
2),需要先对其进行插值得到对应的连续函数f,则有
其中,
是插值函数。得到f(x
1,x
2)后,便可按式(6)进行Beamlet变换。
离散Beamlet变换
在一个n×n的二进方块内(设n=2j,j为该二进方块的尺度),连接二进方块边界上的任意两点就构成一条离散Beamlet基。对于一幅N×N的数字图像(N=2J),尺度范围为j=0,i,...,J。在尺度j下,整幅图像内共有22(J-j)个二进方块,所有尺度、位置和方向上的离散Beamlet基所构成的集合,记为B。有了离散Beam基的概念后,离散Beamlet变换可定义为:
其中b是B中的一条离散Beamlet基,(i1,i2)是b上的一个点,g(i1,i2)是该点对应的特征值,如对应图像来说,可以是该点的像素值。
基于Beamlet变换的线段局域链算法
在Beamlet集合中,按一定的规则将一部分Beamlet标识为种子,然后在每一个预期Beamlet的邻域内,研究若干非二进的Beam,也即将每一个种子进行生长,生成多个链,然后在这些链中搜索最优,实现Beamlet链对Beam的最优逼近。
为准确定义该算法,需引入“ε共线”和“ε子区间”的概念,这里ε是Beamlet变换定义中的分辨率(见式6)。
ε共线:一个Beam集合中,如果存在一条能为该集合中所有成员提供一个ε近似的直线,例如每一条Beam都分布在公共直线的ε-Hausdorff距离内,那么这个 Beam集是ε共线的。
ε子区间:如果一条Beamlet位于一条Beam的ε-Hausdorff距离内,那么这条Beamlet基称为该Beam的一个ε子区间。
因此算法步骤为:
Beamlet金字塔的阈值化处理:对图像进行Beamlet变换,将所有满足T(b)>T1的Beamlet基存入预期区间列表P。若P中所含e子区间的个数大于m,则拒绝H0并结束。
搜索预期Beamlet的邻域:对预期区间列表P内的每一条Beamlet基b,再创建一个列表C
l(b),记录将b延伸距离l所得到的e共线链。对每一条链c∈C
l(b),计算
若Y(c)≥T
2,则拒绝H
0并结束。
Y(c)<T2,则接受H0并结束。
l取经验值3或4。H
0表示简单零假设,拒绝H
0表示逼近成功。
基于Beamlet变换的线段全局链算法
在全局范围内实现Beamlet链对Beam的最优逼近。给定一条由Beamlet组成的折线L,定义一个优化判别式如下:
其中
ξ
2(b)=l(b)。T(b)是图像在Beamlet基b上的Beamlet系数,l(b)为b的长度,λ为惩罚因子,根据经验取0.2~0.4。
很明显,式(9)是一个全局优化的问题,由于Beamlet基的数量巨大,计算复杂度高。本发明设计了基于动态规划的方法进行最优求解。首先将式(9)的极小值求解问题转化为格状图中最小代价路径搜索的问题,然后通过Dijkstra算法计算最短路径,实现最优化求解。
基于Beamlet变换和动态规划的裂缝提取算法
通过对裂缝图像处理的实验和分析,运用基于Beamlet变换的线段局域链算法 和全局链算法结合的裂缝提取算法。运用线段局域链算法进行局部最优搜索,得到候选裂缝段,然后运用线段全局链算法进行全局最优搜索,得到最大的Beam能量对应的线目标,从而实现对裂缝的提取。其技术路线图如图3。
本专利提出基于Beamlet变换和动态规划的裂缝提取算法,其步骤如下:
步骤1,设定要进行划分的尺度。对图像进行相应的划分,得到若干个固定的M×N个图像小方块,通常每个图像方块的大小为32×32像素;
步骤2,对于每个小方块数据,在其四条边线上从左上角开始,按顺时针方向进行标注,得到若干个标注点;
步骤3,每两个标注点之间构成一条Beamlet,应用Bresenham算法进行相应的插值来确定Beamlet上所有图像数据点;
步骤4,搜索每两个标注点之间的最小代价路径,并计算平均路径代价值,作为对应得Beamlet值,将路径长度作为Beamlet变换系数;
步骤5,对Beamlet值进行标准归一化处理,并进行统计分析,用类间方差最大法进行二类聚类,得到阈值,并运用GLRT(广义似然比检验)法来检测判断检验假设,确定符合假设条件下的Beamlets;
步骤6,应用Beamlet局域链算法将步骤5所得Beamlets进行逼近,用逼近后的Beamlets对原Beamlets进行更新;
步骤7,用格状图(grid graph)来存储余下的Beamlets,得到M×N个节点,节点的权值为Beamlet值与Beamlet变换系数的乘积;
步骤8,用Dijkstra算法计算每两个Beamlet节点之间的最小代价路径(最短路径),并代入式(9)计算J(L)值;
最小的J(L)值对应的Beamlets即为裂缝。
其中步骤6运用Beamlet变换的局域链算法对Beamlet基进行了近似处理,有效减少了Beamlet基的数量。步骤7将式(9)的极小值求解问题转化为格状图中最小代价路径搜索的问题,运用Dijstra算法计算最短路径,实现了最优化求解。同时,Dijkstra算法的时间复杂度为O(n2),具有较高的效率,可以满足工程实践的需求。
裂缝分类
进行裂缝提取后,需要对裂缝的类别进行判断。裂缝分为横向裂缝、纵向裂缝、龟裂和块状裂缝四种,本专利设计了基于机器学习裂缝分类方法,其技术路线如图4所示。
机器学习模型的选择
选择基于统计学习理论的支持向量机(SVM)模型,核函数为径向基函数,取σ在1×10-7和3×10-7之间。
裂缝特征提取
裂缝对应面元的面积(面元包含的像素个数)
裂缝最小外接矩形的面积(通过坐标旋转法求面元平行于坐标轴的外接矩形)
裂缝最大外接矩形的面积
线性度(最小外接矩形的长与宽的比值)
饱和度(面元面积与最大外接矩形面积的比值)
裂缝总方向(拟合为线性后的方向)
裂缝平均方向(所有面元方向的平均)
面元间最大距离
面元间平均距离
面元密度(裂缝最小外接矩形区域内面元的个数)
基于支持向量机(SVM)的裂缝分类
此算法的步骤为:
训练
构建样本集。选择横向裂缝、纵向裂缝、龟裂和块状裂缝样本各4000个(注:是进行裂缝提取后的裂缝面元图像);
生成特征向量。对每个样本,计算其10种特征值,构成样本的特征向量;
将每两类样本的特征向量输入SVM模型进行训练,得到SVM模型的参数(包括拉格朗日参数a和常量参数b);
得到训练好的6个模型。
分类
在裂缝分类中,用训练好的模型对裂缝进行分类。当新增样本达到1000个时,转步骤“训练”,重新进行训练。
在裂缝增强的技术方案中,最小代价路径搜索的算法并不局限于Ford(F*)算法一种,其他的还有如A*算法、Dijkstra算法、Folyd-Warshall算法等;
在裂缝分类中,处理支持向量机模型外,还有人工神经网络模型,贝叶斯网络模型,决策树模型等其他机器学习的模型,同样可以实现所提的机器学习裂缝分类方法。
由于目前的方法是基于局部信息处理的方法,所以不能检测对比度低、连续性差的裂缝。本发明设计的方法中,第一步对裂缝进行增强;首先运用模糊梯度和方向滤波对裂缝进行基于局部特征的增强,然后运用最小代价路径搜索法对裂缝进行全局增强。通过两个层次的增强,裂缝的对比度将显著增高。第二步,对增强后的裂缝进行提取。运用基于Beamlet变换的线段全局链模型对问题进行描述,然后巧妙运用动态规划的方法进行问题求解,实现对裂缝的全局最优提取。第三步,运用机器学习的方法来实现裂缝的分类。裂缝具有不规则性,现有的基于“有限规则”的分类方法对所有的裂缝进行分类存在不足,分类不准确。本发明设计的基于支持向量机的裂缝分类方法,能在分类实践中进行学习,不断充实分类的样本库,使分类准确性得到提高。
以上说明对本发明而言只是说明性的,而非限制性的,本领域普通技术人员理解,在不脱离所附权利要求所限定的精神和范围的情况下,可做出许多修改、变化或等效,但都将落入本发明的保护范围内。