计算机系统应用  2019, Vol. 28 Issue (2): 177-183   PDF    
基于图像内容的沥青路面病害区域分割算法
蓝章礼, 黄涛, 李战, 匡恒     
重庆交通大学 信息科学与工程学院, 重庆 400074
摘要:针对CCD采集的沥青路面病害图像分辨率过高且含信息的有效区域占比少的问题,提出一种基于图像内容的沥青路面病害图像区域分割算法, 以剔除路面图像中的无效区域. 首先通过预处理和病害提取过程将原图像处理成包含病害特征的二值图像; 然后通过计算整幅图像中含信息像素的上下比和左右比, 得到初始化遍历方向, 并统计各行(或列)的含信息像素总数; 最后从初始化遍历方向开始遍历并丢弃含信息量最少的行(或列), 最终得到分割后的图像. 为验证算法的有效性与合理性, 采用图像信息熵作为算法评价标准与传统算法进行对比分析. 实验结果表明: 本文算法在有效降低图像分辨率的前提下能很好的保留病害目标信息, 提升图像信息熵.
关键词: 图像内容    区域分割    沥青路面    图像处理    病害提取    
Asphalt Pavement Image Region Segmentation Algorithm Based on Image Content
LAN Zhang-Li, HUANG Tao, LI Zhan, KUANG Heng     
School of Information Science and Engineering, Chongqing Jiaotong University, Chongqing 400074, China
Foundation item: Science and Technology Research Project of Education Commission of Chongqing Municipality (KJQN201800716)
Abstract: The resolution of the asphalt pavement disease image which collected by the CCD is too high and the area of the effective area containing information is small. A region segmentation algorithm for asphalt pavement disease image based on image content was proposed to eliminate the invalid region in the pavement image. Firstly, the original image was processed into a binary image containing the disease characteristics through a process of preprocessing and disease extraction. Then the initial traversal direction is obtained by calculating the up-to-down ratio and the left-to-right ratio of the pixels which contain information in the whole image, and counting the total number of information pixel of each row (or column). Finally, traversing from the initial traversal direction and discarding the row (or column) with the least amount of information in order to finally obtain the segmented image. In order to verify the validity and rationality of the algorithm, the image information entropy was used as the algorithm evaluation standard and compared with the traditional algorithm. The experimental results show that the proposed algorithm can keep the target information very well on the premise of effectively reducing the image resolution, and improve image information entropy.
Key words: image content     region segmentation     asphalt pavement     image processing     disease extraction    

随着深度学习技术的快速发展, 利用深度学习对路面病害进行自动识别分类的方法得到广泛研究. 目前对沥青路面病害的检测方法, 主要采用工程检测车沿公路线行驶, 用CCD摄像机实时采集路面图像, 这些图像分辨率高且数量巨大, 计算机在自动处理时运算量大、效率低[1]. 虽然一幅图像分辨率很高, 其中包含数百万个像素点, 但大部分内容为无病害路面, 含有病害的信息少. 若能剔除无病害部分, 在适当降低图像分辨率的同时提升图像的信息熵, 对提高分类识别运算的工作效率有很大帮助.

关于图像缩放算法, 比较传统的是基于插值的运算, 如最近邻插值法、双线性插值法、双三次插值法等, 其实质是对图像建立连续的数学模型, 然后进行重采样得到目标图像, 这类算法缩放效果一般, 容易产生失真或马赛克现象. 高健等在基于插值运算的基础上提出一种邻近区域采样的图像加权平均缩小放方法, 并对缩小后的图像进行灰度拉伸, 以提高图像对比度[2]. 常军等在文献[2]的基础上根据方差对图像的影响做了自适应修正. 从逼近的角度来说, 样条函数插值的效果更理想, 如三次样条插值、B样条插值等[3]. 冯杰飞等提出非均匀B样条插值图像放大算法, 优化了图像放大后的视觉效果[4]. 该类方法更适合处理灰度图像, 且对于图像长宽比不变时的缩小效果较好, 一旦改变图像长宽比, 图像就会发生不同程度的畸变, 从而改变路面病害的结构特征[5,6].

针对传统插值算法不能很好的保持图像中目标区域的视觉效果. Avidan S等在SIGGRAPH国际会议上首次提出基于内容的缝裁剪图像缩放算法. 其核心是利用梯度能量在图像中寻找一条八连通的能量最小化缝, 通过删除或增加一条能量缝达到图像缩放目的[7]. 该算法在目标区域较大或者背景较复杂时容易丢失目标信息或破坏目标结构, 具有很大的局限性.

