陈至坤,潘晓娣,王福斌,,周亚罗,刘 杰
(1.河北理工大学计算机与自动控制学院,河北唐山063009;2.东北大学机械工程与自动化学院,辽宁沈阳110004)
钢筋是我国消费量最大的钢材品种之一,在钢筋定支打捆和计数时,各生产商纷纷采用先进技术来提高计数准确率和计数效率。20世纪80年代,国外开始对钢筋进行自动计数系统进行研究,其研究的重点是准确的测量和控制。国内现有的自动计数方法主要是图像识别法,将采集的图像输入计算机,通过图像处理算法进行特征提取,实现自动计数。
目前,研究人员主要采用基于面积法的钢筋计数系统和基于模板法的钢筋计数系统。这2种计数方法都有一定的可行性,但也存在一定的缺点。面积法[1]计数结果并不易于在计数的结果图像中直观地显示出来,不易对计数结果的优劣进行判断,一旦有误差出现,不易找出错误的原因;模板匹配法[2]对模板和目标物的形状有较大的依赖,自适应能力较低。
由于神经网络具有自学习、自组织、分类能力强、自适应强等特点,对于数字图像来说,采用神经网络是一种有效的手段。
钢筋识别和计数的基本原理图如图1所示。
图1 神经网络识别钢筋并计数基本原理图Fig 1 Basic principle diagram of reinforcement recognization and counting based on neural network
从现场采集到的钢筋图像包含大量的背景信息和噪声,不仅对识别带来困难,而且,在这种情况下识别没有意义。所以,在钢筋识别之前,必须对原始的钢筋图像进行数字图像处理。数字图像处理包括图像灰度化、滤波去噪、边缘检测、图像分割、形态学处理。经过一系列处理之后的图像,图像特征明显了,这样的图像作为神经网络的输入待识别图像,用来识别和计数的神经网络是已经训练好的网络,这个网络可以将待识别的钢筋图像根据神经网络的输出,做出判断得到识别的结果。
数字图像处理是模式识别的基础和关键,处理结果的好坏直接影响识别的性能,图2给出数字图像处理的流程图。
图2 数字图像处理的流程图Fig 2 Flow chart of digital image processing
钢筋原始图像是数码相机拍摄的彩色图像,彩色图像的储存占据大量的空间,所以,在对图像处理和识别时经常采用灰度图像,以加快后续的处理速度。
从摄像头获取的图像在转化过程中受电磁特性和外界条件(光照、天气等)的影响,使得图像有噪声、模糊、退化、变质等干扰,图像质量下降,不宜于图像的进一步处理。为了抑制噪声,改善图像质量,需要对图像进行去噪。中值滤波能够有效地抑制图像中的噪声,并且能保护图像的轮廓边界,不使其边界模糊。因此,本系统采用中值滤波去噪。
图像分割[3]的目的是将图像中有意义的特征或者需要应用的特征提取出来,有意义的特征和需要提取的特征与要解决的问题图像有关,问题不同,同一图像的分割方法和结果也不同,本系统采用阈值分割。
二值化后的图像,有时存在空洞、缝隙、孤立子域等问题,因此,需要数学形态学的膨胀运算子填补物体中狭小的空洞和缝隙,使物体的形状增大;腐蚀运算子简化物体的结构可以使较复杂的物体分解成几个简单部分。另外,膨胀运算子和腐蚀运算子结合运用,开运算(先腐蚀再膨胀)可以切断搭结,去掉孤立子域、毛刺等部分,闭运算(先膨胀再腐蚀)可以填充细小空洞,搭结短的间隔。本系统采用闭运算。经过数字图像处理后钢筋图像如图3。
对计算机图像识别系统而言,物体的形状是一个赖以识别的重要特征。一个图像形状和结构特征有2种形式,一种是数字特征主要包括几何属性(如,长短、面积、距离等)、统计属性和拓扑属性;另一种是由字符串和图等所表示的句法语言。
由于感兴趣的是图像的形状和结构特征,所以,其灰度信息可以忽略,常用的方法是用二值化算法把目标和背景区分开来,即将感兴趣的部分标以最大灰度值,把背景或不感兴趣的部分标以最小灰度值。
在本文钢筋识别和计数中,感兴趣的是钢筋的形状,因此,选择图像的特征必须可以表达或者描述钢筋的形状。图4为提取的钢筋轮廓图像。
图3 经过数字图像处理后的钢筋图像Fig 3 Reinforcement image after digital image processing
图4 钢筋轮廓图像Fig 4 Steel bar profile image
求单根钢筋的面积和打捆钢筋的总面积,方法原理是一样的,即图像中区域的面积就是图像中相同标记的像素数目。
因为图像采集是连续的图像,而经过图像处理后的图像是离散的数字图像,在像素点描述时,产生了误差,因此,在计算面积过程中对每一个不同像素模式上加上不同的权值,以减少误差。面积计算公式如下
对于离散的数字图像,区域的边界轮廓可理解为相邻边界像素点之间的单元连线逐段相连而成,考虑数字图像像素点(x,y)的一个8邻域,显然,在该处的边界只能有以下几种情况:正东、东北、正北、西北、正西、西南、正南和东南,对于每一种方向赋以一种码表示,就是 0,1,2,3,4,5,6,7这8个码表示下一点与前一点之间的位置关系,这些码称为方向码。例如:0表示下一点在该点的正东方向,即下一点可表示为(x+1,y),又如7表示下一点在该点的东南方向,即下一点可表示为(x-1,y-1),如图5所示。
图5 方向码的定义Fig 5 Define of the directional code
设方向链码为{a1,a2……an},定义ai在X轴上的分量为aix,在Y轴上的分量为aiy,则有以下式子成立
ai=0 时,aix=1,aiy=0;ai=1 时,aix=1,aiy=1;
ai=2 时,aix=0,aiy=1;ai=3 时,aix=-1,aiy=1;
ai=4时,aix=-1,aiy=0;ai=5时,aix=aiy=-1;
ai=6时,aix=0,aiy=1;ai=7时,aix=aiy=-1 .
设x0和y0是起始点的坐标,则边界轮廓所表示的区域的高度和宽度为
图6为BP神经网络识别钢筋并计数的流程图。
图6 BP网络应用流程图Fig 6 Flow chart of BP network application
BP神经网络结构算法描述:1)初始化网络参数,学习参数,如,设置网络初始权矩阵、学习因子等;2)提供训练模式,训练网络,直到满足学习要求;3)前向传播过程:对给定训练模式输入,计算网络的输出模式,并与期望模式比较,若有误差,则执行(4),否则,返回(2);4)后向传播过程:.计算同一层单元的误差,修正权值和阈值,返(2)。
网络结构的设计是根据输入节点和输出节点的个数与网络性能来决定的。本文特征量为单根钢筋的宽度、高度和面积、打捆钢筋的总面积4个特征量,因此,输入节点选4 个;要识别96,97,98,99,100,101,102,103 这 8 种情况下的钢筋数量,所以,将目标输出值设定为一个八维的列向量,其中以钢筋个数对应的那个位为1,其他位为0;隐含层数目没有规定,一般根据经验和实际情况而定,本文选6个隐含层。因此,本文的BP网络的结构为4—6—8,如图7所示。
图7 BP网络结构图Fig 7 Diagram of BP network structure
表1为神经网络输出的理论结果。
表1 理论的输出结果Tab 1 The theory output
Matlab神经网络工具箱[6]为神经网络系统的分析和设计提供了大量的可以直接调用的工具箱函数,利用这些神经网络工具箱可以很容易实现BP神经网络的仿真算法。
本文选取的样本数为48个,将样本图像进行图像处理后得到处理后的样本向量,再设定好对应的网络输出的目标向量,把目标向量和网络输出向量都保存在pmat文件中。设置好网络训练参数,对网络进行训练和测试,并将最佳的一个网络权值保存起来。
BP网络训练的部分Matlab程序如下
图8为神经网络的训练误差曲线图,达到目标时的步数为4492。
图8 训练误差曲线Fig 8 Error curve of training
实际的输出结果如表2所示。
表2 实际的输出结果Tab 2 The actual output result
本文选了48个样本,其中,24个样本用于训练,8个样本用于检测,16个样本用于测试。成功识别和计数的个数为13个,正确识别率为81%,在这样少的训练样本的情况下,识别率达到了80%以上,表明神经网络识别钢筋和计数方法是可行的。
本文针对捆装钢筋计数问题,基于Matlab软件、图像处理和模式识别技术实现钢筋的识别和计数。实验表明:该方法识别正确率高,有可行性。但神经网络的识别和样本数目有很大的关系,因此,样本数目的选择,网络的训练能力和预测能力之间的矛盾问题是今后研究的重点。
[1]罗 山,黄 欢.一种基于图像处理的成捆钢筋计数方法[J].微计算机应用,2008,29(6):3-4.
[2]刘国平,王洪亮,胡荣华,等.模板匹配技术在焊缝图像处理中的应用[J].焊接技术,2004,33(4):14-16.
[3]章毓晋.图象处理和分析[M].北京:电子工业出版社,2000.
[4]李 波.一种计算任意形状封闭区域面积的新方法[J].国防科技大学学报,2002,24(4):61-64.
[5]四维科技,胡小锋.图像处理与识别实用案例精选[M].北京:人民邮电出版社,2004.
[6]闻 新,周 露.MATLAB神经网络仿真与应用[M].北京:科学出版社,2003.