赵永猛,宓 超
上海海事大学 物流工程学院,上海 201306
随着智能交通[1]的无人化发展,出现了诸如车牌付、自动发卡机、ETC 等多场景的应用,但由于车型信息未联入交通系统网络,仅靠车牌信息不能有效对应车辆型号,一些收费场景出现了大量套牌漏费等现象,为抑制该现象,智能识别车型显得尤为重要。
目前车型识别的研究大多基于车辆的外观轮廓特征[2-3]进行识别,这对于车型相近且处于分类区间边缘的车辆,识别率并不理想。例如高速公路车型分类对于客车按座位数分类,但存在座位少车身长,座位多车身短的情况,仅靠外观轮廓及轮轴特征无法有效区分。根据国家规定,大型荷载客车车身均需印刷限载字符字样,而客车印刷的限载人数也与客车等级相对应,因此本文提出通过识别车身限载数字进行车型识别的算法,以此作为车型识别的辅助手段。
目前自然场景下的字符识别主要分为两个阶段:文本检测和字符识别。文本检测阶段大体归纳为传统的文本检测和基于深度学习的文本检测,而后者针对复杂环境下的样本,无法普遍性地进行有效的检测。传统的文本检测主要分为基于连通域[4]和基于滑动窗[5-6]的文本检测。基于滑动窗的文本检测要求寻找区分度好的描述特征[7],但描述特征会受到光照、阴影等影响。基于连通域分析的文本检测算法从连通域获取途径来看,分为边缘检测算法和文本级检测算法,后者主要采用最大稳定极值[8]、颜色聚类[9]及笔画宽度变换(Stroke Width Transform,SWT)[10]等来区分文本区域和背景区域,这对于受光照不均且颜色杂乱的客车样本并不适用。文献[11-12]等采用了一些边缘检测算子检测出图像的边缘信息,然后对边缘图像进行形态学处理以剔除伪文本区域,取得了不错的效果。字符识别阶段,分为传统的字符识别方法和基于深度学习的方法。传统的字符识别主要分为预处理、特征提取及特征分类三个阶段。基于深度学习的字符识别是目前研究的趋势。如刘宝龙[13]基于迁移深度卷积神经网络,对船名标识符进行了识别。张绍明等[14]使用深度卷积神经网络模型以及采用Faster R-CNN 的思想实现了集装箱箱号的提取。但由于车身数字字符字体规范且种类较少,基于深度学习的字符识别相比基于传统方法字符识别,其识别率并无显著提升,而且其对复杂环境下的样本识别效果不太理想,因此考虑到样本所处的环境以及车身文本的特点,有必要寻求一种自然环境下车身文本识别算法。
自然环境下的车身文字识别存在以下难点:字体颜色和车身颜色杂乱,字体尺寸不一致,字体间隔无统一标准,而且受光照不均以及阴影等影响。针对上述难点以及实际工程要求,本文提出的方法如下:首先通过改进的二值化算法结合车身文本的特征实现文本定位,然后将分割出的限载数字字符通过神经网络进行识别,以此实现车身字符识别。
本文提出通过识别车身字符进行车型识别的方法,作为车型识别的辅助手段,以提高车型识别率。该方法相比基于外观尺寸特征的车型识别方法,针对分类区间边缘的客车车型,识别率得到有效的提升。识别算法流程采用了文本定位、字符分割及字符识别三阶段法。其中在文本定位阶段,针对客车样本特点,要求在复杂环境下使得样本在文本区域的保存与区分方面有较好的表现,为此提出了改进二值化Psauvola 方法,与其他局部二值化方法相比该方法表现更加优异,且最终分割出的字符识别率更高。Psauvola 方法对光照有较强的鲁棒性,并且能够消除大部分阴影带来的影响,可有效处理复杂环境下的样本;根据格式塔特征,针对限载字符的特点,有效剔除了干扰字符。对于复杂环境下的字符识别,目前使用深度学习的方法还未得到有效解决。
算法所采用的样本采集装置安装位置及应用场景如图1所示。
图1 部分应用场景及相机安装位置
本文算法流程如下:第一阶段检测客车样本文本区域;第二阶段将定位出的文字区域分割成独立字符;最后阶段使用传统的神经网络对提取的数字字符进行识别。
本节提出检测车身文本区域的命题,首先根据形态学操作[15]粗定位出类字符区域,然后将类字符区域的灰度样本通过改进的二值化算法(Psauvola)转化成二值图,最后对二值图中印刷字符的格式塔特征进行分析与提取,以实现文本区域精定位。
由于车身印刷不规范,印刷颜色杂乱,且车身颜色不统一,灰度化后的客车样本文本区域与周围车身背景区域之间的灰度值无确定大小关系,如图2 黄框处所示,图2(a)文字区域灰度大于周围车身灰度,而图2(b)文字区域灰度小于周围车身灰度。因此粗检测区域在进行二值化之前,应当先比较出文本灰度值与背景灰度值的大小,之后再以比较出的大小关系为赋值原则将样本转化成统一的二值图。
图2 不同灰度值大小关系的客车样本
具体的文字区域检测流程图如图3所示。
2.1.1 字符区域粗检测
为初步检测出字符区域,对样本进行预处理操作。首先采用高斯滤波的方法去除高频部分的噪声[15];其次采用加权平均的方法将样本灰度化;客车图像的采集均是由地感线圈触发拍摄获取,因此获得的样本,其客车位置基本相同,对图像进行剪切以排除外界环境的干扰因素。预处理后的样本如图4(a)所示。
图3 文本定位总体流程图
样本预处理后,利用边缘提取算子[16]结合结构元素将字符区域膨胀成一个粘连的整体连通域,之后通过字符区域的几何特征(长、宽及长宽比),结合连通域像素数以及黑白像素比筛除非文本区域;将最终得到的文本区域连通域通过最小外接矩形框框出,最后以此为蒙板在灰度图像的对应位置裁剪出来,图4(b)为最终筛选出的类文本区域的连通域。
图4 文本区域检测分图
以文本区域的外接矩形框为蒙板裁剪出的灰度图如图5(a)所示,图5(b)是对灰度样本进行边缘提取[10],然后由适当大小的结构元素膨胀得到。
图5 根据外接矩形框剪切出的灰度图及连通域图
2.1.2 灰度值大小比较
由于客车样本文本区域与周围车身背景区域灰度值大小关系不确定,为将样本转化成统一的二值图,需要先比较出两者的灰度值大小。基于上一小节检测出的类文本区域,对文本与车身背景之间的灰度值大小进行比较,计算方法如下:
对 BW11(图5(b))中的每个白色像素,对应在Icrop1(图5(a))中,求出相应位置像素的平均灰度值,然后与Icrop1 中的所有像素的平均灰度值比较。具体计算如下:
式(1)中,P表示 BW11 中逻辑值为1 的坐标集合,(i1,j1)表示BW11矩阵的坐标;
式(2)中,(i2,j2)表示Icrop1 的矩阵坐标,V(i2,j2)表示该坐标下像素对应的灰度值;Q表示符合(i2,j2)∈P的所有Icrop1矩阵坐标下的像素对应的灰度值集合。
式(3)中,sum(Q) 表示Q集合中所有像素的灰度值之和,card(Q) 表示Q集合中的元素数量;式(4)中sum(Icrop1)表示Icrop1 中所有像素的灰度值之和;m、n分别表示矩阵Icrop1 的行数与列数。
当p1 >q1 时,说明文本区域平均灰度值大于周围背景区域平均灰度值,当p1 <q1 时,说明文本区域平均灰度值小于周围背景区域平均灰度值。
2.1.3 改进二值化算法(Psauvola)
进行灰度值大小比较之后,下一步将样本转化成统一的二值图。二值图通常用于文字的扫描识别,因此字符分割与识别之前,需要对样本进行二值化。本节提出了计算二值化阈值的命题,该阈值要求能够对客车图像文字区域在复杂的自然环境背景中更好地工作,需要对光照有很强的鲁棒性且能克服大部分阴影影响。Sauvola算法[17]的输入是灰度图像,它以当前像素点为中心,根据当前像素点邻域内的灰度均值与标准方差来动态计算该像素点的阈值。Sauvola方法能够通过在图像中使用一系列灰度值来解决黑噪声[18]问题,其具体取决于对标准偏差值的影响,而且当前景与背景对比度较大时,能更有效地进行分割,Sauvola算法的表示如下:
其中,R是灰度(128),m是r×r邻域内的灰度平均值,σ是r×r邻域内的标准偏差,k设置为 0.2(默认值)。本文根据样本文字宽度设置为9×9像素的邻域像素框,k值为0.1。
由上一小节判断出文字区域与背景区域的灰度值大小,实验发现,当p1 <q1 时,采用传统的Sauvola算法进行二值化,即output=(image <T)分割效果良好;而当p1 >q1 时,即文本区域灰度值大于背景灰度值时,仅仅输出反目标区域,即output=(image >T),会使结果变得很模糊,丢失很多细节信息。
实际上,由于阈值较低,Sauvola方法未能对低对比度区域进行二值化。因此,本文倾向于在整体阈值的基础上增加阈值,以便在低对比度区域对信息进行分割。但是,如果阈值较高,则会在生成的图像上引入噪声和人工制品,需要提出具体增加阈值的方法。邻域均值[19]对阈值有很大的影响,结合车身文本的灰度特点,通过在邻域均值的基础上增加阈值。本文计算了最大均值以替换原始均值。最大均值方程如下:
式(6)中,m表示邻域均值,mmin表示邻域内最小灰度值,mx表示替换原始均值的最大均值。此时的阈值为:
式(7)中各参数与前述相同。
二值化赋值如下:
式(8)中,output表示输出的二值图像,image表示灰度图像,T是当前像素点邻域内的灰度均值与标准方差计算得到的阈值(二值化赋值准则1),Tx是改进后的阈值(二值化赋值准则2)。
为方便观察,将取得的二值图都进行了取反操作,效果如图6所示,灰度值大小关系不同的两张样本均被转化成文本区域为白色,背景区域为黑色的二值图。
图6 统一的二值图
2.1.4 文本区域精定位
为利于后续字符分割,本小节对文本区域进行进一步的精定位。刘宝龙[13]利用格式塔理论对船名标识符进行检测定位,取得不错的效果。由于车身文本与船名标识符具有的相似特征,本小节亦借鉴格式塔理论来进行文本精定位。
2.1.4.1 格式塔理论
格式塔[13]作为心理学术语,具有两种含义:一指事物的一般属性,即形式;一指事物的个别实体,即分离的整体,形式仅为其属性之一。也就是说,假使有一种经验的现象,它的每一成分都牵连到其他成分;而且每一成分之所以有其特性,是因为它和其他部分具有关系,这种现象便称为格式塔。总之,格式塔不是孤立不变的现象,而是指通体相关的完整的现象。完整的现象具有它本身完整的特性,它既不能割裂成简单的元素,同时它的特性又不包含于任何元素之内。
2.1.4.2 车身文本的格式塔特征
车身文本本质上就是一串具有特定格式的字符串文本。同时,车身文本也是一类由人类设计、印刷于车身的字符标记。因而,车身标识字符本身也常常体现出格式塔完形规则中的若干规则。具体总结如下:
(1)几何特征相似性。虽然车身文本包含的字符可能不尽相同,但是属于同一串标识的字符在高度、面积大小、宽高比和字符数量等几何特征方面应该在一个特定的范围内。
(2)投影临近性。属于同一个车身文本标识的字符的垂直投影(X轴投影)应该彼此相邻,并且这些投影之间的距离相对比较均匀。
(3)字符连续性。客车车身中属于同一个标识的字符通常被印刷于一行之中。
(4)字符低维特征相似性。虽然来自不同客车的车身文本可能在颜色、亮度等方面各不相同,但是同一个车身文本的字符经常在底层特征信息方面(如颜色、亮度和纹理等)相互表现出较高的相似性。
二值样本中的限载字符具体特征表现如下:二值样本中字符连通域个数为4~6个;数字连通域个数为两个;字符高度基本一致且在一定的大小范围内;字符均印刷为一行,水平投影的高度范围与字符高度基本一致。
根据上述特征,首先对图5(a)所示的灰度文本,从图6 所示的二值图对应位置处裁剪出粗检测区域二值图,然后根据字符格式塔特征筛选出符合条件的字符连通域,之后以所有符合条件的连通域的最小外接矩形框为蒙板,在粗检测灰度图中裁剪,最终得到的精定位字符区域如图7所示。
图7 精确定位后的字符区域灰度图
如图7所示,根据连通域个数条件筛选掉了下面的总质量标识,保留了限载字符区域。
精确定位出的文本区域二值图如图8所示,并将每个字符连通域用外接矩形框框出。
图8 目标区域的外接矩形框
观察图8 可知,数字字符具有如下特点:数字宽度占比文字宽度为0.4~0.6,高度占比为0.8~1.0。
对图8所示的二值图像,统计其每一列的白色像素数,得到垂直投影图如图9所示。
图9 目标区域二值图像垂直投影图
字符分割准则如下:
(1)设置矩形框标签。字符之间绝大多数是相互独立的,因此每个字符连通域对应一个外接矩形框,通过设置几何阈值初步筛选出特定高度及宽度范围内的矩形框,同时对矩形框按从左到右的位置进行标记。
(2)设置波谷点标签。记录等于阈值的对应列数值,并依次进行标记。对标签数2、3 对应的列数值,求出两者中间的列数值,并重新赋予标签1,此为第一个波谷点;标签数4、5对应的列数值的中间列数值对应第二个波谷点,赋予标签2;以此类推,进行波谷点标记。
(3)比较筛选出的矩形框,若宽度大于上阈值(将筛选出的矩形框的平均宽度的特定倍数作为上下阈值),可能存在粘连字符,根据标记的标签在投影图中对应标签的波谷点处进行切割,并增加标签数。
(4)若矩形框宽度低于下阈值,但其高度符合条件,可能存在断裂字符,判断连通域质心的水平距离,来决定是否进行矩形框合并,合并的同时减少标签。
(5)分析最终得到的矩形框,按照数字字符矩形框对应的标签数字规则(标签数为3~5),及该标签对应的字符矩形框宽度相比所有矩形框的平均宽度大小,筛选出数字字符,并按标签大小进行排列。
基于数字字符的几何特征及投影图分割准则自动分割[20-21]出数字部分。由于部分样本数字与文字之间垂直投影存在重叠部分,分割出的数字区域会连带极少的文字部分,通过连通域筛选进行剔除,最后得到的单个数字字符图像并进行归一化处理后如图10所示。
图10 样本分割得到的字符
车身限载字符识别的最后阶段是对提取的字符进行识别。应用于字符识别的方法是神经网络。反向传播(Back Propagation,BP)神经算法是学习的一个监督形式[22]。输入向量显示在输入层,并允许向前传播以生成输出。计算实际输出和所需输出之间的均方误差(Mean Square Error,MSE),并将其传播到各层,以便能够根据错误项按比例调整每个阶段的连接权重,从而将其最小化。网络训练的BP算法是一个迭代过程。它被反复应用于一组输入输出对,称为训练集,直到输出误差达到理想的小值。BP 神经网络包括一个输入层、一个隐藏层和一个输出层。
在本文设计的三层神经网络中,输入节点为128,输出节点为 6 个,输出单元为10(本文仅识别0 至9 的10个数字,未对文字进行识别)。用于训练BP网络工作的数据集,共150个样本,每个字符约15个样本。
在BP神经网络中,动量项设置为0.95,误差目标设置为0.000 1。一条测试集,创建约200 个字符(每个字符有20个样本)。隐藏层选择25个节点。
实验样本均采集自广西高岭收费站某ETC 车道入口处,采用USB 相机,由地感线圈触发拍摄,照片分辨率为1 024×768,图片格式为JPG。在采集的所有过往车辆样本中,选取了100张三类客车样本,100张四类客车样本,且白天与晚上的样本比例为4∶1(白天过往客车数量与夜间的比例大致在4∶1)。样本示例如图11所示。
图11 示例样本原图
所有程序都是用宏基笔记本电脑用MATLAB2018a编写,配备Intel Core i5 1.6 GHz四核处理器和8.00 GB RAM。
为验证本文算法的有效性,分析算法流程中的步骤对识别结果的影响,以及提出的二值化算法相比其他局部阈值二值化算法对最终识别结果的影响,设置如下实验:对200 张样本使用本文提出的算法流程进行识别,统计其最终识别率。分别以Bernsen、Niblack 及传统的Sauvola 二值化方法代替本文提出的二值化算法(Psauvola),其余步骤不变,对样本进行识别实验,并统计识别率。
3.3.1 样本识别结果及分析
在如图11所示的200张样本上进行识别实验,根据广西省交通部门对过往收费站的客车分类标准,若识别出的数字位于20~39区间,则判定为三类车(C);识别出的数字区间在40及以上的判定为四类车(D);其余没识别出字符,只识别出其中一个字符的或者不在上述数字区间的识别结果均判定为错误。部分识别结果如表1所示。
表1 部分识别结果
所有样本统计结果如表2。
表2 样本上的识别结果统计
从表2得到,其综合识别率为88.5%。
基于外观轮廓特征的车型识别总体识别率可以达到95%左右,但样本比例上一类车居多,占比85%以上;识别错误的样本大多为邻类车型中的边缘车型。为说明基于外观轮廓特征的车型识别对边缘车型的识别准确率,从收费站统计了某一时间段(夜间环境并不影响外观轮廓特征的获取,因此任意时间段对统计结果均不产生影响)三类、四类客车的识别结果,并与obu(车载电子单元)车型进行对比,其准确率仅有80%左右。结果表明,本文提出的针对边缘车型的识别算法,准确率提高了将近10个百分点。
3.3.2 改进二值化方法结果及分析
二值图的转化对文本区域的精定位及字符分割至关重要,对降级文本[18]拥有很好效果的Sauvola 算法进行改进后(Psauvola算法)对灰度图像样本进行处理,与经典的局部阈值算法Sauvola、Niblack、Bernsen 处理的样本进行对比,实验以示例样本中的其中一张为例,处理结果如图12所示。
从图12 可以看出,针对文字区域大于周围车身背景区域的样本,Sauvola算法未能分割出目标区域,而是错误地将目标区域轮廓分割了出来;Niblack 及Bernsen算法处理的样本存在大量的噪声,同样无法清晰地将文字区域从背景区域中区分开来;而Psauvola算法,如图12(b)所示,在文字区域的保存与区分方面明显优于其他算法。对降级文本[18]拥有很好效果的Sauvola算法用在车身文本上也表现出较好的效果,但需要针对车身文本特点进行相应改进。
图12 二值化对比图
同时,自然环境下的样本不免会受到阴影及光照等影响,这种情形下,也要求二值化算法能有效地将目标区域区分开来。为说明改进后的二值化算法(Psauvola)在光照和阴影方面的效果,本文挑选了部分较差光照环境下的样本,在Psauvola 算法及Sauvola 算法下分别得到的效果如图13所示。
图13 Psauvola算法与Sauvola算法效果对比图
如图13所示,第一行是光照有阴影的样本,第二行是Sauvola 算法处理后的样本,第三行是Psauvola 算法处理后的样本。显而易见,Psauvola算法对较差环境下的样本,在细节上相比Sauvola算法有更好的表现,在文字区域的区分上有了极大改进,为后续字符分割奠定了基础;同时Psauvola 算法对光照有更强的鲁棒性,且极大地减少了阴影的影响。
为表明Psauvola算法的有效性,使用其他二值化算法代替本文Psauvola 算法,其余步骤不变,对样本进行识别实验,具体结果如表3所示。
表3 不同二值算法的最终字符识别样本数
从表3可以看出,三种经典局部阈值算法为基础的字符识别算法,最终识别出正确结果的样本数均不足100张,远小于本文算法(Psauvola算法)的样本识别数。
字符识别的基础是完整的字符分割,而字符分割成功与否与字符区域的精确定位及二值化算法的效果紧密相连,同时本文提出的精确定位算法亦与二值化算法有极大关联,因此二值化对字符识别起着至关重要的作用。结合表3 以及图14,在优化的Sauvola 算法基础上对样本进行识别实验,其识别成功率远大于以其他三种二值化算法为基础的样本识别成功率,表明了优异的二值化算法对字符识别的重要影响。
图14 不同二值化方法的样本识别成功率对比
3.3.3 字符分割及识别结果分析
在字符区域检测阶段,能否准确检测出字符区域,对后续字符分割至关重要。样本剪切后,车身干扰因素是其上印刷的一些标识,如图15所示车身图标、总质量标识、联系电话以及其他车身标识;这些干扰区域以“格式塔”特征分析,与限载字符区域构成了两个整体,即限载字符区域作为一个整体,干扰区域是一个整体。筛选出干扰区域后最终成功检测出的仅含文字区域的样本为198 张。字符定位阶段对后续字符分割及识别几乎不产生影响。
图15 干扰标识及最终检测出的限载字符区域
数字字符的识别在很大程度上取决于分割出的孤立的字符。采用基于连通域外接矩形框及像素投影图的分割算法,从最终样本成功识别率可以看出,样本成功分割率不低于88.5%,其适用于绝大多数样本。字符识别中的大多数错误都是由分割过程中的错误引起的,表1 中识别错误的样本如图16 所示(左边为灰度样本,右边为相应二值图),对于样本中断裂严重及粘连的字符,根据连通域外接矩形框并不能分割出完整字符,且很难寻找合适的投影图波谷点。
图16 污损及粘连样本
同时对于夜间环境下的部分样本,车体受补光灯光源的影响很大,转化后的二值图如图17所示,连通域受光斑影响,连接成一块整体,采用基于连通域及投影图分割方法,亦无法分割出完整字符。
图17 夜间受灯光影响的二值化图
神经网络的字符识别阶段,在测试字符集上,最终识别率为95%。对于表1中错误地将“1”识别成“7”,虽识别结果不对,但对客车的归类并无影响,如57被识别成51,但仍是四类车范畴。因为所选样本为三类、四类客车,限载客数没有超过70 的,而数字7 只可能出现在个位数,这对分类结果并无影响,因此字符识别阶段对整体的识别率影响也不大。
面对边缘车型区分不理想的问题,本文提出了通过识别车身文本限载数字字符进行车型识别的方法,以此作为车型识别的辅助手段。该算法由文本定位、字符分割、字符识别三个阶段组成。其中在字符定位阶段,提出的Psauvola 二值化算法结合车身文本连通域的格式塔特征精确定位出了文本区域;基于外接矩形框与投影图的字符分割以及基于神经网络的字符识别得到了最终的车身文本识别结果,总体识别率为88.5%,相比基于外观轮廓特征的针对边缘车型的识别,准确率提高了将近10个百分点。因此本文提出的基于图像处理的车型识别方法在边缘车型的识别率方面有了很大的改进。对算法每一阶段的分析可以看出,有效的二值化算法对字符识别至关重要,本文提出的Psauvola二值化算法相比其他算法不仅对光照有更强的鲁棒性,有效抑制了阴影的影响,而且在细节以及目标区域的区分方面表现更好,进而在字符区域的保存、分割及定位方面相比其他算法表现优异。字符分割阶段对字符识别率影响较大,污损、粘连、受光照影响的样本均会影响分割结果;神经网络的字符识别对最终识别率影响有限。后续通过改善夜间补光效果以及改进分割算法将会提高样本识别率,字符识别阶段也可以使用模板匹配、模糊分类器等字符识别模型,以期该算法的识别率能达到实际工程应用的要求。