Page 29 - 网络电信2021年11月刊上
P. 29
光 通 信
捕捉图像;软件部分利用C++编程和OpenCV视觉库实现,包含
图 4 SVM 算法仿真图
预处理、字符分割和字符识别三部分;OpenCV是跨平台视觉
库,库中包含了matchTemplate()匹配函数、ANN()和SVM
()训练函数,便于实现3种识别算法;仿真计算机的处理器为
Inteli51035G1,内存为16G。
在线光缆喷码字符识别流程如图2所示,具体如下:①将高
速摄像头获取到的图像直接传输到计算机中,此时获取到的图
像多包含纹路、椒盐等噪声,且是点阵喷码。②采用中值、双
边滤波和二值化处理后能明显降低噪声,经腐蚀膨胀处理后使
点阵喷码字符变成连续光滑字符。③在字符分割时,采用改进
的垂直分割算法,即先对光缆字符定位,经过垂直、水平分割
后能够准确定位光缆字符区域;再进行闭运算处理,使字符块
变成连通区域,对其垂直投影并分割,可得到连续字符块;最
后对每个字符块分割,得到单个字符,并通过计算每个字符的
宽度来过滤粘连、断裂字符,粘连字符可分割后再识别,断裂 的训练。
字符则归为缺损字符,标记、报警通知生产线工人进行重新喷 2.ANN算法
涂处理。 ANN算法是一种模仿生物神经网络的结构和功能的数学模
型,用于对函数进行估计或近似。ANN算法分为两部分:第一
二、字符识别算法仿真 部分是训练,第二部分是识别。训练和识别都需要字符集,本
1.模板匹配算法 文收集36种常见字符(包含10个阿拉伯数字和26个大写英文字
模板匹配算法是图像处理中最常见的匹配方法,即在一副 母)共1800个光缆喷码字符样本,对其进行预处理、分割,从
较大的原图像中寻找另一幅模板图像最匹配位置,因此可用于 中随机挑选212个样本(每个样本包含6个字符)作为测试集,
字符识别、人脸识别等。OpenCV提供了6种模板匹配算法:平 剩下的1588个样本作为训练集。仿真过程如下:首先,读入
方差匹配法、归一化平方差匹配法、相关匹配法、归一化相关 1588个训练字符,用ANN_train()函数设置参数后进行训练,
匹配法、相关系数匹配法和归一化相关系数匹配法。本文采用 生成训练文件并且记录训练时间;然后,读入212个测试字符和
其中的归一化相关系数匹配法连续快速识别字符,具体过程如 训练文件,依次识别测试字符;最后,计算识别正确率和总识
下:模板匹配算法不需要训练,所以先从训练集中选出36种字 别时间。
符(0-9、A-Z各一个)拼接成一副图像作为“原图像”,待识 神经网络结构可分为三层:输入层、隐藏层和输出层,
别的字符作为模板依次与原图像进行模板匹配,然后由OpenCV 每一层神经元收到上一层神经元的输入并传输到下一层神经
中的matchTemplate()函数返回每个模板最佳匹配的x坐标, 元。隐藏层数量是影响训练时间和识别率的因素之一 。神经
[8]
再与原图像中实际字符x坐标进行比对,若两坐标相等则识别正 网络迭代终止条件分为最大迭代次数和迭代误差,其中最大迭
确,否则识别错误。将此方法编程实现,并对212个测试样本进 代次数影响较大,其它参数经仿真后对识别率影响不大,这
行识别测试。这种算法的识别率为78.77%,识别速度为2.14s。 里不再赘述。本文采用数值法分别对ANN_train()函数中的
模板匹配识别率不高,且容易把相近字符混肴,如“Q”和 InputArraylayersizes(隐藏层层数)和Max_counts(最大迭
“0”,“1”和“I”等。模板匹配的字符识别率与模板的选 代次数)进行仿真,隐藏层层数从14递增到203,最大迭代次数
择密切相关,但是光缆表面喷码并不都是标准字符,往往会有 从10递增到1500,迭代误差设置为默认值,并把结果绘制成曲
瑕疵,所选模板不能代表所有样本字符的特征。若字符出现旋 线图,如图3所示。可以看出,随着隐藏层层数的增加,ANN训
转、缺损的情况,模板匹配字符识别率会大大降低。但相较于 练时间持续增加但是算法的识别率并没有一直增加,在隐藏层
ANN和SVM等算法,模板匹配算法不需要提前进行大量样本字符 个数为100时取得最大值,然后降低,即隐藏层层数偏小或者偏
大都会使ANN识别率下降。随着最大迭代次数的增加,ANN的训
图 3 ANN 算法仿真图 练时间也在线性增加,但是识别率在最大迭代次数增加到400后
开始趋于平缓,此时识别率也已经达到95%以上,后续迭代次数
增加引起的训练时间的增加并不能大幅提高识别率。
OpenCV提供了2种训练方法,反向传播算法和弹性反向传
播算法。反向传播算法分为激励传播和权重更新两步,弹性反
向传播算法则是对反向传播算法的学习率和梯度弥散进行了改
良。根据上述对隐藏层层数和最大迭代次数的仿真分析,将
ANN_train()函数中隐藏层层数设置为100,最大迭代次数设
置为1200,训练方法分别选择反向传播算法和弹性反向传播算
(a)隐藏层层数仿真 (b)最大迭代次数仿真 法,其它参数设置为默认值,仿真结果为:弹性反向传播算法
38 网络电信 二零二一年十一月