因此, 研究者们提出一些改进方法. Choi J等提出的改进方法更好的保留图像的突出结构[8]. 皱盼盼等提出一种主体区域保持的图像区域缩放算法, 根据得到的权重不同对主体区域不同程度的保护[9]. 林晓等提出的方法在考虑图像内容的同时也考虑目标的形状结构, 使缩放效果更好[10]. 但是, 对于沥青路面病害图像而言, 病害种类较多, 且病害区域的位置和大小不确定, 特别是网状裂缝, 图像大部分往往被病害区域占据, 采用该类方法进行图像缩放容易破坏病害结构. 同时, 由CCD采集的路面图像存在明显的光照非均匀干扰, 与病害区域灰度差异不大的暗区域容易被误判为目标而得以保留. 因此, 该算法不适用于沥青路面病害图像的缩小处理.

以上传统及改进算法在一定程度上实现了图像缩放目的, 并优化了缩放后图像的视觉效果, 但基本不能提升图像信息熵, 即图像缩放的同时也丢失了必要的特征信息. 本文提出一种针对沥青路面病害二值图像的缩小算法——基于图像内容的沥青路面病害图像区域分割算法, 该算法通过统计图像各行、各列的像素值信息, 丢弃不含信息或含较少信息的无效区域, 不仅降低了图像分辨率, 且能很好的保留病害特征信息, 有效提升图像信息熵.

1 算法流程

算法流程如图1所示, 主要包括图像预处理、病害区域提取、基于图像内容的区域分割三个部分.

图 1 算法流程图

2 图像预处理

由于沥青路面本身材料原因存在大量干扰噪声. 同时路面水渍、杂物、车道线及光照非均匀等影响. 导致沥青路面图像内容较为复杂, 需要对图像做预处理以减少大量噪声对病害信息的干扰.

2.1 图像降采样

中值滤波, 在抑制噪声的同时能很好的保护病害边缘信息[11], 由于沥青路面存在较多凸起颗粒, 在后期对图像二值化时容易产生大量噪声. 因此, 在降采样之前对图像做滤波处理.

原图像分辨率较高, 为保证后期的算法效率, 先对滤波后图像做降采样处理. 比较常规的方法是邻域采样和隔行采样, 本文采用隔行采样的方法实现. 采样过程如下:

${Im} ag{e_{\rm{output}}}\left( {i,j} \right) = {Im} ag{e_{\rm{input}}}\left( {{2^{{k_1}}}i,{2^{{k_2}}}j} \right)$ (1)

其中k1k2表示采样次数. 为避免图像发生畸变, 采样比例按原图像长宽比保持不变, 即k1=k2. 为保持图像中病害的结构特征, k1k2值不能过大.

2.2 POSHE算法

本文处理的沥青路面病害图像还存在明显的光照非均匀现象, 表现为两端较暗中间较亮, 呈现出明暗相间纵向条纹状, 如图2所示. 因此, 有必要对图像做灰度校正, 以消除光照非均匀带来的影响[12].

图 2 沥青路面病害图像

POSHE算法又称为部分重叠子块直方图均衡化, 是直方图均衡化的一种改进算法, 能有效均衡图像灰度差异, 解决光照非均匀问题.

其思想是在Imageinput中定义一个模板w(m,n), 固定移动步长为l, 每移动一次都对模板下的区域做直方图均衡化, 直到处理完整幅图像, 如图3所示.

该算法的步长l和模板w(m,n)的大小对处理图像的效果有直接影响, 减小l能明显减弱图像块效应, 但会增加计算量. Yang等通过实验表明当l减小到w(m,n)大小的1/8或更小时, 能很好的减弱图像块效应, 但会改变图像颜色, 产生一定程度的失真[13].

图 3 POSHE算法过程

3 病害区域提取

OTSU又称为最大类间方差法, 是一种常用的全局阈值分割算法, 它能找出最佳分割阈值, 将图像中像素值划分为前景和背景两类. 对于校正后的图像, 该方法输出的二值图像病害区域明显, 有利于病害区域提取.

3.1 大面积虚假前景去除

即使经过前期匀光处理, 有些大面积阴影区域与病害区域的灰度值很接近, 可能存在被误分割为前景的情况. Top-hat变换是一种解决光照非均匀问题的方法, 但用于本文图像的处理效果并不理想, 作者引入其思想以消除大面积虚假前景区域. 运算过程如下:

${Im} ag{e_{\rm{output}}} = {Im} ag{e_{\rm{input}}} - {Im} ag{e_{\rm{input}}} \circ S$ (2)

