目 录
本次建模目标是在缺陷类型的道路图像进行增强去噪等预处理、图像特征值的选择与提取的基础上,利用提取得到的真实数据,采用数据挖掘技术,分析各类道路图像特征值与缺陷类型之间的相互关系,训练自动分类算法,根据分类器的分类结果判断待识 别样本属于何种类别的缺陷,从而实现不同道路缺陷类型的自动识别。
本用例主要包括如下步骤:
通过对路面图像的分析原始图像的特征,选择合适的预处理手段,先对图像进行剪切,取出无用部分,再增强图像目标与背景的对比度,使目标边缘平滑,检测目标边缘,最后通过形态学运算(腐蚀、膨胀、开运算、闭运算)减少二值图像的噪声点,为进一步提取图像特征做准备。
根据路面图像预处理后得到的缺陷特征,选择合适的算法,提取出图像的 4 特征值,作为路面缺陷类型自动识别的基础,分别为(1)基于投影的特征提取(2)基于 proximity算法的特征提取(3)基于破损密度因子的路面破损特征提取(4)基于分型的特征提取。
根据步骤二四类方法对路面图像提取的七个特征,对这七个特征对路面裂缝的分类识别进行可行性分析,然后基于这七类特征应用支持向量机算法对路面裂缝分类识别,其后对这七类特征的分类结果进行分析比较,最后结合七个特征再次应用向量机算法对路面裂缝分类识别并预测。
在对公路路面图像数据的采集过程中,由于摄像设备的因素以及路面信息本身的多样性,使得采集到的路面图像具有不同的特征,这些特征又影响甚至决定了路面图像在预处理、特征提取过程中算法的选取以及特征值与图像本身特点的关联性,从而影响最终图像自动识别的精确度。从样本图像的分析得出以下特点:
(1)由于路面材料的不均匀性,即使正常路面,纹理也不均匀,因此,所采集的图像背景本身有较大地变化。
(2)裂缝图像也有同样的情况,由于严重程度不同,其大小面积也不同,如果裂缝中有与背景颜色相近甚至更亮的比较大的颗粒,也会导致裂缝图像颜色的变化,但总的来说,裂缝图像比正常路面的暗。
(3)代表裂缝的像素数量远远小于代表背景的像素数量,但轻微缺陷路面与正常路面之间的差异某些情况下难以识别。
(4)正常路面的灰度值与裂缝的灰度值有部分重叠。
(5)由于自然和人为因素的影响,复杂的背景噪声一般都叠加在有用的路面数据之中,所以必须进行滤波来减少噪声,增强裂缝边缘。
上面路面图像的特征分析可知,图像特征的多样性和复杂性对图像的分析和处理造成了困难。因此,了便于后面对图像进行特征提取,提高识别的准确度,必须对路面裂缝图像进行前期处理。一般情况下,成像系统获取的图像(即原始图像)由于受到种种条件限制和随机干扰,往往不能在视觉系统中直接使用。
图像分析中,对输入图像进行特征抽取、分割和匹配前所进行的处理称为数字图像的预处理。图像预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而改进特征抽取、图像分割的可靠性。
在对路面图像进行预处理中,本文先把彩色图像转换为灰度图,接着采用了 3 种空 间域图像增强算法,分别为直方图均化、分段线性变换以及平滑滤波,在对比处理效果基础上采用了以 Sobel 为边缘检测算子的边缘检测算法。
由于路面样本图像中包含了取样时的人的鞋子和阴影,因此需要通过图像切割的方法,图像中取出有代表意义的一小块路面图像作为真实的路面样本。图像剪切使用MATLAB 图像处理工具箱的 imcrop 函数。
观察所采集的样本图片发现,虽然路面多为灰色,但由于自然和人为因素的影响,使得有其他颜色的噪音,影响图片的进一步处理,为了要比较准确地表达图像的真实视觉效果,通过 MATLAB 中的图像处理工具箱中的 rbg2gray 函数将彩色图像二值化,转换 成黑白双色的图像。
直方图是图像灰度密度函数的近似,它是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有用数据的对比度相当接近的时候。
由缺陷路面特点分析所得的特点四:正常路面的灰度值与裂缝的灰度值有部分重叠,并且由 MATLAB 图像处理工具箱的 histeq 函数做出图像的直方图。对直方图中灰度的分布进行分析,若集中在小区域内,则对像素多的灰度级进行展宽,对像素个数少的灰度级进行缩减。
直方图均衡法和灰度变换法都是对比度增强算法,通过直方图均衡化后发现,路面图像的对比度仍然难以满足进一步处理的需求。 分段灰度线性变换的基本思想是将图像灰度值的区间分成两段或多段,分别作灰度变换,分段灰度变换法的好处是可以根据用户的需要,突出目标的灰度,相对抑制背景的灰度级。分段变换的分界点通过键盘交互式输入的方法来确定。
原始灰度记为 f(x,y),变换后的灰度记为 g(x,y), M f M_f Mf为原图像最大的灰度值,分段线性灰度变换的数学表达式如下所示:
G ( x , y ) = { Y a X a f ( x , y ) , 0 ≤ f ( x , y ) ≤ X a Y b − Y b X b − X a [ f ( x , y ) − X a ] = Y a , 0 ≤ f ( x , y ) ≤ X a M g − Y b M f − X a [ f ( x , y ) − X b ] = Y a , 0 ≤ f ( x , y ) ≤ X a (1) G(x,y)= \begin{cases} \frac{Y_a}{X_a} f(x,y), 0 \leq f(x,y) \leq X_a\\ \frac{Y_b- Y_b}{X_b-X_a}[f(x,y)-X_a]=Y_a, 0 \leq f(x,y) \leq X_a\\ \frac{M_g- Y_b}{M_f-X_a}[f(x,y)-X_b]=Y_a, 0 \leq f(x,y) \leq X_a\\ \end{cases} \tag{1} G(x,y)=⎩⎪⎨⎪⎧XaYaf(x,y),0≤f(x,y)≤XaXb−XaYb−Yb[f(x,y)−Xa]=Ya,0≤f(x,y)≤XaMf−XaMg−Yb[f(x,y)−Xb]=Ya,0≤f(x,y)≤Xa(1)
均值滤波是一种在空间域平滑图像和是典型的线性滤波算法,易实现而且效果较好。均值滤波的原理是把图像中一个像素与其周围邻近几个像素的灰度值相加后将得到的平均值作为新图像中该像素的灰度值。它适合去除图像中的颗粒噪声。
加权邻域均值滤波,相同尺寸的模板可针对不同的位置系数用不同的数值加权。通常认为离模板中心位置近的像素对滤波结果的影响较大。因此离模板中心近的像素的系数应较大,相应的离模板中心位置越远的模板边界附近的系数应越小。
中值滤波是抑制噪声的非线性处理方法。对于给定的 n 个数值{a1,a2,…,an},将他们按大小有序排列。组中值记为 med{{a1,a2,…,an },图像中滤波后某像素的输出等于该像素中各像素灰度的中值。
均值滤波和加权邻域均值滤波都可以用MATLAB图像处理工具箱的filter函数实现, 只是要选择不同的模板,在均值滤波中,选用所有元素都相同的模板,而在加权邻域均值滤波中,因此离模板中心近的像素的系数应较大,相应的离模板中心位置越远的模板边界附近的系数应越小。中值滤波可用MATLAB中的medfilt2函数实现。
经过对大量路面缺陷图像进行滤波实验,寻找具有最好去噪和图像的平滑效果的方法。
边缘(edge)是图像中的区域。在这些区域中,图像的亮度发生了剧烈的变化。在路面裂缝目标的特征提取和模式识别之前,要把路面缺陷的特征从整幅图像的背景中提取出来,而路面缺陷的主要特征就表现为裂缝的边缘,因此我们需要先对图像进行比较精确的边缘检测,才能正确的实现路面裂缝区域的分割。
对路面裂缝来说,检测与分类的效果与精度在很大程度上受边缘检测算法的好坏的影响。运用梯度边缘检测算子,并从中选择一种对裂缝图像做边缘检测,分别为:Roberts算子、Canny 算子和 Sobel 算子。
本文对经过均值滤波后得到的灰度图像进行边缘检测,以此确定裂缝的大致走向。
经过的灰度图像的边缘检测后,得到只有黑白两种颜色的二值图像,但除裂缝目标外检测结果中还存在许多噪声点,这主要是受光照的变化及路面其他轻微破损物体、油迹的影响。消除这些噪声后,缺陷目标的特征提取和模式识别的精度。
数学形态学是常见的去除孤立噪声和小区域噪声的方法。
数学形态学中有两个基本运算,膨胀(dialation)和腐蚀(erosion)
膨胀的运算定义为:
A ⨁ B = { a + b ∣ a ∈ A , b ∈ B } A \bigoplus B = \{ a+b|a \in A, b \in B \} A⨁B={a+b∣a∈A,b∈B}
腐蚀运算的定义式为
A ⨀ B = { z ∈ Ω ∣ B z ⊆ A } A \bigodot B = \{ z \in \Omega|B^z \subseteq A \} A⨀B={z∈Ω∣Bz⊆A}
膨胀运算可解释为将与目标接触的所有背景点合并到该物体中,使边界向外部扩张的过程。腐蚀运算可解释为消除边界点,使边界向内部收缩的过程。
开运算(opening)和闭运算(closing)是由腐烛和膨胀组合得到的,先腐烛后膨胀的运算称为幵运算,它能消除图像中孤立的小区域和毛刺,而且还有平滑物体边界的作用。先膨胀后腐烛的运算称为闭运算,它具有填充物体内部的细小孔洞,连接临近物体和平滑边界的作用。
路面图像经过直方图均化、分段线性变换以及平滑滤波及边缘检测等预处理之后,得到了具有一定宽度的路面裂缝的二值图像。为了最终根据一定的特征将路面缺陷进行分类识别。因此,在对缺陷类型进行分类识别之前要提取经过预处理的路面图像的特征。
常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征或分为以下几类。
1、灰度:包括多光谱、彩色信息。
2、边缘:它描述了灰度变化的程度和位置。
3、纹理特征:它描述了在图像中反复出现的局部模式和它们的排列规则,反映宏观意义上灰度变化的一些规律。
4、形状特征:它描述了物体、区域或基元的外形,从微观上精细地反映景物及其组成部分的形状。
5、物体表面主方向,即三维物体表面的法向。
6、传感器与物体表面各点的距离。
7、物体运动信息。
根据道路图像预处理后的二值图像的特点,选取了用 4 种方法提取的路面特征值。
假设有一幅路面裂缝的二值图像 B,用 I(I,j)表示,图像 B 的大小为 MxN 若背景像素点
I(I,j)的值是 0,目标像素点值是 1。分别把该裂缝的二值图像 B 向 X 轴与 Y 轴投影,这样
就会得到两条投影曲线。
根据以上假设和分析,路面裂缝二值图像 I(i,j),向 X 轴的投影统计曲线 X(I)和 向 Y 轴上的投影统计曲线 Y(I)的计算式分别为:
X ( i ) = ∑ i = 1 N I ( i , j ) , i = 1 , 2 , . . . , M X(i)=\sum_{i=1}^{N}I(i,j), i=1,2,...,M X(i)=i=1∑NI(i,j),i=1,2,...,M
Y ( i ) = ∑ i = 1 M I ( i , j ) , i = 1 , 2 , . . . , N Y(i)=\sum_{i=1}^{M}I(i,j), i=1,2,...,N Y(i)=i=1∑MI(i,j),i=1,2,...,N
Proximity 算法同样也是以图像的投影统计图为基础,其计算的步骤主要为:对路面裂缝的二值图像 I(x,y),分别向 X 轴与 Y 轴作投影,得到向 X 轴的投影序列为 X ( i ) = { x 1 , x 2 , . . . , x m } X(i)= \{x_1,x_2,...,x_m \} X(i)={x1,x2,...,xm},向 Y 轴的投影序列 Y ( i ) = { y 1 , y 2 , . . . , y m } Y(i)= \{y_1,y_2,...,y_m \} Y(i)={y1,y2,...,ym},然后通过下式计算:
s u m x = ∑ i = 1 M − 1 ∣ X i + 1 − X i ∣ sum_x=\sum_{i=1}^{M-1}|X_{i+1}-X_i| sumx=i=1∑M−1∣Xi+1−Xi∣
s u m x = ∑ j = 1 N − 1 ∣ Y j + 1 − Y j ∣ sum_x=\sum_{j=1}^{N-1}|Y_{j+1}-Y_j| sumx=j=1∑N−1∣Yj+1−Yj∣
S 0 = ∑ j = 1 N S_0=\sum_{j=1}^{N} S0=j=1∑N
Proximity 算法是把 sum_x,sum_y 和 作为路面裂缝目标图像的特征值,对路面裂缝图像进行分类识别。
通过研究分析几类路面裂缝图像的特征,为了可以更好地反映各类裂缝的特征,本文给出了破的定义: 路面破损密度因子是一种可以用来描述路面图像破损程度的卷积模版,破损密度因子的基本形式即为如下所示的 1x3,3x3 和 5x5 的破损密度因子。
S 1 = { 1 × 3 密 度 因 子 于 二 值 化 的 子 块 图 像 的 卷 积 和 } S1=\{1 \times 3 \ 密度因子于二值化的子块图像的卷积和\} S1={1×3 密度因子于二值化的子块图像的卷积和}
S 3 = { 3 × 3 密 度 因 子 于 二 值 化 的 子 块 图 像 的 卷 积 和 } S3=\{3 \times 3 \ 密度因子于二值化的子块图像的卷积和\} S3={3×3 密度因子于二值化的子块图像的卷积和}
S 5 = { 5 × 3 密 度 因 子 于 二 值 化 的 子 块 图 像 的 卷 积 和 } S5=\{5 \times 3 \ 密度因子于二值化的子块图像的卷积和\} S5={5×3 密度因子于二值化的子块图像的卷积和}
假设原始子块图像二值矩阵的数值总和为 S 0 S_0 S0 ,计算下面的特征值:
1 = ( S 1 − S 0 ) / S 0 _1=(S_1-S_0)/S_0 1=(S1−S0)/S0
3 = ( S 3 − S 0 ) / S 0 _3=(S_3-S_0)/S_0 3=(S3−S0)/S0
5 = ( S 5 − S 0 ) / S 0 _5=(S_5-S_0)/S_0 5=(S5−S0)/S0
我们把$ F_1, F_2,F_3$ 这三个值作为路面裂缝目标图像的特征值,用于对路面裂缝进行分
类识别。
本文用简单的盒计数法计算分形的维数。以尺寸为 ϵ \epsilon ϵ的网格覆盖整个图像,计数网格中有图形象素(不管有许多象素还是很少象素)的格数目 N ( ϵ ) N (\epsilon) N(ϵ),不断减小网格尺寸:继续计数含图形象素的网格数,直至最小的网尺寸达到象素为止。最后将一系列 N ( ϵ ) N (\epsilon) N(ϵ) , ϵ \epsilon ϵ数据作 ln N( ϵ \epsilon ϵ)~ln(1/ ϵ \epsilon ϵ)图,求出分形维数(盒子维数)。进而求得不同盒子所包含的像素点数来反映裂缝形状的复杂程度。
(1)分类识别算法的选取:
传统的基于统计的模式识别对数据的要求比较高,它们研究的是样本数目趋于无穷 大的渐进理论,也只有在这种情况下其分类识别的性能才有所保证。但是,在公路路面裂缝的分类识别中,样本的数量是有限的,所以运用传统的基于统计的方法对路面裂缝的分类识别效果并不理想。在 90 年代中期,Vapnik 等人提出的支持向量机[6](Support Vector Machine, SVM)是以统计学理论为基础的机器学习方法,以结构风险最小化为基本原则(Structural Risk Minimization ,SRM),专门针对有限样本情况,得到现有信息下的最优解而不仅仅是样本数趋于无穷大时的最优解,从而解决了在神经网络方法中无法避免的局部极值问题。因此它可以有效地应用在小样本、非线性等分类识别问题上,即 适用于本文对路面缺陷的分类识别。
(2)支持向量机基本思想:
支持向量机(SVM)算法是通过事先选择的某种非线性映射函数(即核函数),把输入响亮映射到某个高维的特征空间,并且在这个高维特征空间中寻找最有分类超平面,它可以将两类数据点尽可能准确地分开,且使两类数据点距离分类面最远。支持向 量机算法的目的就是寻找这个最优超平面,其能够将训练样本中的数据分开,且使两类数据之间的间隔最大。
定义和标识训练样本为: [ X i , Y i ] , i = 1 , … l [X_i, Y_i], i=1,…l [Xi,Yi],i=1,…l,输入向量 X i = ( X i ( 1 ) , . . . , X i ( n ) ) ∈ R n X_i=(X_i^{(1)},...,X_i^{(n)}) \in R^n Xi=(Xi(1),...,Xi(n))∈Rn,种类值 Y i ∈ { − 1 , + 1 } , i = 1 , . . . , l Y_i \in \{ -1,+1\}, i=1,...,l Yi∈{−1,+1},i=1,...,l。
根据 Vapnik 的原始公式,支持向量机(SVM)分类机满足下列条件:
{ W T ϕ ( X i ) + b ≥ + 1 , 如 果 Y i + 1 W T ϕ ( X j ) + b ≤ − 1 , 如 果 Y i − 1 (1) \begin{cases} W^T \phi (X_i) +b \geq+1,如果Y_i+1\\ W^T \phi (X_j) +b \leq-1,如果Y_i-1\\ \end{cases} \tag{1} {WTϕ(Xi)+b≥+1,如果Yi+1WTϕ(Xj)+b≤−1,如果Yi−1(1)
这等同于
Y I [ W T ϕ ( X i ) + b ] ≥ 1 , . . , l (2) Y_I[W^T \phi (X_i) +b] \geq1,..,l \tag{2} YI[WTϕ(Xi)+b]≥1,..,l(2)
其中,w 代表权重向量,b 是纵截距。非线性函数 ϕ ( ∗ ) 1 R n → R n k \phi(*)_1 R^n \rightarrow R^n k ϕ(∗)1Rn→Rnk将输入或测量空
间映射进一个高维的、可能是无穷维的特征空间中。公式(2)可以归结为特征空间的一个分离超平面 ( W T ϕ ( X i ) + b = 0 ) (W^T \phi (X_i) +b=0) (WTϕ(Xi)+b=0)的两边构造两个平行的边界超平面,并使得两个 超平面之间的距离(带宽)等于 ( 2 / ∣ ∣ W ∣ ∣ 2 ) (2/||W||^2) (2/∣∣W∣∣2)。接着,在原来的权重空间,分类机采用形如 公式(3)的决策函数:
Y = s g n ( W T ϕ ( X i ) + b ) (3) Y=sgn(W^T \phi (X_i) +b) \tag{3} Y=sgn(WTϕ(Xi)+b)(3)
然后,大多数分类问题是不可线性分离的,使用允许错分类的松弛变量 ξ i \xi_i ξi以发现权重向量。可以定义原优化问题为:
M i n ∈ ( W , b , ξ ) ( 1 2 W T W + C ∑ i = 1 N ξ i ) (4) Min \in (W,b, \xi)(\frac{1}{2}W^TW+C \sum_{i=1}^{N} \xi_i) \tag{4} Min∈(W,b,ξ)(21WTW+Ci=1∑Nξi)(4)
受约束于:
{ Y i ( W T ϕ ( X i ) + b ≥ 1 − ξ i , i = 1 , . . . , N ) ξ i ≥ 0 , 1 , . . . , N (5) \begin{cases} Y_i(W^T \phi (X_i) +b \geq 1- \xi_i,i=1,...,N)\\ \xi_i \geq0,1,...,N \end{cases} \tag{5} {Yi(WTϕ(Xi)+b≥1−ξi,i=1,...,N)ξi≥0,1,...,N(5)
其中, ξ \xi ξ是允许错分类的松弛变量, C ∈ R + C \in R^+ C∈R+是一个权衡带宽与分类误差重要性的调 和超参数,代表这模型的推广能能力。在构建拉格朗日公式后,可获得原最优化问题的解。原问题的拉格朗日函数式为:
L p = 1 2 W T W + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ∣ y i ( W T W ϕ ( X i ) + b ) − 1 + ξ i ∣ − ∑ i = 1 N μ i ξ i (6) L_p=\frac{1}{2}W^TW+C \sum_{i=1}^{N} \xi_i-\sum_{i=1}^{N} \alpha_i|y_i(W^TW \phi(X_i)+b)-1+\xi_i|-\sum_{i=1}^{N}\mu_i \xi_i \tag{6} Lp=21WTW+Ci=1∑Nξi−i=1∑Nαi∣yi(WTWϕ(Xi)+b)−1+ξi∣−i=1∑Nμiξi(6)
其中, α i ≥ 0 \alpha_i \geq0 αi≥0和 μ i ≥ 0 \mu_i \geq0 μi≥0是拉格朗日乘子。
其中, 是拉格朗日乘子。根据最优化的条件,可以获得含有拉格朗日乘子 α i \alpha_i αi的二次规划问题(QP)。对于每 一训练样本均存在乘子 α i \alpha_i αi。对应于非零 α i \alpha_i αi的训练样本称为支持向量。
另一方面,上述原问题可以转化为下列具有目标函数(7)和(8)约束的对偶问题。由于此问题的决策变量是拉格朗日乘子的支持向量,因此,解释这一对偶问题的解比解 释原问题的解容易。
M a x α 1 2 α T Q α − e T α (7) Max_\alpha \frac{1}{2} \alpha^T Q \alpha -e^T\alpha \tag{7} Maxα21αTQα−eTα(7)
受约束于:
{ 0 ≤ α i ≤ C , i = 1 , . . . , N y T α = 0 (8) \begin{cases} 0 \leq \alpha_i \leq C, i=1,...,N\\ y^T \alpha =0 \end{cases} \tag{8} {0≤αi≤C,i=1,...,NyTα=0(8)
在上述对偶问题中,Q 是一个 N*N 半正定矩阵,e 为所有元素均为 1 的向量, Q i j = y i y j K ( x i , x j ) Q_ij=y_iy_jK(x_i,x_j) Qij=yiyjK(xi,xj),并且 K ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) K(x_i,x_j)= \phi(x_i)^T\phi(x_j) K(xi,xj)=ϕ(xi)Tϕ(xj)是核函数。这里,训练向量被函数 ϕ \phi ϕ映射进一个更高维的 Hilbert 特征空间中 ϕ ( ∗ ) : R n → H \phi(*):R^n \rightarrow H ϕ(∗):Rn→H。根据 SVM 的特点,不必计算 w 和转换函数 ϕ ( ∗ ) \phi(*) ϕ(∗), 这是根据 Mercer 条件可将函数 ϕ ( x ) \phi(x) ϕ(x)映射为如下的核函数:
K ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) (9) K(x_i,x_j)= \phi(x_i)^T\phi(x_j) \tag{9} K(xi,xj)=ϕ(xi)Tϕ(xj)(9)
对于核函数,可以有几个选择方案如:
接着,可以构建 SVM 分类决策函数如同式(10),并利用这以分类原则对一个由向量 x 描述的路面进行分类:
Y = s g n ( ∑ i N α i y i K ( x i , x j ) + b ) (10) Y=sgn(\sum_{i}^{N} \alpha_i y_i K(x_i,x_j)+b) \tag{10} Y=sgn(i∑NαiyiK(xi,xj)+b)(10)
其中,Y 是分类结果, y i y_i yi 是训练样本 x i x_i xi 的种类数,向量 x i = ( x i ( 1 ) , . . . , x i ( n ) ) x_i=(x_i^{(1)},...,x_i^{(n)}) xi=(xi(1),...,xi(n))对应于一个输 入,并且向量 x i , i = 1 , . . . , N x_i,i=1,...,N xi,i=1,...,N是支持向量,b和 α j \alpha_j αj是却确定超平面的参数。
(3)基于支持向量机对分类器的构造:
本文将路面分为正常、裂缝、龟裂、网裂、剥落、坑槽和修补这七类,我们采用 1v1SVM算法由于支持向量机的基本类型是二分类的支持向量机,于是我们可以对这七类中任意两种类型构造一个二分类支持向量机,这样,一共需要构建 7*(7-1)/2=21 个二分类支持向量机,在训练第 i 类和第 j 类对应的分类器时,在样本集中选取属于类别 i 和类别 j 的数据作为训练样本,并将属于第 i 类的样本标记为正类,将属于第 j 类的样本 标记为负类。对应的优化问题如下:
m i n w i j , b i j , δ i j 1 2 ∣ ∣ W i j ∣ ∣ 2 + C i j ∑ t = 1 l ξ i j min_{w^{ij},b^{ij},\delta^{ij}} \frac{1}{2}||W^{ij}||^2+C^{ij} \sum_{t=1}^{l} \xi^{ij} minwij,bij,δij21∣∣Wij∣∣2+Cijt=1∑lξij
W i j ϕ ( x i ) + b i j ≥ 1 − ξ t i j 如 果 y t = i , W^{ij} \phi(x_i)+b^{ij} \geq1-\xi_t^{ij} 如果y_t=i, Wijϕ(xi)+bij≥1−ξtij如果yt=i,
W i j ϕ ( x i ) + b i j ≤ − 1 + ξ t i j 如 果 y t = j , W^{ij} \phi(x_i)+b^{ij} \leq-1+\xi_t^{ij} 如果y_t=j, Wijϕ(xi)+bij≤−1+ξtij如果yt=j,
ξ i j ≥ 0 \xi_{ij} \geq 0 ξij≥0.
求解这 21 个优化问题可以得到 21 个决策函数:
f i j ( x ) = s g n ( W i j ϕ ( x ) = b i j ) , i , j = 1 , . . . , 21 且 i ≠ j f_{ij}(x)=sgn(W^{ij} \phi(x)=b^{ij}),i,j=1,...,21且i \neq j fij(x)=sgn(Wijϕ(x)=bij),i,j=1,...,21且i=j
用 1v1 SVM 算法对待分类样本进行分类时,每一个分类器 f i j f_{ij} fij都要对其进行判断, 并为相应的类别“投一票”,最后得票最多的类别即为待分类样本的类别。
(4)支持向量机核函数的选取
由于本文研究的问题为分类识别,根据前人大量实验研究,得到了核函数的较好的使用范围,在此先验基础上,我们知道选取 RBF 作为核函数能够满足我们的分类要求,而且由下面结果分析可以知道选取这个作为核函数是合适的。
本文的使用 MALAB2011r 对路面图像进行预处理和特征提取,具体代码详见附件 “图像预处理和特征提取代码.txt”和“Pre_Processing_Feature_Extraction.m”
下面以图像样本中的“严重龟裂”之一进行预处理示范。其他图像的处理过程相似,处理结果显示在附件的文件夹中。
(1)图像切割及灰度图转换灰度图转换(Gray Scale Image Transformation)
图 1 为“严重龟裂“的原始图像,可以看到路面样本图像中包含了路面修补的痕迹,剪切后的图像的突出了主要信息,转换为灰度图后,图像的颜色按照不同的灰度级分布,有利于进一步处理。
(2)直方图均化(Histogram Equalization)
用 matlab 的 imhist 函数做出灰度图转换后的图像的灰度直方图如下:
原始的路面裂缝图像的灰度分布集中在较窄的区间,致使图像的裂缝细节不够清晰, 路面图像背景的灰度值与路面裂缝的灰度值有部分的重叠,在步骤一的图像特点分析中就得知,总的来说,裂缝图像比正常路面的暗,所以可以通过直方图均化增强背景与目标之间的对比度。
经过直方图均衡化后,路面图像的灰度值在较大的动态范围内趋于均化,各灰度等级的比例更加平衡,图像的对比度比原图像增大,路面裂缝目标的清晰度增大,进而达到了图像增强的目的。
(3)分段灰度线性变换 分段灰度线性变换(Piecewise Linear Transformation)
由于直方图均衡没有考虑图像的内容,简单地将图像进行直方图均衡,使得图像看起来亮度过高,不够灵活,故采用分段灰度线性变换的方法进一步增强图像的对比度。
通过 matlab 编写程序,对已经经过灰度图转换和直方图均匀化的路面图像进行分段灰度线性变换,并显示出分段线性变换的示意图,在本次建模中,对所有图片都分三段进行灰度变换。
从图7可以看出,与经直方图均衡化后的图5相比,分段线性变换使图像的裂缝变得更加清晰,图像的对比度增大,相对地提高了图像的质量利于提取图像的信息,裂缝目标更加突出,从而更容易提取裂缝目标的特征。
(4)平滑滤波(Mean Filtering)
经过对大量的路面缺陷图像进行滤波实验发现,加权邻域均值滤波的效果相对于均值滤波和中值滤波的效果主要有两个优点:一是加权邻域均值滤波去噪效果明显,对图像的平滑效果更好;二是加权邻域均值滤波对图像的边缘模糊影响较小。因此,本文采用加权邻域均值滤波进行裂缝图像的平滑。
(5)边缘检测(Edge Detect)
对路面裂缝来说,检测与分类的效果与精度在很大程度上受边缘检测算法的好坏的影响。运用梯度边缘检测算子,并从中选择一种对裂缝图像做边缘检测,分别为:Canny算子 Sobel 算子和 Roberts 算子。
通过图 9、图 10 和图 11 对比分析可知:Roberts 算子边缘定位精度较髙,但抑制噪声能力较弱,图像中有很多的噪声点; Canny 算法对灰度的变化十分敏感,虽然可以几乎 完整地检测出路面裂缝目标的边缘,但是同时也产生了裂缝目标边缘的误检测,这样不但 不能消除噪声的影响而且还可能使效果更差。Sobel 算子边缘检测是采用的灰度加权平均法,在水平方向和垂直方向上形成了最强烈的边缘具有较强的方向性。Sobel 算子边缘检测,对灰度值的渐变和噪声都处理的比较好,结合路面裂缝目标的实际处理情况,本文选用 Sobel 算子进行边缘检测。
(6) 二值图像噪声点的去除。
开运算(opening)和闭运算(closing)是由腐烛和膨胀组合得到的,先腐烛后膨胀的运算称为幵运算,它能消除图像中孤立的小区域和毛刺,而且还有平滑物体边界的作用。先膨胀后腐烛的运算称为闭运算,它具有填充物体内部的细小孔洞,连接临近物体和平滑边界的作用。
由图14的效果图可以看到,噪声被滤除了一些,且同时保持了裂缝的尺寸几乎不发生变化,这样就完成了路面裂缝区域的分割。
对其中严重龟裂二值图像作投影图,统计其在水平和垂直投影的像素点。统计图像如图 15 所示。
经过实验,我们看出,不同缺陷类型,由于其有不同的几何形状特征,其在 X 轴与 Y 轴的投影特征是不同的,因此我们可以将裂缝的投影特征作为对裂缝进行分类识别的依据。
由路面特征值分类表可看出:
(1) 对于同一幅裂缝图像,I_X_MAX 和 I_Y_MAX 的差别比较大,而对于其他类型的图像,两者之间比较接近,但不同种类之间数值大小存在差异性, 这个结论符合特征提取的原则,且与理论分析的结果是一致的,基本所有的裂缝都符合这个特性,由此说明基于投影的特征提取所得的 I_X_MAX和 I_Y_MAX 投影特征对路面裂缝进行分类识别是可行的。
(2) 对于基于 proximity 算法提取的特征值 P1 和 P2,正常路面,龟裂,网裂之间的数值有明显的差异性,而相同种类内部有相似性,然而,对于裂缝和网裂,此特征值差异并不是很理想,但结合其他特征值,P1 和 P2 这类特征向量对路面裂缝图像进行分类识别也是有可能的,但不一定能得到比较理想的效果。
(3) 基于破损密度因子的路面破损特征提取, 相同的缺陷类别,其相应的特征参 数具有相似性,各个值之间的差异很小,不同的缺陷类别,其对应的特征值之间的差异比较明显,基于以上分析,利用这类特征对裂缝图像进行分类识别是可行的。
(4) 本文用简单的盒计数法计算分形的维数。将一系列 N ( ) , 数据作 ln N( )~ln(1/ )图(图 16),求出分形维数(盒子维数)。以其斜率作为二值图像的特征值之一。
本文采用台湾林智仁博士等开发的 LIBSVM 软件包对路面图像的特征向量进行分类。
(1)样本数据转化为 LIBSVM 格式:
LIBSVM 使用的训练数据和测试数据文件的格式为: 〈label〉〈index 1〉:〈value 1〉: … 本文所使用的数据中,包含的类别数是 7,因此使用需要构造 6 个两类分类器,将得到的 30 幅路面图像的特征向量按 LIBSVM 软件包要求的数据格式进行标注,即对 7 类样本分别使用数字 1,2,3,4,5,6,7 进行标记,则系统输出的数字与训练样本类别的数字相对应,这样就可以根据分类器的分类结果判断待识别样本属于何种类别的路面。经处理后 LIBSVM 数据格式见附件”样本 LIBSVM 格式.xls”。 (2)数据的归一化处理: 在训练之前先将所有的数据进行归一化,第一可以避免一些特征值范围过大而另一些特征值范围过小,从而大数淹没小数;第二可以避免在训练时为了计算内积引起的数值计算的困难。 本文运用 LIBSVM 软件包中的 svm-scale.exe 对已转化 LIBSVM 格式的样本数据进行归一化,得到的数据具体在附件”样品 scale.txt”。 (3)参数选优 对于每一个核函数来说,对应不同的参数,会得到不同的训练模型,对样本的检验和预测自然会得到不同预测结果。而且由实验可知有时参数选择对预测结果的影响会比显著,因此,我们需要对参数进行优化选择。 对于参数的选择一般由两种方法:一是利用专家的先验知识预先选定不同的参数,这样在一般情况下是使用给出的默认参数。但对于不同的分类情况,默认参数不一定适 合,所以有第二种参数选择方法:分别使用不同的参数,归纳实验得到分类准确率最高的参数,但这种方法要付出一定的内存和时间的代价。 本文使用的是第二种方法,而 LIBSVM 软件包的工具 grid.py 可以对参数进行优化选择,利用经过归一化的数据,可以得到如下图像: 由图像可以知道,当选择核函数中的参数 为 0.5 时,惩罚系数 c 为 8 时可以提高分类的正确率,在下面的训练和预测将可以得到体现。(注: 的默认值为 1/k,其中 k 为特征数;c 默认值为 1)。 (4)模型训练: 由于选取的图像的样本数只有 30 幅,但却有 7 种类型这么多,有的类型甚至只有一 幅图像,若是还将其分开为训练数据和预测数据,并不能很好使训练模型的准确性得到保证。于是,我们将样本数据作交叉检验,这样,便能够使样本数据得到充分利用,而且能使训练模型得到更广泛的推广。 本文中利用 LIBSVM 软件包中的 svm-train.exe 对已归一化处理的样本进行训练,而 且选择由(3)得到的参数 =0.5,与 c=10,并选取 5 折交叉检验模式进行训练。得到如下结果( 具体见附件“样品 train_grid”): 说明: 得到训练模型后,重要的还是对模型的进行验证,以求得到更好的训练模型。下面我们将继续用样本数据对模型进行检验,为了比较不同的参数选择对训练模型的影响,我们将分别用由默认提供的参数和经我们优选后的参数得到训练模型进行检验。 利用 LIBSVM 软件包的 svm-predict.exe 得到如下预测结果: 转化为混淆矩阵比较得: 简单分析: 选择默认参数时,出错率非常高,几乎把每一类都预测为第 1 类,正确率仅为 40%, 这个训练模型并不理想。 当选择优选参数时,能得到非常好的预测,在这个小样本中,几乎能完美的预测,虽然在大样本中,预测可能不那么完美,却依然可以满足我们的要求。 经过上述过程,我们可以得到道路缺陷自动识别的一个基本模型。它会对自动采集的路面图形,通过图像预处理,提取其特征值,再利用已有的训练模型进行预测验证。最后我们还可以同过预测的评价结果反馈给模型,再进行训练,能使模型得到不断的完善。 本次建模目标是在缺陷类型的道路图像进行增强去噪等预处理、图像特征值的选择与提取的基础上,利用提取得到的真实数据,采用数据挖掘技术,分析各类道路图像特征值与缺陷类型之间的相互关系,训练自动分类算法,根据分类器的分类结果判断待识 别样本属于何种类别的缺陷,从而实现不同道路缺陷类型的自动识别。 (1)采集的裂缝图像存在大量的噪声,后续工作的进行是十分不利的。对路面裂缝进行图像预处理操作,进行定性和定量的比较分析,大部分图像预处理后都达到了去噪的目的。但对于轻微裂缝和轻微龟裂的预处理效果还有待提高,这是本次研究的不足之处。 (2)道路图像的四种特征值从不同的方面反映了路面二值图像的特征,不同的特值各有优势,但共同的一点是相对于同的缺陷类别,其相应的特征参数具有相似性,各个值之间的差异很小,不同的缺陷类别,其对应的特征值之间的差异比较明显。因此,四种算法所得到的值都可以作为图像的特征。 (3)通过对支持向量机理论和目标识别技术的深入研究,设计了 SVM 分类器,通过对训练模型的改善,在只有小样本数据的情况下,都取得了较好的分类效果,有效地实现了道路图像的分类,且解决了传统模式识别方法容易出现的过学习和欠学习问题,成为当前模式识别领域的首选分类器。 [1]张小波 数据挖掘应用 20 个案例分析[M] 广州 太普信息技术有限公司 2012 145-152 [2]孙即祥 图像分析[M] 北京:科学出版社,2005 1-2 [3]李倩 基于图像处理的路面裂缝识别研究[D] 沈阳 东北大学 2011 [4]孙兆林 MATLAB 6.x 图像处理[M] 北京:清华大学出版社,2002 267-269 [5]肖旺新 路面破损图像自动识别关键技术研究[D] 南京:东南大学,2004 [6]张小波 数据挖掘应用实战基础[M] 广州 太普信息技术有限公司 2012 39-42 [7]秦玉平 基于支持向量机的文本分类算法研究[D] 大连 大连理工大学 2008 [8] LibSVM 学习 http://blog.csdn.net/flydreamGG/archive/2009/08/21/4470477.aspx [9]杨毓 蒙肖莲 用支持向量机_SVM_构建企业破产预测模型[J] 2006.10 金融研究65-75
其中训练数据文件中的是训练数据集的目标值,是对类别的标记,测试数据文件中的只用于计算分类的准确度或误差。是以 1 幵始的整数,用于表示特征的序号。3. 结论
4. 参考文献