1.一种混合生产线上的基于机器视觉检测的三种瓶体识别方法,其特征在于,包括如下步骤:
步骤1:对原始检测图像进行图像预处理,及对原始检测图像进行一次3×3的中值滤波,剔除噪声干扰和增强图像;
步骤2:对经过步骤1预处理后的图像,提取目标模式特征矢量:
1)计算灰度均值表示目标灰度特征:
式中H,W分别表示图像的高度和宽度,g(i,j)表示坐标(i,j)处的图像像素灰度值;
2)目标几何特征提取:
a)求取特征瓶宽:
对检测对象瓶体图像水平投影曲线取梯度绝对值,得到一个长度为图像高度的一维离散信号,表示图像的水平投影灰度和,采用线性变换公式:
*
对该一维离散信号进行归一化处理,式中f(i)为归一化前的一维信号,f(i)为归一化后的一维信号,Min(f)为一维信号f(i)的最小值,Max(f)为一维信号f(i)的最大值;
在归一化的水平投影梯度绝对值曲线上,产生自适应阈值:
首先给定一个阈值向量生成步长0<τ<1,选τ=0.01,计算出阈值向量的长度L=100,然后生成阈值向量:G={(i·τ)|i=1,2...L-1};
再由阈值向量生成方差向量:
再将方差向量从小到大进行排列;
在归一化的水平投影梯度绝对值曲线中,提取对比度为0.25的阈值,将小于阈值的部分全部置为0,瓶体的上边缘线对应阈值分割后的第一个非零点横坐标,下边缘线对应阈值分割后的最后一个非零点横坐标,两者差值的绝对值为瓶宽;
b)求取特征瓶高:
对检测对象瓶体图像垂直投影曲线取梯度绝对值,得到表示图像的垂直投影灰度和的一个长度为图像宽度的一维离散信号,采取 对该一维离散信号进
行归一化;
在归一化的垂直投影梯度绝对值曲线上,产生自适应阈值:
首先给定一个阈值向量生成步长0<τ<1,τ=0.01,计算出阈值向量的长度L=100;然后生成阈值向量:G={(i·τ)|i=1,2...L-1};
再由阈值向量生成方差向量:
再将方差向量从小到大进行排列;
最后输出给定对比度的阈值,若为1则输出方差最大值所对应的阈值,为0则输出方差最小值所对应的阈值,为其他则输出特定变化量对比度的阈值;
在归一化的垂直投影梯度绝对值曲线中,提取对比度为0.25的阈值,将小于阈值的值全部置为0,经阈值分割后的垂直投影梯度绝对值曲线上的最后一个非零值所对应的横坐标为瓶底;
将归一化前垂直投影曲线平均分为两个部分,左半边是宽度W坐标在0至W/2的投影,右半边是宽度W坐标在W/2至高H部分的投影,求取左半部分的最小值点的横坐标值作为瓶体肩部高线;
瓶底与肩部高线的差的绝对值为瓶高;
c)比较前面求取的特征瓶宽和瓶高大小,取较大值为瓶高H,较小值为瓶宽W;
d)计算目标高宽比:
3)不变矩特征提取:
首先计算目标Hu矩不变量组:
对于二维离散图像灰度空间,在区域R内的像素点(x,y)的(p,q)阶原点矩、中心矩以及归一化中心距分别定义为:
p q
mpq=∑(x,y)∈R∑xy,p,q=0,1,2...
(3)
(4)
1+(p+q)/2
ηpq=μpq/μ00
(5)
到目标Hu矩不变量组如下:
M1=η20+η02
2 2
M2=(η20-η02)+4η11
2 2
M3=(η30-3η12)+(3η21-η03)
2 2
M4=(η30+η12)+(η21+η03)
2 2
M5 = (η30-3η12)(η30+η12)[(η30+η12)-3(η21+η03)]+(3η21-η03)(η21+η03)
2 2
[3(η30+η12)-(η21+η03)]
2 2
M6=(η20-η02)[(η30+η12)-(η21+η03)]+4η11(η30+η12)(η21+η03)
2 2
M7 = (3η21-η03)(η30+η12)[(η30+η12)-3(η21+η03)]+(3η21-η30)(η21+η03)
2 2
[3(η30+η12)-(η21+η03)]
得目标不变矩如下:
M1'=M1
2
M2'=M2/M1
3
M3'=M3/M1
3
M4'=M4/M1
6
M5'=M5/M1
4
M6'=M6/M1
6
M7'=M7/M1 ;
步骤3:采取单层感知器与BP神经网络组合成为分类器,采用分类器进行识别分类,依据分类器的输出结果完成目标的识别:
a)初步识别分类处理:
将目标灰度特征定义为p1、特征瓶宽定义为p2、特征瓶高定义为p3、目标高宽比定义为p4进行模糊化处理,模糊化处理后的量作为由输入层、感知层和阈值函数构成的单层感知器的输入矢量,感知层输出n与单层感知器输出a间的传递函数为:a=hardlim(n),即:当n大于或等于0时,a=1,否则a=0,
单层感知器输出a与输入的关系为:
a=hardlim(ω1,1p1+ω1,2p2+ω1,3p3+ω1,4p4+b)
式中ω1,1,ω1,2,ω1,3,ω1,4为输入矢量(p1,p2,p3,p4)从输入层到感知层对应的权值,b为阈值;
单层感知器进行初步分类,其工作流程如下:
①初始化网络:对权值w1,1,w1,2,w1,3,w1,4赋值,w1,1=0.1,w1,2=0.1,w1,3=0.2,w1,4=0.1,设-10
置阈值b为0.25,学习速率为η=0.05,学习精度为10 ,最大学习次数为30;
②输入第一个训练样本,p1=0,p2=1,p3=1,p4=0,即输入为第一种瓶体,期望输出为d(1)=1,其中d(n)代表第n个训练样本的期望输出,计算单层感知器的输出:
Sout(1)=hardlim(ω1,1p1+ω1,2p2+ω1,3p3+ω1,4p4+b),
输出误差e=d(1)-Sout(1),如果误差为0,则权值和阈值不变,否则调整权值:
w1,1=w1,1+η×e×p1,
w1,2=w1,2+η×e×p2,
w1,3=w1,3+η×e×p3,
w1,4=w1,4+η×e×p4;
调整阈值:b(2)=b+ηe;
③更新训练集样本,p1=1,p2=0,p3=0,p4=1,期望输出为d(2)=1,即输入为第二瓶体,期望输出为1;
计算单层感知器输出:
Sout(2)=hardlim(ω1,1p1+ω1,2p2+ω1,3p3+ω1,4p4+b),
输出误差e=d(2)-Sout(2);
如果误差为0,则权值和阈值不变,否则调整权值:
w1,1=w1,1+η×e×p1,
w1,2=w1,2+η×e×p2,
w1,3=w1,3+η×e×p3,
w1,4=w1,4+η×e×p4;
调整阈值:b(3)=b(2)+ηe;
④更新训练集样本,p1=0,p2=1,p3=0,p4=0,期望输出为d(3)=0,即输入为第三种瓶体,期望输出为0;
计算单层感知器输出:
Sout(3)=hardlim(ω1,1p1+ω1,2p2+ω1,3p3+ω1,4p4+b);
输出误差e=d(3)-Sout(3),如果误差为0,则权值和阈值不变,否则调整权值:
w1,1=w1,1+η×e×p1,
w1,2=w1,2+η×e×p2,
w1,3=w1,3+η×e×p3,
w1,4=w1,4+η×e×p4;
调整阈值:b(4)=b(3)+ηe
⑤更新训练样本,p1=0,p2=1,p3=1,p4=0,期望输出为d(4)=1,计算单层感知器输出:
Sout(4)=hardlim(ω1,1p1+ω1,2p2+ω1,3p3+ω1,4p4+b)
输出误差e=d(4)-Sout(4),如果误差为0,则权值和阈值不变,否则调整权值:
w1,1=w1,1+η×e×p1,
w1,2=w1,2+η×e×p2,
w1,3=w1,3+η×e×p3,
w1,4=w1,4+η×e×p4;
调整阈值:b(5)=b(4)+ηe
-10
⑥采用如上方法依次更新训练样本,训练单层感知器满足输出误差e全小于10 或者学习次数大于30时结束;
b)二次分类:
将单层感知器输出Sout与目标不变矩M1',M2′,...,M7'构成BP神经网络的输入,BP神经网络由输入层、隐含层和输出层构成,含8输入,6个隐含层神经元,3输出,输入层到隐含层的传递函数为tansig函数,隐含层到输出层的传递函数为logsig函数;
BP神经网络的输入矢量为:
Sinbp=(p1,p2,p3,p4,p5,p6,p7,p8)=(Sout,M1,M2,M3,M4,M5,M6,M7)
隐含层输出矢量:South=(q1,q2,q3,q4,q5,q6),
1 1 1
其中qi=tansig(p1w1,i+p2w2,i+...+p8w8,i-b1,i),i=1,2...6;
BP神经网络输出矢量:Soutbp=(a1,a2,a),
2 2 2
其中ai=logsig(q1w1,i+q2w2,i+...+q6w6,i-b2,i),i=1,2,3
BP神经网络工作流程如下:
第一步:初始化网络:
1 2
为输入层与隐含层的连接权值wi,j(1)、隐含层与输出层的连接权值wm,n(1)赋非零正值0.1,其中i=1,2,...,8,j=m=1,2,...,6,n=1,2,3,设置隐含层各神经元阈值b1,j(1)、输出层各神经元阈值b2,n(1)均为0.2,其中j=1,2,...,6,n=1,2,3,学习速率η为0.2,误差函数 其中k是训练样本的元素个数,k=1,2,3,
-10
设定误差精度为10 ,最大学习次数为2000;
第二步:随机选取第k输入样本及对应期望输出:
Sinbp(k)=(p1(k),p2(k),...,p8(k)),
d(k)=(a1(k),a2(k),a3(k)),
第三步:计算隐含层各神经元的输入和输出:
隐含层神经元的输入:
其中j=1,2,...,6
隐含层输出:
其中j=1,2,...,6
第四步:计算输出层的输入和输出:
输出层的输入:
其中n=1,2,3,且qm=qj
输出层输出:
其中n=1,2,3
第五步:利用网络期望输出与实际输出,计算误差函数对输出层的各神经元的偏导数δn(k):
其中:
且
此处误差函数对输出层的各神经元的偏导数为:
δn(k) = (dn(k)-Soutbpn(k))f2'(Sinon(k)) = (dn(k)-Soutbpn(k))Soutbpn(k)(1-Soutbpn(k),其中n=1,2,3
第 六 步:利 用 隐 含 层 到 输 出 层 的 连 接 权 值、输 出 层 的 δn(k) 和隐 含 层 的 输 出 计 算 误 差 函 数 对 隐 含 层 各 神 经 元 的 偏 导 数δj(k):
其中j=1,2,...,6;
第七步:利用输出层各神经元的δn(k)和隐含层各神经元的输出来修正连接权值
2
wm,n(k):
2,N+1 2,N 2,N
wm,n (k)=wm,n (k)-ηδn(k)qm(k),其中N是迭代次数,wm,n (k)表示第N次迭代
2
时wm,n(k)的值;
误差对权值的偏导数大于零时,权值向减少方向调整,反之权值向增加方向调整;
这里隐含层到输出层的权值修正量:
2
Δwm,n(1)=ηδn(1)qm(1),其中m=1,2,...,6,n=1,2,3,qm=qj;
调整隐含层到输出层的权值:
2,2 2,1 2
wm,1 (1)=wm,1 (1)-Δwm,1(1),
2,1 2
其中m=1,2,...,6,wm,1 (1)表示wm,1(1)第一次迭代值;
2,2 2,1 2
wm,2 (1)=wm,2 (1)-Δwm,2(1),
2,1 2
其中m=1,2,...,6,wm,2 (1)表示wm,2(1)第一次迭代值;
2,2 2,1 2
wm,3 (1)=wm,3 (1)-Δwm,3(1),
2,1 2
其中m=1,2,...,6,wm,3 (1)表示wm,3(1)第一次迭代值;
1
第八步:利用隐含层神经元的δj(k)和输入层各神经元的输入修正连接权值wi,j(k):
1,N+1 1,N 1,N
wi,j (k)=wi,j (k)-ηδj(k)pi(k),其中N是迭代次数,wi,j (k)表示第N次迭代
1
时wi,j(k)的值;
误差对权值的偏导数大于零时,权值应向减少方向调整,反之权值向增加方向调整;
这里输入层到隐含层的权值修正量:
1
Δwi,j(1)=ηδj(1)pi(1),其中i=1,2,...,8,j=1,2,...,6根据上式求得:
1
Δw1,j(1)=ηδj(1)p1(1),其中j=1,2,...,6
1
Δw2,j(1)=ηδj(1)p2(1),其中j=1,2,...,6
1
Δw3,j(1)=ηδj(1)p3(1),其中j=1,2,...,6
1
Δw4,j(1)=ηδj(1)p4(1),其中j=1,2,...,6
1
Δw5,j(1)=ηδj(1)p5(1),其中j=1,2,...,6
1
Δw6,j(1)=ηδj(1)p6(1),其中j=1,2,...,6
1
Δw7,j(1)=ηδj(1)p7(1),其中j=1,2,...,6
1
Δw8,j(1)=ηδj(1)p8(1),其中j=1,2,...,6
调整隐含层到输出层的权值:
1,2 1,1 1
w1,j (1)=w1,j (1)-Δw1,j(1)
1,1 1
其中j=1,2,...,6,w1,j (1)表示w1,j(1)第一次迭代值;
1,2 1,1 1
w2,j (1)=w2,j (1)-Δw2,j(1)
1,1 1
其中j=1,2,...,6,w2,j (1)表示w2,j(1)第一次迭代值;
1,2 1,1 1
w3,j (1)=w3,j (1)-Δw3,j(1)
1,1 1
其中j=1,2,...,6,w3,j (1)表示w3,j(1)第一次迭代值;
1,2 1,1 1
w4,j (1)=w4,j (1)-Δw4,j(1)
1,1 1
其中j=1,2,...,6,w4,j (1)表示w4,j(1)第一次迭代值;
1,2 1,1 1
w5,j (1)=w5,j (1)-Δw5,j(1)
1,1 1 1,2
其 中 j = 1,2,...,6,w5,j (1) 表 示 w5,j(1) 第 一 次 迭 代 值;w6,j (1) =
1,1 1
w6,j (1)-Δw6,j(1)
1,1 1 1,2
其 中 j = 1,2,...,6,w6,j (1) 表 示 w6,j(1) 第 一 次 迭 代 值;w7,j (1) =
1,1 1
w7,j (1)-Δw7,j(1)
1,1 1 1,2
其 中 j = 1,2,...,6,w7,j (1) 表 示 w7,j(1) 第 一 次 迭 代 值;w8,j (1) =
1,1 1
w8,j (1)-Δw8,j(1)
1,1 1
其中j=1,2,...,6,w8,j (1)表示w8,j(1)第一次迭代值;
第九步:计算网络误差:
计算全局误差:
当一个训练样本全部训练结束时,计算全局误差;
第十步:判断网络误差及全局误差是否满足要求:
-10
当误差达到预设精度10 或学习次数大于设定的最大次数2000,则结束算法,否则,选取下一个训练样本及对应的期望输出,返回到第三步,进入下一轮学习;
c)根据BP神经网络的输出结果识别分类,完成目标的识别,工作流程如下:
第一步:单层感知器神经网络初始化;
第二步:由目标灰度均值、特征瓶宽、特征瓶高、高宽比构成的灰度几何特征矢量作为单层感知器的输入矢量,采用训练好的单层感知器进行初分类处理;
第三步:单层感知器输出数据,若目标为第一种瓶体或第二种瓶体,则输出Sout为1;
若目标为第三种瓶体,则输出Sout为0;
第四 步:BP神 经 网络 初 始 化,设 置 各参 数,将 由Sout与 目 标 不 变矩M1',M2',M3',M4',M5',M6',M7'构成的矢量作为BP神经网络的输入矢量,采用训练好的单层感知器进行二次分类;
第五步:若BP神经网络输出矢量为100;则输出识别结果,目标为第一种瓶体;若输出矢量为010,则输出识别结果,目标为第二种瓶体;若输出矢量为001,则输出识别结果,目标为第三种瓶体;若输出矢量不同于上述3个矢量中的任一个,则判定目标不在识别范围内,结束识别过程。
2.根据权利要求1所述的一种混合生产线上的基于机器视觉检测的三种瓶体识别方法,其特征在于,所述步骤3的初步分类处理过程中,对输入矢量作如下模糊化处理:
若灰度特征p1小于200,则将p1置为0,否则置为1;
若特征瓶宽p2小于400,则将p2置为0,否则置为1;
若特征瓶高p3小于700,则将p3置为0,否则置为1;
若高宽比特征p4小于2,则将p4置为0,否则置为1;
处理后目标输入矢量为:
第一种瓶体输入矢量为:0110;
第二种瓶体输入矢量为:1001;
第三种瓶体输入矢量为:0100。
3.根据权利要求1所述的一种混合生产线上的基于机器视觉检测的三种瓶体识别方法,其特征在于,所述步骤3的初步分类处理过程中,单层感知器的输出规则如下:
若输入为第一种瓶体或第二种瓶体,则输出Sout为1,否则输出Sout为0。
4.根据权利要求1所述的一种混合生产线上的基于机器视觉检测的三种瓶体识别方法,其特征在于,三种瓶体分别为劲酒瓶、安瓿瓶和大输液瓶,所述步骤3中:
当输出Soutput为:100,表明当前的瓶体为劲酒瓶;
当输出Soutput为:010,表明当前的瓶体为安瓿瓶;
当输出Soutput:001,表明当前的瓶体为大输液瓶。