其中, ${Im} ag{e_{\rm{input}}} \circ S = ({Im} ag{e_{\rm{input}}} \ominus S) \oplus S$ 表示使用结构元素S对图像Imageinput进行opening操作, 其结果得到包含大部分虚假前景区域的二值图像. 最后做差运算达到消除大面积虚假前景区域的目的.

3.2 小面积孤点噪声去除

对于小面积孤点噪声的去除, 采用连通域去噪是一种有效的方法. 在去除小面积孤点噪声之前, 先对图像做膨胀处理, 一方面保持病害区域的完整性, 减少病害区域断裂现象; 另一方面减少连通域的个数, 提高运算效率.

通过观察分析, 图像中病害形成的连通域一般面积较大, 形状细长复杂, 呈不规则状; 而孤点噪声形成的连通域面积较小, 形状简单, 呈颗粒状. 因此, 本文设定三个区域去噪的判决条件以消除孤点噪声.

判决条件一: 计算图像中每个连通域的面积Area, 即该区域中像素点总数.

$regio{n_i} = \left\{ {\begin{aligned} & 1,&{Are{a_i} \geqslant {T_a}} \\ & 0,&{Are{a_i} < {T_a}} \end{aligned}} \right.$ (3)

其中,regioni表示第i个连通域, Areai表示第i个连通域的面积, Ta为预设阈值.

判决条件二: 计算图像中每个连通域在最小外接矩形中的占比p. 病害区域由于形状不规则, 往往p值较小, 而噪声区域的p值一般较大.

$regio{n_i} = \left\{ {\begin{aligned} & 1,&{{p_i} \leqslant {T_p}} \\ & 0,&{{p_i} > {T_p}} \end{aligned}} \right.$ (4)
${p_i} = \frac{{Are{a_i}}}{{RectangleAre{a_i}}}$ (5)

其中, pi表示第i个连通域在最小外接矩形中的面积占比, Tp为预设阈值, RectangleAreai表示第i个连通域的最小外接矩形面积.

判决条件三: 计算图像中每个连通域的最小外接矩形长宽比q. 图像噪声区域的形状呈颗粒状, 连通域的最小外接矩形长宽比q值大约在1左右.

$regio{n_i} = \left\{\begin{aligned} & 1,\quad 0 < {q_i} \leqslant 1 - {T_{q1}}\quad {\rm{or}}\quad {1 + {T_{q2}} \leqslant {q_i}} \\ & 0,\quad {1 - {T_{q1}} < {q_i} < 1 + {T_{q2}}} \end{aligned} \right.$ (6)

其中, qi表示第i个连通域的最小外接矩形长宽比, Tq1Tq2为预设阈值.

最后, 对图像做腐蚀运算, 还原病害区域的实际结构.

4 基于图像内容的区域分割算法 4.1 算法描述

经上述处理后的二值图像ImageM×N, 图像中某像素点的坐标为(i,j), 该点的像素值为f(i,j). 其中, MN表示输入图像ImageM×N的列和行, UV表示输出图像ImageU×V的列和行.

$f(i,j) = \left\{ \begin{aligned} &1, \quad {\text{含有信息}}\quad {i = 1,2, \cdots ,M}\\ & 0, \quad {\text{不含信息}}\quad {j = 1,2, \cdots ,N} \end{aligned}\right.$ (7)

算法流程如图4所示.

图 4 基于图像内容的区域分割算法流程

具体算法步骤如下:

步骤1. 输入图像ImageM×N, 通过目标输出图像ImageU×V计算得到阈值θrowθcol.

$\left\{ {\begin{aligned} & {{\theta _{{\text{row}}}} = N - V} \\ & {{\theta _{\rm{col}}} = M - U} \end{aligned}} \right.$ (8)

步骤2. 统计各行的像素值总和Fj, 转至步骤3.

${F_j} = \sum\limits_{i = 1,2, \cdots ,M} {f(i,j)} \begin{array}{*{20}{c}} {}&{j = 1,2, \cdots ,N} \end{array}$ (9)

步骤3. 判断θrow是否等于0. 若等于0, 转至步骤4; 若不等于0, 转至步骤6计算α的值.

步骤4. 统计各列的像素值总和Fi, 转至步骤5.

${F_i} = \sum\limits_{j = 1,2, \cdots ,N} {f(i,j)} \begin{array}{*{20}{c}} {}&{i = 1,2, \cdots ,M} \end{array}$ (10)

步骤5. 判断θcol是否等于0. 若等于0, 转至步骤8; 若不等于0, 转至步骤6计算β的值.

步骤6. 计算输入图像ImageM×N的上下比α或左右比β, 初始化遍历方向. 上下比α指整幅图像的上半部分与下半部分之比, 左右比β指整幅图像的左半部分与右半部分之比, 通过αβ能大致判断出病害区域及无效区域所在位置. 转至步骤7.

步骤7. 根据α(或β)的值按表1获取初始化遍历方向, 以次遍历Fj(或Fi)的值, 丢弃信息量最少的行(或列). 每丢弃一次, θrow(或θcol)的值减1, 转至步骤3(步骤5).

步骤8. 遍历结束, 输出图像ImageU×V.

其中,

$\alpha = \left\{ {\begin{aligned} & {\frac{{\displaystyle\sum\limits_{i = 1, \cdots ,M\atop j = 1, \cdots ,N/2} {f\left( {i,j} \right)} }}{{\displaystyle\sum\limits_{i = 1, \cdots ,M\atop j = \left( {N + 2} \right)/2, \cdots ,N} {f\left( {i,j} \right)} }}}\quad {{{N}}{\text{为偶数}}}\\ & {\frac{{\displaystyle\sum\limits_{i = 1, \cdots ,M\atop j = 1, \cdots ,\left( {N-1} \right)/2} {f\left( {i,j} \right)} }}{{\displaystyle\sum\limits_{i = 1, \cdots ,M\atop j = \left( {N + 1} \right)/2, \cdots ,N} {f\left( {i,j} \right)} }}}\quad {{{N}}{\text{为奇数}}} \end{aligned}} \right.$ (11)
$\beta = \left\{ {\begin{aligned} & {\frac{{\displaystyle\sum\limits_{i = 1, \cdots ,M/2\atop j = 1, \cdots ,N} {f\left( {i,j} \right)} }}{{\displaystyle\sum\limits_{i = \left( {M + 2} \right)/2, \cdots ,M\atop j = 1, \cdots ,N} {f\left( {i,j} \right)} }}}\quad{{{M}}{\text{为偶数}}}\\ & {\frac{{\displaystyle\sum\limits_{i = 1, \cdots ,\left( {M - 1} \right)/2\atop j = 1, \cdots ,N} {f\left( {i,j} \right)} }}{{\displaystyle\sum\limits_{i = \left( {M + 1} \right)/2, \cdots ,M\atop j = 1, \cdots ,N} {f\left( {i,j} \right)} }}}\quad{{{M}}{\text{为偶数}}} \end{aligned}} \right.$ (12)
表 1 初始化遍历方向说明

4.2 算法评价标准

为度量算法的有效性, 计算分割后图像所含信息量, 本文引入图像信息熵的概念用于评价算法. 其中像素事件集A={0, 1}, 事件在图像中出现的概率分别为P={p0, p1}. 因此, 二值图像的信息熵表示为:

$E({p_0},{p_1}) = - {p_0}\log _2{{p_0}} - {p_1}\log _2{{p_1}}$ (13)
5 实验结果与分析

本文的图像数据由重庆市公路局提供, 图像分辨率为3088×2048像素, 精度约为0.647 mm/pixel. 为验证算法的有效性及稳定性, 在Win10系统下编程实验, 实验硬件平台为Intel(R) Core(TM) i7-8750H CPU 16 GB内存的PC机, 软件平台为MATLAB R2016a.

预处理阶段如图5所示. 为平滑图像并保护病害边缘, 首先对图5(a)做中值滤波处理, 窗口尺寸设置为9×9大小. 为提高算法效率, 在进行后续处理工作前, 需要对滤波后图像做降采样处理, 从图5(b)图5(c)的采样结果可以看出, 当k1=k2=3时分辨率缩小到386×256, 基本能保持病害细节. 但是, 当k1=k2=4时, 图5(c)明显变得模糊, 有些细节也被丢失. 因此, 本文设置降采样次数为3, 分辨率缩小到386×256.

由于图5(b)光照不均匀, 明显呈现出两端较暗中间较亮, 且存在明暗相间纵向条纹的情况. 若直接对图5(b)做阈值分割, 将无法正确区分出前景与背景区域. 因此, 本文采用POSHE算法对图5(b)做灰度校正, 设置参数滑动模板w(m,n), 步长l, 经校正后的图5(d)光照非均匀问题有所改善, 虽然出现一定程度的失真, 但也很好的突出了病害区域.

图6为病害提取过程, 为区分图像周围的噪声区域, 给图像添加黑色边框. 图6(a)图5(d)经OTSU阈值分割得到, 但仍然存在一些被误判的虚假前景. 对图6(a)引入top-hat变换思想, 采用opening操作估计大面积虚假前景区域得到图6(b), 为消除这些大面积区域, 将图6(a)图6(b)做差运算得到图6(c), 可以看出明显去除大面积虚假前景的干扰, 最后, 采用连通域去噪的方法对图6(c)进一步处理.

图 5 沥青路面图像预处理

图 6 沥青路面病害提取

最后得到的图6(d)分辨率为386×256, 很好的保持了原病害的结构特征, 但除小部分区域含病害信息外, 大部分是不含信息的无效区域. 因此, 在保证病害结构特征尽量不变的情况下丢弃部分无效区域, 进一步降低图像分辨率.

为验证算法的有效性, 采用两种常见算法与本文算法作比较. 同时, 实验图像采用常见的三种沥青路面病害图像: 纵向裂缝、横向裂缝、网状裂缝, 通过以上预处理及病害提取, 得到三种裂缝类型的二值图像. 分割前图像分辨率为386×256, 分割后图像分辨率为248×248. 分割实验结果如图7图9.

表2为几种算法对未缩小图像和缩小后图像的信息熵统计结果. 由图像信息熵的理论分析可知: 同样分辨率大小的图像, 所含信息熵越大, 其包含的信息量越多.

图 7 纵向裂缝区域分割实验结果

图 8 横向裂缝区域分割实验结果

图 9 网状裂缝区域分割实验结果

表 2 图像信息熵比较

实验结果表明: 无论是哪一种路面病害图像, 经几种算法缩小后, 本文算法缩小后的图像所含信息熵都是最大, 即缩小过程中丢失的信息最少. 因此, 本文算法能在降低图像分辨率的同时, 较好的保留图像中病害特征信息, 且能最大程度保持图像中病害的结构不发生畸变.

6 结论与展望

提出一种基于图像内容的沥青路面病害图像区域分割算法. 该方法能有效降低图像分辨率, 同时较好的保留图像中病害特征信息, 提高后期对病害分类识别等相关研究工作的使用效率, 为进一步研究病害自动分类识别奠定基础.

参考文献
[1]
Sun L, Kamaliardakani M, Zhang YM. Weighted neighborhood pixels segmentation method for automated detection of cracks on pavement surface images. Journal of Computing in Civil Engineering, 2016, 30(2): 04015021. DOI:10.1061/(ASCE)CP.1943-5487.0000488
[2]
高健, 茅时群, 周宇玫, 等. 一种基于映射图像子块的图像缩小加权平均算法. 中国图象图形学报, 2006, 11(10): 1460-1463. DOI:10.3969/j.issn.1006-8961.2006.10.018
[3]
常军, 吴锡生. 基于图像子块加权缩小的自适应修正算法. 计算机工程与应用, 2009, 45(7): 181-183, 186. DOI:10.3778/j.issn.1002-8331.2009.07.054
[4]
冯杰飞, 韩慧健. 基于非均匀B样条插值算法的图像放大. 计算机应用, 2010, 30(1): 82-84, 89.
[5]
Mishiba K, Ikehara M, Yoshitome T. Content aware image resizing with constraint of object aspect ratio preservation. IEICE Transactions on Information and Systems, 2013, E96-D(11): 2427-2436. DOI:10.1587/transinf.E96.D.2427
[6]
Niu YZ, Liu F, Li XQ, et al. Image resizing via non-homogeneous warping. Multimedia Tools and Applications, 2012, 56(3): 485-508. DOI:10.1007/s11042-010-0613-0
[7]
Avidan S, Shamir A. Seam carving for content-aware image resizing. ACM Transactions on Graphics, 2007, 26(3): 10. DOI:10.1145/1276377
[8]
Choi J, Kim C. Sparse seam-carving for structure preserving image retargeting. Luwer Academic Publishe, 2016, 85(2): 275-283.
[9]
邹盼盼, 陆平, 朱恒亮, 等. 基于主体区域保持的图像缩放算法. 图学学报, 2016, 37(2): 230-236.
[10]
林晓, 沈洋, 马利庄, 等. 显著物体形状结构保持的图像缩放方法. 计算机科学, 2014, 41(12): 288-292. DOI:10.11896/j.issn.1002-137X.2014.12.062
[11]
宋蓓蓓, 韦娜. FCM分割和形态学的沥青路面图像裂缝提取. 计算机工程与应用, 2013, 49(4): 31-34. DOI:10.3778/j.issn.1002-8331.1208-0201
[12]
文立. 改进的灰度校正算法在路面裂缝图像预处理中应用. 计算机系统应用, 2015, 24(2): 220-223. DOI:10.3969/j.issn.1003-3254.2015.02.041
[13]
Yang W, Xiao ZT, Wang QJ, et al. A method for improving the definition of scene in fog image. 2009 International Conference on Computational Intelligence and Software Engineering. Wuhan, China. 2009. 1–4.