发明内容
解决上述技术问题,本发明提供了一种基于BP神经网络的PCB板上数字代码识别方法,
为了达到上述目的,本发明所采用的技术方案是,一种基于BP神经网络的PCB板上数字代码识别方法,包括以下步骤:
步骤1:采用摄像装置获取PCB板上的图像,并对图像进行灰度化处理,
步骤2:将步骤1处理后的图像进行二值化处理,
步骤3:对步骤2处理后的图像进行字符定位,
步骤4:对步骤3处理后的图像进行特征值增强,
步骤5:对步骤4处理后的图像进行字符分割,得到每个字符精确的高度范围,
步骤6:对步骤5处理后的所有字符精确的高度范围进行归一化处理,得到各字符的字符特征值,
步骤7:对各字符的归一化特征值送到BP神经网络(记忆)训练操作,
步骤8:把对字符中字符特征的提取作为已经训练完成的BP神经网络的输入进行识别,将字符特征与已经建立好的特征库进行对比,完成识别的过程,并将结果保存在TXT文本中。
进一步的,所述步骤1中采用加权平均法对图像的RGB三分量进行灰度值计算,计算公式如下:
(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))。
进一步的,所述步骤2中采用全局阀值法,通过调用OpenCV[3]库中cvThreshold函数得到二值化图像[3]。
进一步的,所述步骤3中采用水平投影和垂直投影相结合的方法定位出字符的位置,在水平投影定位中,一开始通过由下向上扫描。对图像的像素向着水平方向产生一个图像的投影分步,字符位置对应投影的某个峰值,波峰的宽度区域对应了字符所在的水平位置,拖尸对每个波峰检测,当测定高度同字符投影高度接近,就认为为是字符的上下边界,从而获得它的水平位置,在垂直投影定位中,不同于水平投影定位的是,它做的首先是对图像做垂直方向上的投影,通过水平的投影从左向右扫描,当超过某种跳变,就认为是字符区域,若扫描的宽度符合字符的宽高比,就认为是字符的垂直区域,通过两种扫描区域的交汇,从而的到字符在图像里的位置。
进一步的,所述步骤4中,采用两种方法实现该技术:空间域法或频率域法[6],空间域法的具体操作是通过调用OpenCV库中cvCanny函数得到特征值增强的图像。
进一步的,所述步骤5具体包括以下步骤:
步骤51:先对图像进行一个自上向下的逐行扫描,当扫描遇到第一个黑点的像素时,记录下来,然后再对图像进行一次由上向下逐行扫描直到找到第一个黑色象素,确定图像的高度范围,
步骤52:在高度范围之内,再对图像自左向右地逐列进行扫描,扫描到的第一个黑色象素作为字符分割的起始位置,记录下来,同时继续扫描,直到扫描到有一列中没有黑色象素,就认为完成了字符分割,接着重复上面步骤52,直到扫描到了图像的最右端,得到每个字符的准确的宽度范围,
步骤53:在上述每个字符的准确的宽度范围内,重复步骤51,分别进行自上而下和自下而上的逐行扫描来获取每个字符精确的高度范围。
进一步的,所述步骤6具体包括以下步骤:
步骤61:图像预处理,选择合适的阀值,使其既能去除干扰项,并将字符图像突出,
步骤62:倾斜校正,使用Hough变换法对倾斜的图像进行校正,使其尽可能处于同一水平位置,
步骤63:分割字符,通过垂直投影法将所需字符从目标区分离出来,
步骤64:归一化缩排,归一化是将每一个分割下来的字符拉伸为用有统一高度和宽度的矩形,而缩排是将这些等大小的字符缩小并排列。
进一步的,所述步骤7包括以下步骤:
步骤71:设置变量和参数,其中包括训练样本,权值矩阵,学习速率,
步骤72:初始化,给每个权值矩阵分配一个较小的随机非零向量[10],
步骤73:输入随机样本,
步骤74:对输入样本,前向计算BP神经网络每层神经元的输入信号和输出信号,
步骤75:通过时间输出和期望输出求出误差。用来判断是否满足要求,如满足要求转步骤78;不满足则跳转76,
步骤76:判断是否达到了最大的迭代次数,如果达到,转步骤78;否则反向计算每层神经元的局部梯度[11],
步骤77:根据局部梯度进行修正各个矩阵间的权值,
步骤78:判断是否训练完所有的样本,是则结束,否则转步骤73。
更进一步的,所述最大的迭代次数为10000次。
本发明通过采用上述技术方案,与现有技术相比,具有如下优点:通过本发明的方法,对于不同环境下取得的PCB板样片,能很好的将字符信息清晰识别并保存下来。本发明能够将字体小,数字多的PCB板上数字代码准确快速地识别出来,对于不同光源,亮度的室内环境也具备一定的适应性。
具体实施方式
现结合附图和具体实施方式对本发明进一步说明。
作为一个具体的实施例,如图10和图11所示,本发明的一种基于BP神经网络的PCB板上数字代码识别方法,其主要包括PCB板样片的图像预处理,对处理后的图像进行字符训练,对训练后的字符进行字符识别,再进行存储,具体的方法流程包括以下步骤:
步骤1:采用摄像装置获取PCB板上的图像,并对图像进行灰度化处理,
步骤2:将步骤1处理后的图像进行二值化处理,
步骤3:对步骤2处理后的图像进行字符定位,
步骤4:对步骤3处理后的图像进行特征值增强,
步骤5:对步骤4处理后的图像进行字符分割,得到每个字符精确的高度范围,
步骤6:对步骤5处理后的所有字符精确的高度范围进行归一化处理,得到各字符的字符特征值,
步骤7:对各字符的归一化特征值送到BP神经网络训练操作,
步骤8:把对字符中字符特征的提取作为已经训练完成的BP神经网络的输入进行识别,将字符特征与已经建立好的特征库进行对比,完成识别的过程,并将结果保存在TXT文本中。
本实施例中,所述步骤1中在RGB模型中,当满足R=G=B时,则彩色图像会表现为一种灰度图像,这时的R=G=B的值叫灰度值。一班灰度的范围在0到255之间。且只要使用一个自己存储灰度值即可[2]。灰度的方法有:分量法,最大值法,平均值法,加权平均法。这里,选择的为加权平均法,他主要将三个分量以不同的权值进行加权平均所得。由于人的眼睛在看图像的时候,对绿色更为敏感,对蓝色感觉最低。所以,采用加权平均法对图像的RGB三分量进行灰度值计算能够得到较为合理的灰度图像,计算公式如下:
(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))。灰度化前后实现效果参考图4a和图4b所示。
本实施例中,所述步骤2中,对图像灰度化,如果直接去提取字符特征,一般很困难,这就需要进一步将图像变为黑白的二色图像。这就是图像的二值化了。图像二值化的最终目的是为了得到一张字符和背景分离开来的图像。一般二值化方法是通过将各个像素灰度值与同一个阀值比较,如果像素的灰度值小于阀值,则将该值取‘0’(即黑色),否则为‘255’(即白色)。所以二值化的关键是选取一个合理的阀值。阀值的选取方法有:全局阈值法、局部阈值法和动态阈值法。本实施例采用全局阀值法,通过调用OpenCV[3]库中cvThreshold函数得到二值化图像[3]。二值化前后实现效果如图5a和图5b所示。
本实施例中,所述步骤3中采用水平投影和垂直投影相结合的方法定位出字符的位置,在水平投影定位中,一开始通过由下向上扫描。对图像的像素向着水平方向产生一个图像的投影分步,字符位置对应投影的某个峰值,波峰的宽度区域对应了字符所在的水平位置,拖尸对每个波峰检测,当测定高度同字符投影高度接近,就认为为是字符的上下边界,从而获得它的水平位置,在垂直投影定位中,不同于水平投影定位的是,它做的首先是对图像做垂直方向上的投影,通过水平的投影从左向右扫描,当超过某种跳变,就认为是字符区域,若扫描的宽度符合字符的宽高比,就认为是字符的垂直区域,通过两种扫描区域的交汇,从而的到字符在图像里的位置。图像定位前后效果如图6a和图6b所示。
本实施例中,所述步骤4中,采用两种方法实现该技术:空间域法和频率域法[6],具体操作是通过调用OpenCV库中cvCanny函数得到特征值增强的图像。特征值增强前后效果如图7a和图7b所示。
本实施例中,一般得到的图像中会包含多个数字,识别过程是通过字符的特征来进行判断,所以为了能识别各个数字而不产生混淆,必须要把字符先分割出来。所述步骤5具体包括以下步骤:
步骤51:先对图像进行一个自上向下的逐行扫描,当扫描遇到第一个黑点的像素时,记录下来,然后再对图像进行一次由上向下逐行扫描直到找到第一个黑色象素,确定图像的高度范围,
步骤52:在高度范围之内,再对图像自左向右地逐列进行扫描,扫描到的第一个黑色象素作为字符分割的起始位置,记录下来,同时继续扫描,直到扫描到有一列中没有黑色象素,就认为完成了字符分割,接着重复上面步骤52,直到扫描到了图像的最右端,得到每个字符的准确的宽度范围,
步骤53:在上述每个字符的准确的宽度范围内,重复步骤51,分别进行自上而下和自下而上的逐行扫描来获取每个字符精确的高度范围。字符分割效果如图8所示。
所述步骤6具体包括以下步骤:
步骤61:图像预处理,选择合适的阀值,使其既能去除干扰项,并将字符图像突出,在本实施例中,所做的灰度化与二值化方法一样。在图像上,可以明显的看到有蓝色的记号。通过此次预处理已达到去除干扰同时尽可能保留字符信息。
由RGB图像构成方法可以知道黑色是当R=B=G=0时的颜色,越接近这个数值,我们所看到的越黑。通过RGB的组合产生不同的颜色,因此为了能在二值化时将黑色的字符从其他颜色分离出来,在灰度化时选择可以将灰度值提高的方法,所以选择使用最大值法来进行灰度化处理。
经灰度化处理之后的图像尽管有效的将字符的灰度值与其余部位的灰度值分开,但仍不能选择太低,因为字符的灰度值并非为0,而是较为接近而已。选择合适的阀值,使其既能去除干扰项又能将字符图像出来。
步骤62:倾斜校正,使用Hough变换法对倾斜的图像进行校正,使其尽可能处于同一水平位置,由于拍摄角度的原因经常会使我们得到的图像有一定的倾斜,为了能更好的分割字符,便要对倾斜的图像进行校正,使其尽可能处于同一水平位置。对于图像的倾斜校正有Hough变换法、Radon变化法、最小乘法、两点法等多种方法。Hough变化法与Radon变换法相似,二者都有着较强的抗干扰性,但也同时有着较大的运算量,处理时间较长。
使用Hough变换的直线的基本策略是在图像中检测到的边缘点在成像空间中计算一个参考点在参数空间中的可能轨迹,并计算,给出了一个累加器的引用计数,最后选择的峰值。霍夫变换是本质上是一个表决的机制,在参数空间中的离散点进行投票,如果投票值超过某一阈值,则是有足够数量的图像点在于由参数点的直线上。此方法受噪声和线路中断。
在图像上有着一条将上下字符分开的边线,我们可以选取该部分以减小计算量,通过计算获取斜率,并调整。
步骤63:分割字符,通过垂直投影法将所需字符从目标区分离出来,图像的分割技术作为一项在数字图像处理领域中的重要技术,在各方面的研究与实践中备受重视。当我们在研究一张图片时时常会对上面某一些区域比较感兴趣,而这部分区域则被我们称作目标区域,其余的部分则是用来衬托这部分区域的背景。图像分割技术既是将我们所感兴趣的区域从背景中分离出来的方法。
字符分割技术是既是指将所需字符从目标区分离出来的技术。字符分割的准确度将会直接影响到接下来字符识别环节,因此有许多人开始对此进行研究,取得了大量的字符分割方法。像是先进行分段,然后通过使用Hough变换拟合直线的水平分割方法基于先验知识约束的垂直分割方法[6],基于垂直投影特征值的分割方法[7],基于类间方差字符分割的模板匹配算法[8],基于聚类分析的字符分割方法[9],基于最小面积法进行的字符分割[10]。
通过上面的算法可以有效的进行字符分割,但是在环境、预处理等影响下或多或少会有不同程度的噪音,对字符正确的分区有很大的影响,使得分割字符时可能存在粘连,断裂等情况,因此分割技术的进一步改进是必要的。
对于字符分割同时也是对图像分割而言,最重要的就是找到目标区域所独有的特征。就本次实验的字符而言,是由a~z26个字母和0~910个阿拉伯数字组成的。从已定位分离出来的区域来看,主要的干扰因素就是字符框,但这对每一个字符都是一样的。因此,我们可以通过有没有目标像素点即二值化后灰度值为0的点,目标像素点的多少及其排列规律来找出每一个字符的位置。
字符分割往往是通过垂直投影来实现的。字符块在垂直方向上的投影是不可避免的字符间距或字符的一个局部最小值处的间隙内,正确的分割位置的应该位于在上面的局部极小值的临近位置,这个位置应该会付和字符的格式,大小限制和其他一些条件。在理论上在使用垂直投影可以有效的分割字符。
在本次设计中由于字符区域有着上下两部分,且这两部分是等高的,因此我们进行两次水平扫描。先对上半部分进行垂直投影,进行其跳变次数的判断,由于字符所在区域会引起比无字符区域更多次跳变当检测的次数超过一定的次数时,可以认为这是字符所在区,可以确定其左边界。继续向后作当跳变次数低于一定数量时则可以认为字符宽度到此,确定其右边界。
当确定了一个字符的左右边界后,便可以开始其上下边界的确认。对这个字符以其左右边界范围内作水平投影,判断其在这个投影上是否有像素值为0的点即黑点,设置一个数组a[],将a[]中元素全部初始化为0,由上到下依次对水平投影进行判断,若有黑点则将a[]的相应位置设为1。全部扫描结束时,对a[]中的数值进行判断,若a[]中‘1’连续个数超过一定数目时,则可以认为这是字符的所属范围。因此,可以确定字符的顶部与底部。
同理继续向后作垂直投影得到上半部分的全部字符,接着进行下半部分的垂直投影。方法与上半部分一样。因此我们便可以的到全部字符。
步骤64:归一化缩排,归一化是将每一个分割下来的字符拉伸为用有统一高度和宽度的矩形,而缩排是将这些等大小的字符缩小并排列。在完成字符分割之后不能马上进行字符特征提取。在前一步骤中,所分割出来的字符大小不一,位置不定,无法使用同一的特征提取方法。因此,在这里介绍一下有关归一化的概念,和缩排的方法。
这里所说归一化是指将每一个分割下来的字符拉伸为用有统一高度和宽度的矩形,而缩排是将这些等大小的字符缩小并排列。通过这些变化方便特征的提取和提高识别的准确率。
这次设计中,我们同样使用OpenCV所提供的函数来实现图像的归一化缩排。将每一个字符重新变化为6x 7大小的矩形。归一化后的效果如图9所示。
本实施例中,对BP神经算法实现过程的描述之前,首先对神经网络中的神经元模型,BP神经元模型,前馈型神经网络结构等模型结构作出详细介绍。
1、人工神经网络概述
人工神经网络也被称为神经网络[1],它是一种模拟动物神经网络的行为特征,进行一种分布式并行地信息处理的算法模型。这种网络依靠着自身复杂的系统,通过不断地调节内部每个节点之间相互连接的关系,以实现处理信息的要求。人工神经网络对于每次的输入数据和输出数据会进行相应的分析,通过分析掌握潜在的规律,最终通过这些规律,推到出输入数据将会产生的输出结果。
神经网络的基本组成部分是神经元[5],网络的信息处理主要是由神经元之间的相互作用来实现;网络的学习和识别取决于每个神经元连接权系的动态演化过程。神经网络系统试着通过模拟人脑来实现信息处理。神经网络是一个具有高度非线性的超大规模连续时间电力系统,其最主要特征为连续时间非线性动力学、网络的全局作用、大规模并行分布处理及高度的鲁棒性和学习联想能力。它实际上是一个超大规模非线性连续时间信息处理系统,虽然单个神经元的组成和功能极其有限,但大量神经元构成的网络系统,所能实现的功能,却是极其丰富多彩的
神经网络的工作方式由学习期和工作期组成。在学习期,通过一定的学习规则将
两个神经元之间的权值改变,以实现目标函数达到最小的目的;在工作期,通过在学习期得到的权值,由网络输入得到与之对应的输出。
在神经网络的分类上,一般有:前馈网络模型、反馈网络模型、自组织网络模型与随机型网络模型四种模型
2、人工神经元模型
人工神经元是人工神经网络操作的基本信息处理单位。人工神经元的模型如图1所示,它是人工神经网络的设计基础。一般神经元是一个多输入和多输出的非线性元器件,它除了受到输入信号的影响之外,也受到神经元内部其它因素影响,所以在神经元的模型当中,还会加入一个阀值,如图1所示。从图1中,可得到的数学表达式为
yk=f(uk+bk) (2-2)
图中,f(·)为激活函数。
3、神经网络的学习
神经网络是由一系列神经元组成的。在讨论神经网络的行为之前,有必要讨论单个神经元的学习行为。
先分析一下神经元对单个样本(x,d)的学习。先假定:
当前权矢量:w=(w1,w2,...,wn,θ)T
样本输入:x=(x1,x2,...,xn,-1)T
样本输出:d
学习的核心内容是确定权值变化量Δw(t),使得
w(t+1)=w(t)+ηΔw(t)
下面介绍2个人工神经网络的学习规则:
1)Hebb学习规则[8]:是D.O.Hebb根据生物学中条件反射的机理。其主要内容是:当两个神经元都处于一种兴奋状态的时候,同这两个神经元相连的权值将得到加强。
Δwij=δvi vj
在上式中δ表示学习效率[7],vi,vj分别表示神经元i和神经j的激活值,wij表示了连接权值的变化
2)δ学习规则:
也被称为误差校正规则或者剃度方法,BP神经网络算法是它一种。
Δωij=αδivj (2-1)
上式中,△Wij是权值的改变值,α为学习效率,Vi表示当前神经元的兴奋值,δ是实际输出与期望输出的偏差值。
BP(Back Propagation)网络[9]是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。它的基本思想为:设置好一个调整精度和学习次数后,输入学习样本,使用反向传播算法不断地对网络的权值和绝对偏差值进行反复的调整训练,直到偏差值与调整精度尽可能的接近,或者达到了规定的学习次数为止,这时保存网络的权值和偏差。
图2给出一个基本的BP神经元模型,它有n个输入,每个输入都通过一个适当的权值w和下一层相连,网络输出可表示为
神经元输入:x=(x1,x2,...,xn)T
可调权值:w=(w1,w2,...,wn)T
偏移或阈值:θ
基函数:u(·)
激活函数:f(·)
前馈型神经网络结构
前馈型网络通常有一个或者多个隐层,隐层中的神经元采用S型传递函数,输出层的神经元采用线性传递函数[7]。图3就是一个典型的三层BP网络结构,
BP神经网络算法
BP神经网络算法的实现分为两个部分,学习(训练)过程和识别过程。这里,学习过程又包含了正向传播和反向传播。学习过程的目的是为了调整网络的连接权值[6],使得该网络达到一定的目标,为识别过程提供了一个对任意一个输入都能尽可能逼近期望输出的环境。
在下面推导中,我们用yi表示神经网络输出;xi表示神经网络实际输入;di表示神经网络的期望输出;Wijk表示第i层第j个神经元到第i+1层第k个神经元连接权值;Oij表示第i层第j个神经元输出;θij表示第i层第j个神经元阈值;netij表示第i层第j个神经元总输入;Ni表示第i层神经元节点数。
1.BP神经网络的前向传播计算公式
2.BP神经网络的后退算法
内容概述:如果神经元j在输出层,那么Oij表示了网络实际的计算输出,记为yj,通过yj同所期望的输出dj之间的误差反向传播来修改各权值。
误差定义:ej=dj-yj
网络的目标函数:
网络权值沿着函数梯度下降的方向进行修正:
其中,0<η<1为学习效率,对此计算,为了能够实现直接编制程序进行计算,那就必须求出ΔWijk与神经元输出之间的递推关系:
其中,
(1)求解
(2)计算δik
a)由得:
b)
i)当O(i+1)k为输出节点时:
当O(i+1)k为隐层节点时:
O(i+1)k为隐层节点时,知道节点的实际输出,但无法提前知道其正确输出,总是总的误差与隐层输出相关,同时隐层的输出必影响下一隐层的各节点的输入。
BP算法的权值调整公式为:
第i层神经元
Wijk(t+1)=Wijk(t)+ΔWijk=Wijk+ηδikOij
3.BP神经网络算法的设计要点
通过之前的步骤,我们知道BP神经网络算法的核心相关的为输入层神经元个数,样本数,初始权值,隐层的节点数,误差精度,,下面将逐一简述。
(1)输入层神经元个数
一般来讲,输入层神经元个数,同要识别的字符的个数有关,由于识别算法主要是根据不同字符的不同特征值进行识别的,所以,输入层神经元个数一般与要识别的字符的个数相同。
(2)样本数
一般来讲,指的就是要识别的字符的个数。
(3)初始权值
通过BP神经算法的公式可以了解,权值的初始值对缩短网络的训练时间很重要,从神经网络算法的净输入表达式中可得到,一般权值在[-1,1]之间取随机值。
(4)隐层的节点数
理论上己经证明[14]:有至少一个S型隐含层加上一个线性输出层的网络,能够逼近任何有理函数隐层的节点数过多的话,会导致增加网络的复杂性,从而增加了训练的时间,反之,节点数过少的话,达不到一定的训练量,或许就不能进行准确的识别。结合一些研究,一般有以下三种方法来确定:
1)Kolmogorov定理:对于N个输入节点的单隐含层的神经网络,隐含层的节点数为2N+1;
2)隐含层的估算式:如果T为模式的训练数,则隐含层的节点数为log;
3)初步确定隐含层节点数的经验公式:
n=sqrt(ni+n0)+a
式中:n为隐层节点数,ni为输入的节点,n0为输出的节点数,a为1~10之间的常数。改变n,用同一样本集训练,从中确定网络误差最小时对应的隐层节点数。
(5)误差精度
由于BP神经算法是一种反馈式的算法,为了能过提高每个图像的识别率,通过给定一个误差精度同算法产生的误差进行对比,是它的误差能够不断的逼近设定的误差精度,本系统设置的误差精度为0.5.
4.BP神经网络算法的分析与改进
BP神经网络是一种有效的系统识别方法。当采用BP神经网络的系统功能,许多参数应当考虑到,如学习速率,隐藏层数,正规化等..
(1)大的学习速率可以使算法收敛更快,但是,过大的学习率将导致振荡,这可能使该算法不收敛;
(2)准确度要求的性能指标要适当。高的准确度可能会提高性能,另一方面,过高的准确度可以使网络过度了解到,性能会反而不好。
考虑到隐藏层的数量,我们首先需要知道系统的顺序,然后选择隐藏层数附近的顺序(通常数量小于预计的),可以非常方便的进行网络学习。就像使用一个3阶曲线近似的线性函数。
BP神经算法实现主要有记忆(训练)和识别两大过程。在记忆过程当中,主要有信号的正向传播和误差的反向传播,一开始的时候,输入样本从输入层传入,经过逐层处理之后,得到一个输出值,这时,将输出层的输出值同期望的输出值进行比较,如果不符合,则进行误差的反向传播。误差的反向传播是通过将输出的误差通过隐层向输入层逐层进行反向传播,在传播的过程中,通过将误差与所要求的误差精度进行对比,以此作为改变每个单元的依据。通过信号的正向传播和误差的反向传播,不断调整每一层权值的过程,就是字符训练的过程,也就是学习记忆的过程。为避免死循环,本实验中,我们将预先设定的学习次数为10000次,也就是在这10000次训练中,如果达到了所要求得精度,会提示训练成功,若超过10000次,还没有达到要求,会提示失败。具体参考基于BP神经网路算法的流程图12所示,所述步骤7包括以下步骤:
步骤71:设置变量和参数,其中包括训练样本,权值矩阵,学习速率,
步骤72:初始化,给每个权值矩阵分配一个较小的随机非零向量[10],
步骤73:输入随机样本,
步骤74:对输入样本,前向计算BP神经网络每层神经元的输入信号和输出信号,
步骤75:通过时间输出和期望输出求出误差。用来判断是否满足要求,如满足要求转步骤78;不满足则跳转76,
步骤76:判断是否达到了最大的迭代次数(10000次),如果达到,转步骤78;否则反向计算每层神经元的局部梯度[11],
步骤77:根据局部梯度进行修正各个矩阵间的权值,
步骤78:判断是否训练完所有的样本,是则结束,否则转步骤73。
当今随着计算机技术在各个方向上的快速发展,图像处理技术和识别技术的研究也取得突飞猛进的发展,这其中依托于这两种技术在智能交通,人脸识别等各个领域的应用也得到了极大的发展,其更广阔的的应用前景受到了各个院校和企业的瞩目。
本实施例也是在依托以这两种技术之下,在提出一种基于BP神经网络的PCB板数字代码识别系统.
基于BP神经网络的PCB板上的数字代码识别[4]系统,基于visual studio2005,通过对摄像头拍摄出了PCB板样片进行图像处理,然后再结合训练字符库进行字符识别,最后将识别的结果保存的文本中。该方案对于提高企业对于质量的把控和产品的管理有着非常重要的意义。
本实施例的基于BP神经网络的PCB板的数字代码识别系统主要功能有:
1.对摄像头拍摄的PCB板图片进行图像处理,其流程为:首先进行预处理,包括图像灰度化。对灰度图像进行二值化,图像增强后,定位出代码在图像的位置,然后截取出位置部分的对象,再次进行图像的灰度化和二值化。并将图像进行字符分割,最后归一化缩排字符。整个过程的目的是为了获取图像上字符的特征值。
2.对于在图像处理后得到的特征值,通过BP神经算法的训练过程,将得到一个训练后的特征值库,这时将将图像处理后得到的特征值同训练后的特征值库进行匹配,从而识别出图像上的字符
性能指标
1.准确性
本系统对于不同的图像,由于图像在拍摄的过程中,受到光照变化、物体运动的不确定性以及其他一些可能存在的干扰,通过图像处理后,字符的识别将变得更加准确
2.简便性
系统从开始的拍摄图像到字符的识别,基本上不需要太多步骤,容易操作。
3.高效性
本系统采用的BP神经算法具有简便,执行效率快等特点,因此对于采集到的图像进行字符识别具有很高的效率。
4.稳定性
本系统在各种环境和设备误差下,依然可以保证识别的准备性。
本实施例中主要针对数字代码识别方法做了具体的介绍,详细介绍了神经网络中的神经元模型,BP神经元模型,前馈型神经网络结构等模型结构,一步步地介绍了BP神经算法在实际应用中的具体步骤。系统通过在visual studio 2005运行,经过测试证明,对于不同环境下取得的PCB板样片,只要字符部分的图像没有被遮挡且较为清晰,在大多数情况下,是可以正常识别,并能很好的将字符信息保存下来。但是由于样片数量的限制,并不能保证系统能够适用于所有情况,这就需要更近一步的加工,以适应实际的情况,是系统真正意义上适应实际需求。
本实施例的研究虽然取得了初步的成功,由于使用测试过程中,调试的相应图片数量有限,并没有实现大量数据的测试,所以如果真正放到实际运用中,需要完善的地方依然很多,需要进一步的进行研究。随着图像处理技术和BP神经算法的发展,更多依托这两种技术的应用也将快速发展。这几年,随着物联网的的起步,现今物联网最广泛的应用大概是城市智能交通系统,智能家居系统中的人脸识别等都是依托以这两种技术。我们相信,随着两种技术在更深更广的方向上的应用,未来更加优越的识别技术将被开发。
参考文献
[1]张德丰等著.MATLAB神经网络应用设计[M].北京:机械工业出版社,2009。
[2]刘海波等著.Visual C++数字图像处理技术详解[M].北京:机械工业出版社,2011。
[3]陈胜勇等著.基于OpenCV的计算机视觉技术实现[M].北京:科学出版社,2008。
[4]陈展东,白宝兴,韩成,杨华民,范静涛.数字识别算法研究[J].北京:长春理工大学学报,2010。
[5]马锐.人工神经网络原理[M].北京:机械工业出版社。
[6]肖峰.基于BP神经网络的数字图像边缘检测算法的研究[J].西安科技大学学报(计算机科学与工程学院)。
[7]高隽.人工神经网络原理及仿真实例[M].2版.北京:机械工业出版社,2007。
[8]魏海坤.神经网络结构设计的理论与方法[M].北京:中国铁道出版社,2004。
[9]孙帆,施学勤.基于MATLAB的BP神经网络设计[J].华中科技大学(计算机与数字工程),2007。
[10]juliuszL,Kulikowski.The Role of Ontoligical Models in PartternRecognition[J].自然学科进展;英文版,2006。
[11]jiewang,JunweiLu,PlantaniotisKN,etal.Venetsannopoulos FaceRecognition-Combine Generic and Specific Solutions[J].Image analysis andRecognition,2。
[12]Barroso J,Rafael A.Number Plate Reading Using Computer Vision[J],IEEE Transaction on Vehicular Technology,2001.11.。
[13]苑全兵,黄福数字字符识别算法研究[D].中北大学,2010。
[14]蒙峭缘,张远夏基于BP神经网络车牌字符识别的研究[J].玉林师范学院,2008。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。