李亚州 池润昊 宋 菲 徐 昇
(1.南京林业大学信息科学技术学院 南京 210037)(2.江苏开放大学信息工程学院 南京 210017)
随着经济的高速发展,道路作为交通运输的基本条件带动着经济的发展。信息化可以让道路管理和规划更加高效有序。随着遥感技术的进步,图像的分辨率越来越高,可以达到几十厘米的精度,高分辨率的遥感影像为GIS 数据的更新提供了有利条件。遥感图像的道路提取根据自动化程度可分为半自动道路提取和全自动道路提取:常见的半自动方法有动态规划法、基于Snakes 或Active Contour 模型的方法、基于主动检测模型的方法[1]。而全自动道路识别是道路提取发展的最终方向,在国内外专家的探索中,常见的方法有[2~6]脊线探测法、启发推理法、地图匹配法、统计模型法、基于阈值分割和形态学提取、基于形状特征提取等。
本文通过对高分辨率遥感数据的处理,利用机器学习和形态学的方法将图像中的道路信息提取出来。对于遥感图的高分辨这一特性,将图像切割为尺寸较小的子图。
对小图进行方向梯度直方图的特征提取,使机器学习道路的特征,自动检测出道路的大致位置,最后对检测出的小图进行数学形态学处理,从而提取出道路信息,并对这一方法所取得的结果进行分析。
灰度直方图是通过统计图像中各个灰度和灰度在图像中出现的频率,因此需要绘制出灰度的分布统计图,来直观地反映出灰度的分布情况。本文通过变换直方图的方法增强图像的视觉效果,即通过直方图均衡化使得图像具有比较高的对比度和动态范围。此外,为了去除数据中噪声带来的影响,采用中值滤波这一非线性的平滑滤波,来过滤脉冲噪声。实现的方法是以目标像素为中心设定一个M×N 的邻域范围,将范围内所有像素的值做统计排列,将中间位置的值作为目标像素的灰度值。为取得较好效果,研究在处理一个像素点时,自适应调整窗口大小。先判定当前区域的中值是否为噪声点。如果是则扩大窗口尺寸去寻找更合适的中值。如果不是,则判定中心像素点是否是噪点,若否则保留原值,若是则使用中值代替原始值。
特征提取是图像识别中核心的步骤之一。为了使计算机能够认识图像特征,需要将人类视觉中图像的抽象描述转换为如数值和向量等形式。HOG 特征(Histogram of Oriented Gradients)是统计图像局部区域的梯度方向直方图[7]来实现的。图像中目标的表象和形状能够被边缘方向的密度分布来描述,算法流程图如图1 所示。其中,Gamma校正是将图像进行压缩。光照对图像的纹理产生比较大影响,校正可以有效地降低图像的阴影。根据图像的不同,可以通过改变矫正幅度,来调整图像的显示效果。
图1 特征提取流程
在计算图像横纵坐标时候,分别使用[-1,0,1]算子和[-1,0,1]转置算子对图像进行卷积运算,使用式(1)和式(2)计算得出梯度幅值和梯度方向角。将图像分成若干个单元格cell,在cell 这个小区域内统计梯度方向的分布情况。道路检测时角度范围设定为180°,分为9 个方向。使用式(1)得出梯度大小进行加权。由于局部光照变化以及对比度变化,梯度强度变化较大,对梯度强度归一化可以有效解决这一问题。将多个cell 组成一个大的连通的block 区间,根据block 形状可以分为矩形区间和环形区间。最后将重叠的block块连接合成一个特征向量。与其他特征提取方法相比,HOG特征提取在图像的局部进行处理,对图像光学的形变可以保持良好的不变性。本文将图像拆分成小的cell,进行梯度方向直方图化,通过调整cell 的大小来控制区域特征信息的精度以及保持特征不变。
BP 神经网络是一种运用反向传播算法按照误差反馈构建的人工神经网络[8]。BP 神经网络属于一种多层神经网络,其特殊性在于网络中的神经元逐层连接,并且同一层内的神经元无法相互连接,使得误差的反馈只能逐层进行。BP 神经网络能够将符合要求的结果输出,而对于不符合的数据返回继续处理。使用BP神经网络进行分类分为样本训练、识别和反馈。基本原理如图2 所示。信息进入传输层和隐藏层,把结果传输到输出层,这个过程为正向传输过程。当计算结果达不到预期的要求时,调整系统参数重新计算,以此循环计算,直到结果符合预期的结果。
图2 BP网络分类
在分类中,本文采用的是一种量化共轭梯度法。传统的梯度下降法将负梯度收敛,共轭梯度算法[9]则是将算出的负梯度方向与上一次搜索的共轭方向进行结合,计算出新的方向。因为共轭梯度在算法每一步时都需要重新计算方向,所以使得计算时间大大增加。量化共轭梯度法避免了耗时的一维线性搜索,使得网络的训练速度大大提升。
损失函数是判断模型预测好坏的一种函数,它可以很好地反映模型和实际之间的差距,常见的损失函数有0-1 损失函数、平方损失函数、损失函数、softmax损失函数[10]、交叉熵损失函数等[11]。
在二分类问题中,为了衡量神经网络输出的向量和理想情况的接近程度,交叉熵是一种较好的评价方法。交叉熵设定了两个概率分布p、q,p代表理想结果,q 代表神经网络输出结果,其中两者满足p+q=1的关系。交叉熵的计算公式为
当熵的值越小,两个概率的分布就越接近。
图像处理方法在道路网的提取中有着广泛的应用[12~13]。膨胀腐蚀是最常见的形态学变换[14],腐蚀操作能够削减物体的边界上较小的部分,膨胀可以使物体扩大,将原本断开的两个物体连接。开运算和闭运算是由腐蚀膨胀两种运算组合而成的。开运算是先腐蚀再膨胀,闭运算则是先膨胀再腐蚀,运算时使用同一种结构元素。开运算使得图像的边缘变得更加的光滑,断开细小的连接和消除边缘细小的毛刺。闭运算也能使图像边缘变得光滑,填充图像之间细小的连接并填充小的空洞[15]。开运算和闭运算是一种对偶操作。
本文在二值图像通过腐蚀膨胀等处理过后,形成不同大小的相互分离的连通分量。本文将不同的连通分量进行标记,以便于对图像的处理和统计分析。通过运用形态学的膨胀操作可以实现对每个连通分区分配唯一的编号。以8 连通进行操作,创建一个3×3 的结构元素S,对目标A 中的某一个点B 开始进行膨胀,每一次膨胀后的图像与原图像相交,就可以将生成的图像限定在一个连通分量之内,从而实现对连通分量的提取。
实验中首先对图像进行预处理,包括对图像增强、滤波和拆图。其次将图像中包含道路的图像和不包含道路的图像分为正样本和负样本。通过HOG 特征提取将车道的梯度方向特征转化为特征向量,使用量化共轭梯度算法将正负样本放入BP神经网络中进行训练。通过训练出的模型对完整的高分辨率遥感图进行目标检测,将挑选出的图像进行形态学处理得出二值化的道路。
本实验研究的数据为高分辨率遥感图像,数据的采集是通过与江苏省测绘局合作获得,数据的分辨率约为0.3m。实验使用Matlab R2018a对图像进行处理。图像的处理过程如图3 所示,下面简单描述预处理过程。
图3 道路提取流程图
如图4 所示,预处理中将高分辨率遥感图像分割为400×400 分辨率的小图,使得软件能够更加快速地处理图像数据,将拆分的小图写入文件的“拆图”目录下,以便于之后的区分正负样本。
图4 道路提取流程图
将拆分好的图像分为车道正样本和车辆负样本。共拆分出1900 张图像,经过挑选,其中有126张正样本和1774 张负样本。将区分的正负样本分别计算每张图片的梯度方向变化特征,为了便于计算,将拆分后的图像压缩为70×50的分辨率,将cell的尺寸设为10×10,将2×2 的cell 作为一个block 进行归一化,将所有重叠的块合成一个特征向量。
利用Matlab 使用三层BP 神经网络结构,由输入层、隐藏层和输出层组成,运用了量化共轭梯度算法进行训练。使用交叉熵作为损失函数。经过训练后的得到神经网络模型,将完整的高分辨率遥感图像拆分成小图后进行识别,将检测为道路的区域提取出来,图5为识别出的道路区域。
图5 目标检测结果
将识别为非道路的区域去除后根据图像的灰度进行简单的阈值分割。经过测试道路部分的灰度大多数在0.2~0.35 之间,阈值分割后的图像如图6(a)所示。
由图6(a)可以看出,阈值分割后题图像主要由三部分组成,道路、道路周围的树木以及较为远处部分楼房。其中道路部分图像较为平滑,像素密度比较高,连通区域的面积较大,树木部分主要在道路周围,为细小的散点和细长的网状结构,连通区域较小。由于道路中车辆纹路的干扰,车辆也会对道路的提取造成影响。
通过对道路中连通区域进行区域标记和统计,去除图像中面积过小的散点,使用开运算,断开道路主体周围细小的连接,经过测试使用半径为6 的圆形结构体进行开运算可以达到比较好的效果,道路的边缘更加平滑,道路周围部分如图6(b)所示,道路周围植被的网状结构由于开运算中的腐蚀作用被去除变成细小的散点,道路和周围障碍物的连接被断开。
对开运算后的图像重复去除小区域和腐蚀膨胀后得到图6(c)中左图,其中右图为高德地图电子地图进行阈值分割后的图像,较为接近真实情况中的道路网,经过对比可以看出,经过道路分类后,区域形态学处理过的图像可以基本显示出双向四车道主道路和辅路的部分区域。图6(d)为未采取区域分类处理的遥感图像在形态学处理后的表现,与图6(c)(左)对比可以看出图像的左侧受到楼房建筑的干扰,图像中存在许多非道路区域,对图像提取造成困扰。对比实际情况准确率低。
图6 检测结果识别过程
经过对多组遥感图像的进行道路区域分类,将BP 神经网络分类出的图片作为实验结果,将人工分类出的遥感图像区域作为真实结果,两者进行对比,所得出的结果如表1所示。
表1 区域分类结果
通过表格了解,对于不同的场景下,区域分类的结果并不相同,在类似于交叉路口的图像中,有与道路占有比较大的比例,且多为双向四车道主路,识别的准确度较高,且大多可以覆盖道路的边缘部分。在两个景区的图像中,主车道较少,小区间的道路大多为双车道,路旁有大面积的树木覆盖,人眼不容易发现,识别的准确率较低。在景区场景中,主道路覆盖的面积比较少,同样存在不容易看见的林间道路,景区内比较空旷,存在于道路十分相似的区域,容易造成将非道路区域识别为道路区域。
将提取出的道路区域进行形态学处理后,所得到的图像与高德地图中的电子地图进行对比,根据道路的种类不同分类,将各个部分所占图像总像素的比例进行统计,将未采用道路分类方法称为方法1,将采用道路提取的方法称为方法2,表2 为对比结果。
表2 准确率对比结果
通过表2 可以观察出,在对于主路的提取上,方法1 和方法2 两种方法效果相差不大,对于主路的提取准确率和实际情况相差不大。在对小路的道路提取上,方法2 准确率略低于方法1。在提取结果上,方法1产生了较多的非道路区域,方法2对于非道路的误提取则远低于方法1。两种方法在小路的提取上准确率都比较低,在图5 的小区场景中,树木较多地区的主路也未能识别成功。
本文主要基于高分辨率遥感图像对道路进行提取研究,实验中运用BP 神经网络进行道路区域分类后提取道路的方法缩小了图像处理的范围,减少了对非目标的识别。精度表明,提出的方法在城市交通环境中,能有效识别主路和小路部分,同时能快速排除非道路区域。
道路提取的结果与如今成熟的地图道路网络相比仍然有很多的不足,存在许多需要改进的地方,主要有以下几点。
1)对于训练的样本数量较少,在不同的生活场景下道路的形态变化比较大,对于非道路的负样本收集较少,容易造成误识别。
2)尝试从不同维度进行特征提取,如对纹理、轮廓进行特征提取,使道路提取的准确率增加。尝试优化神经网络算法。
3)本次实验并没有考虑道路中车辆对道路提取的影响。道路区域分类对于道路两旁有大量植被的情况没有能够检测出,这一情况没有得到解决,有待完善。