-
注记是地图的重要组成部分,是人们从地图中获取地理位置信息的重要途径之一。人工智能技术不断发展的今天,如何让计算机“看”懂地图,是一项具有重要价值和富有挑战性的任务。计算机视觉理论奠基者Marr[1]认为,视觉要解决的问题可以归结为“What is Where”,即“什么东西在什么地方”。从栅格地图中识别注记可以让计算机从视觉的角度理解地图的含义,获取地图中的地理位置信息,帮助计算机“看”懂地图。
从栅格地图中进行注记识别需要考虑文字方向、文字大小、文字排列等方面。近年来,诸多学者尝试从栅格地图中提取和识别文本内容,取得了一系列成果[2-10]。文献[2]利用Hough变换和字符的无约束特征对栅格地图的数字字符进行识别,该方法可以识别不同大小的数字字符,但不适合识别英文字符;文献[4]基于Hough变化识别英文字符,该方法不适合识别弯曲的、不同大小的英文字符, 由于Hough变化只能提取直线段。文献[5]根据字符之间的局部线性特征,提出了一种可以处理多方向的、弯曲的英文字符识别方法,但不适合识别不同大小的英文字符;文献[6-7]通过探测竖直的基准线对英文字符进行识别,该方法可以识别不同字体、不同大小、不同方向的英文字符,但无法处理弯曲的英文字符;文献[8-9]分别通过分析字符的几何特性和邻近字符中心的连接角度对弯曲英文字符进行识别,但两种方法均不适合识别不同大小的英文字符。
已有方法在对栅格地图注记进行识别时,将注记与其对应的地理要素相分离,因此难以识别倾斜注记和弯曲注记。本文以连通域单元为基本处理对象,提出了一种新的基于地理要素几何特征的注记识别方法,提高了识别倾斜注记和弯曲注记的效果。
HTML
-
根据注记的方向,可将彩色栅格地图上的注记分为水平注记和非水平注记两种。非水平注记出现在线状或面状要素的表达当中,沿其平行线或者骨架线进行标注,注记的方向根据要素的倾斜角而定[11-12]。
如图 1所示,在一张GoogleMap(谷歌地图)瓦片中,注记“KFC”为水平注记,而注记“Oriole Dr”为非水平注记,其方向与道路中心线的走向一致。
-
从一幅彩色栅格地图中进行注记识别之前,需要对栅格图像进行预处理,不仅要去除图像中的噪声,校正倾斜注记和弯曲注记,还需要对注记进行聚类分析以区分单个单词。因此,本文提出了一种新的彩色栅格地图注记识别策略。
(1) 注记提取:初步提取可能的注记像素集合,利用注记连通域单元特征去噪。
(2) 注记定向:提取地理要素中心线,利用中心线对非水平注记进行方向确定。
(3) 注记聚类:利用注记连通域单元之间的距离对注记进行聚类,以得到单词。
(4) 注记识别:对非水平注记进行方向校正并重新排列,利用文字识别软件进行识别。
-
彩色栅格地图上的色彩种类较多,注记颜色也可能有多种。一般情况下,相对于地图上其他的要素,注记的色彩灰度值较低。因此,通过将注记的红绿蓝(RGB)颜色值转换成灰度值,并给定一个阈值对图像进行二值化处理便可以获得初步的注记像素集合。对于一些比较复杂的栅格地图,可以使用其他的注记像素分离方法,如利用k均值进行图像分割。本文利用灰度化的方获取原始图像初步的注记像素集合。
初步提取的注记像素集合中可能会含有噪声,相对于噪声而言,注记在大小和排列上具有一定的特征和规律。因此,为了消除噪声,本文提出了基于连通域单元特征的噪声消除方法。连通域单元就是每个连通域的最小矩形区域[13]。
如图 2所示,首先将注记的连通域分为四种类型:①包含多像素、与中心线不相交的水平连通域;②包含多像素、与中心线相交的水平连通域;③包含多像素、与中心线相交的非水平连通域;④包含单像素的连通域。通过判定连通域单元的方向、尺寸、密度、邻域这4个方面特征值来对其进行取舍,连通域单元i的特征值定义如下。
(1) 方向特征值Ri:规定水平向右为0°,顺时针为负,逆时针为正,定义连通域的方向角度变化范围为(-90°, 90°],连通域单元i的方向特征值等于连通域的方向角度值。当连通域的方向为水平时,对应连通域单元i的方向特征值Ri= 0°。
(2) 尺寸特征值Si:尺寸特征值Si包括3个方面,即连通域单元的高度Hi、宽度Wi以及两者的比值Ti。可用一个数组表示,即:
(3) 密度特征值Di:连通域单元i的密度指一个连通域单元中所含黑色像素点的百分比,密度特征值如式(1):
式中,Num为连通域单元i中黑色像素点个数,Hi为连通域单元i的高度,Wi为连通域单元i的宽度。
(4) 邻域特征值Ni:定义连通域单元i的邻域包括两个区域。
如图 3所示,图中1、2区域分别代表连通域单元i的右邻域、左邻域。对于当前连通域单元i的右(左)边界中心点x1(x2),当给定一个阈值m,若x1(x2)向右(左)移动m长度到y1(y2),当y1(y2)位于某一个连通域单元j内,而连通域单元j不与中心线相交,并且其尺寸特征值Sj和密度特征值Dj均在阈值范围内,则称当前连通域单元i满足右(左)邻域条件。若连通域单元i满足右(左)邻域条件,则Ni=1(Ni=2)。
一般而言,与道路相交的注记均与道路中心线走向一致,如图 1中的注记“Oriole Dr”,并且注记中的每一个字母对应一个连通域单元,但也有特殊情况:①水平的注记与道路相交,但与中心线走向不一致,如图 1中的注记“Touch”中的字母“u”,它虽是水平注记中的字母,但却与非水平的道路相交;②小写字母“i”和“j”包含两个部分,即一个字母对应两个连通域单元。考虑到这两种特殊情况,本文提出的连通域单元取舍步骤如图 4所示。
步骤1 判断连通域单元i内是否为单个像素。若为单个像素,将连通域单元i内的连通域暂判定为第4类型,并对其进行半径搜索(步骤6);若为多个像素,将连通域单元i内的连通域暂判定为第1、2、3类型,转步骤2;
步骤2 判断连通域单元i是否与中心线相交。若不相交,将连通域单元i内的连通域暂判定为第1类型,转步骤3;若相交,对其邻域特征值进行判断,当邻域特征值Ni=1或Ni=2时,保留连通域单元i内的像素,此时连通域单元i的方向特征值Ri= 0°,将连通域单元i内的连通域判定为第1类型,并将连通域单元i左右邻域内的所有连通域归类为第1类型;当邻域特征值Ni≠1且Ni≠2时,保留连通域单元i内的像素,此时Ri∈(-90°, 90°],将连通域单元i内的连通域判定为第2或3类型。
步骤3 判断连通域单元i的尺寸特征值Si是否满足阈值。若不满足,则删除连通域单元i内的像素,否则转步骤4;
步骤4 判断连通域单元i的密度特征值Di是否满足阈值。若不满足,则删除连通域单元i内的像素,否则转步骤5;
步骤5 判断连通域单元i的邻域特征值Ni。当邻域特征值Ni=1或Ni=2时,保留连通域单元i内的像素,此时连通域单元i的方向特征值Ri= 0°,将连通域单元i内的连通域判定为第1类型;当邻域特征值Ni≠1且Ni≠2时,删除连通域单元i内的像素。
步骤6 当所有包含多个像素的连通域单元取舍完毕之后,对于剩下的包含单个像素的连通域单元i,判断其半径r范围内是否存在包含多个像素的连通域单元(如图 8),若存在,则保留连通域单元i内的像素; 否则,删除连通域单元i内的像素。
对图 1进行灰度化得到的结果如图 5中黑色像素所示,对图 1提取的初步的注记像素集合进行取舍后的结果如图 5所示,红色标记出来的部分为噪声。
-
对于倾斜注记和弯曲注记需要进行方向校正,常用的校正方式有Hough变换,但是Hough变换只能进行倾斜的校正,对于弯曲的注记无法处理,并且算法运算量较大。为了对倾斜和弯曲的注记进行校正,本文提取注记所指代的地理要素(以道路为例)中心线,通过其方向特征对注记进行方向确定。
目前,已有许多学者尝试从彩色栅格地图中提取道路要素,主要有三种方式[14]:基于地图拓扑结构的道路提取和识别;基于地图颜色特征的道路提取和识别;结合地图拓扑结构和颜色特征的道路提取与识别。本文根据参考文献[14]中的方法,对栅格地图上的道路要素进行提取,并作矢量化处理。
通过将注记与道路中心线进行叠加确定每个连通域的方向(图 6),根据连通域类型的不同,连通域定向的方法如下。
第1类连通域:与道路不相交且包含多个像素的连通域。这种类型的连通域方向角度为0°,对应的连通域单元i的方向特征值Ri= 0°。
第2、3类连通域:与道路相交且包含多个像素的连通域。这两种类型的连通域方向角度变化范围为(-90°, 90°],其对应的连通域单元i的方向特征值范围为Ri∈(-90°, 90°]。Ri的计算方法如图 7所示,道路中心线L矢量化后由多条直线段l1、l2…、ln组成,中心线L与连通域单元i的边界(图 7中黑色方框)上的两个交点分别为A和B,点A所在的直线段为la,点B所在的直线段为lb,该连通域单元的方向特征值Ri等于直线段la和lb的倾斜角度平均值:
其中ka和kb分别为直线段la和lb的斜率,且两者都存在。当ka或kb不存在时,取直线段la或lb的倾斜角度为90°。
第4类连通域:包含单个像素的连通域。第4类型的连通域为字母“i”或“j”的上半部分,因此需要找到与上半部分对应的下半部分,合并两者以组成完整的字母。假设第4类连通域单元i的半径r范围内存在连通域单元j的像素,当连通域单元j中的连通域为第1类型(如图 8(a)),从连通域单元i的中心点向正下方搜索距离最近的像素p,像素p所在连通域单元为m,合并连通域单元i和m,此时连通域单元i的方向特征值Ri= Rm=0°;当连通域单元j中的连通域为第2、3类型(如图 8(b)),从连通域单元i的中心点o向距离o点最近的折线段l作垂线,垂足为d,找到距离d最近的像素q,像素q所在连通域单元为n,合并连通域单元i和n,此时连通域单元i的方向特征值Ri= Rn。
注记定向之后,所有第4类型的连通域被合并到第1、2、3类型的连通域中。
-
经过注记提取和注记定向之后,一个字母对应一个连通域单元,且每个连通域单元都确定了方向。注记聚类是将一个单词的所有字母聚成一类。聚类需要明确对象之间的距离,从而将指定距离内的所有对象进行归类。注记的各个字母之间的距离利用连通域单元之间的距离进行计算,其基本定义如下。
对于第1、2类连通域对应的连通域单元,连通域单元i和j之间的距离M定义为:假设连通域单元i左右边界中心点到连通域单元j的左右边界最短的距离为Mi,连通域单元j左右边界中心点到连通域单元i的左右边界最短距离为Mj,则M=min(Mi, Mj)。如图 9(a)所示,字母“O”的连通域单元左边界中心点到字母“P”的左右边界最小距离为8(左边界),最大值为13(右边界),右边界中心点到字母“P”的左右边界最小距离为1(左边界),最大值为6(右边界),因此Mo=1。同理字母“P”的连通域单元左右边界中心点到字母“O”的左右边界最小距离Mp = 1,所以字母“O”和“P”的连通域单元之间的距离M=min(Mo, Mp)=1。
对于第3类连通域对应的连通域单元,连通域单元i和j之间的距离M定义为:如图 9(b)所示,对于与中心线相交的连通域单元i和j(黑色虚线),利用连通域单元的方向求出新的最小矩形I和J(红色实线),新的最小矩形有两对边与连通域单元方向垂直,两对边与连通域单元方向平行,为了方便描述,将与连通域单元方向垂直的边称作垂边。假设矩形I的两垂边中心点到矩形J的两垂边最短的距离为Mi,矩形J的两垂边中心点到矩形I的两垂边最短距离为Mj,则M=min(Mi, Mj)。图 9(b)中,字母“O”和“p”倾斜角度为45°,同理易知连通域单元i和j之间的距离$ M = \sqrt 2 /2 $。
-
非水平注记无法直接进行识别,为了保持较好的识别率,识别之前需对其进行放大、旋转、移位操作,使之成为可以识别的水平注记。
放大和旋转过程中均使用双线性插值法对非整数的像素坐标进行插值。如图 10所示,对于非水平字母“s”(左),依次放大4倍(中)、逆时针旋转45°(右)后成为水平状态。
移位操作是对所有字母进行重新排列。排列方法为:以第一个字母为基准,依次将后面的字母与第一个字母进行下边界对齐,并固定各个字母之间的间隔(如表 1)。经过以上所有步骤,栅格地图上的注记信息最后需要转化成机器可识别的文本形式,在实验当中,本文使用ABBYY FineReader对预处理后的图片进行注记识别。
实际数量 识别数量 错误数量 正确率/% 字母 1 247 1 178 69 94.5 水平字母 636 604 32 95.0 非水平字母 611 574 37 93.9 单词 235 216 19 91.9 水平单词 109 104 5 95.4 非水平单词 126 112 14 88.9 Table 1. Result of Annotation Recognition
1.1. 注记识别策略
1.2. 注记提取
1.3. 注记定向
1.4. 注记聚类
1.5. 注记识别
-
为了证明方法的合理性和有效性,本文选择GoogleMap瓦片作为实验数据,数据范围为GoogleMap第17级别的编号从x=35 276、y=48 576至x=35 280、y=48 580的25张瓦片,瓦片中的字符类型包括字母、数字、以及少量其他字符(比如括号),该实验区域中倾斜注记和弯曲注记较多,约占注记总数量的50%。利用本文提出的识别策略对瓦片上的注记进行提取和识别,识别过程如图 11~图 14所示。
图 11显示了25张GoogleMap瓦片组成的实验区域;图 12利用连通域单元的特征进行注记像素的提取,其中红色标记的区域为噪声;图 13利用矢量化后的道路中心线与注记叠加进行注记定向;图 14利用连通域单元之间的最小距离对字母进行聚类,每一个矩形框内的所有字母组成一个类别(单词)。
图 15展示了非水平注记校正前后的对比效果。注记识别的结果如表 2所示。从表 1可以发现,GoogleMap瓦片上的字母、单词识别正确率分别为94.5%、91.9%,其中非水平字母识别正确率达到93.9%,非水平单词识别正确率达到88.9%。总体上,本文方法对彩色栅格地图中水平注记和非水平注记的识别有很好的效果。
-
本文提出了一种彩色栅格地图上的注记识别方法,该方法的主要特点是在识别过程中充分利用了每个注记所对应的地理要素的几何特征,因此可以很好地识别倾斜和弯曲的注记。但是本文方法不适合识别大小变化较大的注记,如何解决大小变化给注记识别带来的挑战,是今后需要研究的方向。