CN102896752B - 一种注塑机模具图像监测报警系统及方法 - Google Patents

一种注塑机模具图像监测报警系统及方法 Download PDF

Info

Publication number
CN102896752B
CN102896752B CN201210377493.1A CN201210377493A CN102896752B CN 102896752 B CN102896752 B CN 102896752B CN 201210377493 A CN201210377493 A CN 201210377493A CN 102896752 B CN102896752 B CN 102896752B
Authority
CN
China
Prior art keywords
image
line
background image
dynamic model
threshold
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201210377493.1A
Other languages
English (en)
Other versions
CN102896752A (zh
Inventor
任景明
彭勇刚
韦巍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201210377493.1A priority Critical patent/CN102896752B/zh
Publication of CN102896752A publication Critical patent/CN102896752A/zh
Application granted granted Critical
Publication of CN102896752B publication Critical patent/CN102896752B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Analysis (AREA)

Abstract

本发明涉及注塑机的模具监控装置及方法,旨在提供一种注塑机模具图像监测报警系统及方法。该系统包括图像采集单元、检测单元、输入模块和输出模块;图像采集单元的摄像机通过USB接口连接至检测单元的DSP;输入模块通过信号线与检测单元的DSP连接;输出模块通过信号线输出数字信号给注塑机和DSP上的指示灯;当检测到有产品残留时,指示灯亮表示报警,并禁止注塑机执行锁模动作。本发明的模具图像监测报警系统及方法通用性强,能够适用于各种类型的模具情况,并且监测正确率高。

Description

一种注塑机模具图像监测报警系统及方法
技术领域
本发明涉及注塑机的模具监控装置及方法,更详细的说,本发明涉及基于图像检测方式的注塑机模具安全检测装置及方法,实现注塑过连续安全生产。
背景技术
注塑机是一种能够加工较复杂外型的塑料制品的机器,工作原理类似于注射器,将高温熔融的塑料注入模腔里,从而成型特定形状的塑料制品。注塑机模具为不锈钢材料,模具形状各式各样,比如瓶胚、键盘类等。现在注塑机多为“一出多”,即一次能加工多个产品。
注塑机塑成产品后,需要用注塑机专用机械手抓取产品,而一次加工的多个产品,机械手抓取时常会有遗漏,如果在有产品残留的情况下注塑机锁模,会损坏模具,从而影响生产。
为解决以上问题,目前已有两个专利提出了解决方法,申请号为ZL201120395085.X的专利通过采集模腔的图像,与背景图像进行比对看是否相同来判断是否有产品残留。申请号为ZL 201110250613.7的专利通过采集模腔的图像,与预存的多张背景图像一一比较,如果与某一背景图像相同,则判断为无产品残留;如果与所有背景图像都不同,则判断为有产品残留。
但上述解决方案存在以下问题:由于每次采集图像时的光照情况有差异,而且每次开模后动模的停留位置会有几毫米到几厘米的偏差,导致待检测图像与预存的背景图像不一定完全相同,因此很容易造成误判。
发明内容
本发明要解决的技术问题是,克服现有技术中的不足,提供一种通用的注塑机模具图像监测报警系统及方法,适用于注塑机“一出多“的情况下各种形状的模具。
为解决上述问题,本发明的解决方案是:预先对背景图像进行预处理,得到动模外边框的四条线段;采集到待检测图像后,对待检测图像先进行光线补偿,消除光照的影响;再直线检测得到动模外边框的四条线段,从而得到两幅图像的缩放系数,对图像进行缩放、平移;对图像进行二值化操作,并与背景图像的二值化图像进行差分运算,对差分结果设定阈值来判断是否有产品残留。
本发明的具体实现方式包括:
提供一种注塑机模具图像监测报警系统,包括图像采集单元,该系统还包括检测单元、输入模块和输出模块;其中:
图像采集单元至少包含一个摄像机,用来采集图像并将采集到的图像发送给检测单元;所述摄像机通过USB接口连接至检测单元的DSP;
检测单元,使用DSP作为处理平台,用于检测由图像采集单元采集到的图像;
输入模块,通过信号线与检测单元的DSP连接,用于接收注塑机的开模完成信号和顶针顶出完成信号;
输出模块,用于输出检测结果,通过信号线输出数字信号给注塑机和DSP上的指示灯;当检测到有产品残留时,指示灯亮表示报警,并禁止注塑机执行锁模动作。
本发明中,图像采集单元的摄像机放置于静模上,在开模后摄像机正对着动模模腔的位置。
作为进一步的发明目的,本发明还提供了一种基于前述系统的注塑机模具图像监测报警的方法,包括下述步骤:
步骤A:离线状态下,图像采集单元采集一张无产品的空模腔的背景图像一,再采集一张产品未取走前的模腔的背景图二,并将两张背景图像发送给检测单元进行存储,检测单元对背景图像进行预处理操作;背景图像一用于与待检测图像进行差分运算,背景图二用于求取二值化阈值。
步骤B:输入模块循环等待接收注塑机的开模完成信号;
步骤C:输入模块在接收到注塑机的开模完成信号后,循环等待接收注塑机的顶针顶出完成信号;
步骤D:输入模块接收到注塑机的顶针顶出完成信号后,图像采集单元对开模后的模腔部位采集图像,并将采集到的图像发送给检测单元;
步骤E:检测单元对待检测图像进行检测;
步骤F:输出模块输出检测结果,输出数字信号给注塑机和DSP上的指示灯;当检测到有产品残留时,指示灯亮表示报警,并禁止注塑机执行锁模动作。
本发明中,所述步骤A中,检测单元对背景图像一、二进行的预处理操作具体包括:
步骤A1:对背景图像一、二分别进行滤波,消除噪声干扰,采用Opencv库的cvSmooth函数,函数原型如下:
void cvSmooth( const CvArr* src, CvArr* dst,int smoothtype=CV_GAUSSIAN,
int param1, int param2, double param3, double param4);          (1)
其中const表示修饰的形参不能在函数中修改,CvArr* 表示指向矩阵类型的指针变量,int表示整型数据,double表示双精度浮点型数据,void表示函数无返回值;src表示输入图像,分别取背景图像一、二的灰度图; dst表示输出图像;smoothtype表示平滑方法,取CV_MEDIAN表示对图像进行核大小为param1*param1的中值滤波; param1、param2分别为平滑操作的第一个、第二个参数,取param1=3,param2=3表示进行核大小为3*3的滤波; param3、param4对应高斯参数的标准差,取缺省值0即可。
步骤A2:求背景图像一的均值、方差,为后面对待检测图像进行光线补偿做准备,计算公式如下:
均值 u 0 = 1 m * n Σ x = 1 m Σ y = 1 n f ( x , y ) - - - ( 2 )
方差 σ 0 2 = 1 m * n Σ x = 1 m Σ y = 1 n ( f ( x , y ) - u 0 ) 2 - - - ( 3 )
其中f(x,y)为滤波后背景图像一的灰度图像的亮度函数,m表示图像的宽,n表示图像的高,m、n都以像素为单位,x∈[1,m],y∈[1,n];
步骤A3:分别求背景图像一、二中动模外边框的四个顶点坐标及背景图像一的外边框周长;
步骤A4:对背景图像一进行二值化处理,采用Opencv库的cvThreshold函数,函数原型如下:
double cvThreshold( CvArr* src, CvArr* dst, double threshold, double max_value, int threshold_type );(12)
其中src表示输入的灰度图像,取背景图像一滤波后的灰度图像;dst表示输出图像;threshold表示二值化阈值;max_value表示最大取值,取255;threshold_type表示阈值类型,取CV_THRESH_BINARY表示当像素值小于threshold时输出图像中该坐标的像素值被设置为0,当像素值大于threshold时输出图像中该坐标的像素值被设置为max_value。
二值化阈值threshold的选取:
对背景图二,设定步骤A3求出的动模外边框区域为ROI,寻找轮廓,函数原型如下:
int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour, int header_size=sizeof(CvContour), int mode=CV_RETR_LIST, int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) );       (13)
其中CvMemStorage*表示指向内存存储器的指针类型,CvSeq**表示指向序列指针的指针类型,CvPoint表示点的类型;image表示输入图像,取背景图二经过Canny后的二值化图;storage表示内存存储器,函数找到的轮廓都记录在这里;first_contour表示指向CvSeq*的一个指针;header_size表示contour的长度;mode表示检索模式,取mode= CV_RETR_CCOMP表示检索所有的轮廓,并将他们组织为两层;method表示边缘近似方法,取method= CV_CHAIN_APPROX_SIMPLE表示函数只保留轮廓的终点部分;offset表示偏移量,用于移动所有轮廓点,取默认值cvPoint(0,0)表示不需要移动轮廓点。
寻找出产品的轮廓后,根据式(2),遍历背景图二的原图,所有轮廓包含区域的亮度均值作为产品部分的亮度均值f1,轮廓外的区域的亮度均值作为非产品部分的亮度均值f2,取二值化阈值threshold=(f1+f2)/2。
本发明中,所述步骤E中,对待检测图像进行检测具体步骤包括:
步骤E1:对上述图像进行滤波操作,消除噪声干扰,算法同步骤A1;
步骤E2:对得到的图像进行光线补偿;
步骤E3:对得到的图像中的动模部分与背景图像中的动模部分进行对准;
步骤E4:对得到的图像进行二值化操作,算法同步骤A4,二值化阈值threshold取值相同;
步骤E5:将得到的图像与背景图像一进行差分运算,采用Opencv库的cvSub函数,函数原型如下:
void cvSub(const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL);(18)
其中src1表示被减的图像,取待检测图像的二值化图像;src2表示要减去的图像,取背景图像的二值化图像;dst表示src1与src2差分得到的图像;mask表示操作掩码,如果非空,那么dst中元素对应位置的mask中的0元素不会因此而改变,这里取mask为空;
步骤E6:对差分结果判断是否有产品残留。
本发明中,所述步骤A3中分别求背景图像一、二中动模外边框的四个顶点坐标及背景图像一的外边框周长的具体步骤包括:
步骤A31:分别对背景图像一、二滤波后的灰度图像作边缘检测,采用Opencv库的cvCanny函数,函数原型如下:
void cvCanny( const CvArr* image, CvArr* edges, double threshold1,double threshold2, int aperture_size=3 );(4)
其中image表示输入的灰度图像,分别取背景图像一、二滤波后的灰度图像;edges表示输出的边缘图像; threshold1表示边缘检测低阈值,用来控制边缘连接;threshold2表示边缘检测高阈值,用来控制强边缘的初始分割,取threshold1在35~50之间,threshold2=2.5*threshold1;aperture_size表示算子内核大小, 取缺省值3;
步骤A32:分别对背景图像一、二边缘检测后得到的图像进行Hough变换检测直线,采用Opencv库的cvHoughLines2函数,函数原型如下:
CvSeq* lines=cvHonghLines2( CvArr* image, void* line_storage, int mehtod, double rho, double theta, int threshold3, double param1 =0, double param2 =0 );(5)
其中CvSeq*表示指向序列的指针类型,void*表示一个指针类型变量,该指针为空,不指向任何类型数据;image表示输入图像,分别取背景图像一、二边缘检测后得到的图像;line-storage是指向保存结果位置的指针;hough_method表示霍夫变换变量,取hough_method= CV_HOUGH_PROBABLISTIC表示概率Hough变换;rho和theta是用来设置直线所需要的分辨率,累加平面可以看成是由rho像素和theta弧度组成的二维直方图,取rho=1,theta=CV_PI/180;threshold3表示认定为一条直线时在累计平面中必须达到的值,取threshold3=50;param1与param2是两个方法依赖参数,对于概率Hough变换,param1表示最小的直线长度,param2表示直线段之间的最大间隙,取param1=50,param2=10;返回值lines中存储了所有的线段。
步骤A33:分别对背景图像一、二经Hough变换得到的所有线段进行判断;
采用Opencv库中的cvGetSeqElem函数来得到某一条线段,函数原型如下:
CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);(6)
其中CvPoint*表示指向点的指针类型;lines中存储了所有的线段;i∈[0,line->total],lines->total表示的是线段条数;返回值line为某一条线段的信息;
根据式(6)遍历所有的线段,计算各线段的斜率、截距和长度,公式如下:
斜率 k = line [ 0 ] . y - line [ 1 ] . y line [ 0 ] . x - line [ 1 ] . x - - - ( 7 )
截距 b = line [ 0 ] . y - k * line [ 0 ] . x - - - ( 8 )
长度 l = ( line [ 0 ] . x - line [ 1 ] . x ) 2 + ( line [ 0 ] . y - line [ 1 ] . y ) 2 - - - ( 9 )
其中line[0]、line[1]分别表示线段的起点、终点,line[0].x、line[0].y分别表示起点的x轴、y轴坐标,line[1].x、line[1].y分别表示终点的x轴、y轴坐标;k表示斜率b表示截距,l表示线段长度。
设定L0斜率阈值δk1=1.0、L1斜率阈值δk2=-1.0、L2斜率阈值δk3=0.5、L3斜率阈值k4=0.5和L0坐标阈值δx0=width/4、L1坐标阈值δx1=width*3/4、L2坐标阈值δy2=height/4、L3坐标阈值δy3=height*3/4,根据阈值进行判断,判断算式如下:
{ L 0 | k > &delta; k 1 , line [ 0 ] . x < &delta; x 0 , l max }
{ L 1 | k < &delta; k 2 , line [ 0 ] . x > &delta; x 1 , l max }
{ L 2 | | k < &delta; k 3 , line [ 0 ] . y < &delta; y 2 , l max }
{ L 3 | | k < &delta; k 4 , line [ 0 ] . y < &delta; y 3 , l max } - - - ( 10 )
其中L0、L1、L2、L3分别表示动模外边框的左边界线段、右边界线段、上边界线段、下边界线段;k表示线段斜率,line[0].x表示线段起点的x轴坐标;line[0].y表示线段起点的y轴坐标;lmax表示在符合条件的线段中长度最长的线段。
得到动模外边框的四条边界线段L0、L1、L2、L3后,分别根据四条线段的斜率k和截距b,计算得到四条边所在直线的直线方程;根据四条线段的直线方程,分别联立相邻两条直线的方程,得到四个交点A0、B0、C0、D0,四个交点所围成的四边形A0B0C0D0即为动模外边框。
步骤A34:对背景图像一,四边形A0B0C0D0的周长即为动模外边框的周长a0,算式如下:
周长 a 0 = L A 0 B 0 + L B 0 C 0 + L C 0 D 0 + L D 0 A 0 - - - ( 11 )
其中分别表示四边形A0B0C0D0的A0B0、B0C0、C0D0、D0A0的边长。
本发明中,所述步骤E2中对待检测图像滤波后的图像进行光线补偿的具体步骤如下:
步骤E21:求出图像的均值u和方差σ,计算方法同步骤A2;
步骤E22:通过对待测图像的每一个像素的灰度值按下式运算:
f 1 ( x , y ) = ( f ( x , y ) - u ) * ( &sigma; 0 / &sigma; ) 3 / 2 + u 0 - - - ( 14 )
其中f(x,y)为待检测图像未补偿前的亮度函数,f1(x,y) 为待检测图像补偿后的亮度函数;u0、σ0分别为背景图像一的均值、方差,u、σ分别为待检测图像的均值、方差;m、n分别为图像的宽和高,以像素为单位,则x∈[1,m],y∈[1,n]。
本发明中,所述步骤E3中对图像中的动模部分与背景图像一中的动模部分进行对准的具体步骤包括:
步骤E31:求图像中动模外边框的四个顶点A、B、C、D的坐标及外边框的周长a,计算方法同对背景图像预处理的步骤A3;
步骤E32:对求得的周长a进行验算;
设定周长比例高阈值γ1=1.1、周长比例低阈值γ2=0.9,a0表示背景图像一的外边框周长,a表示待检测图像的外边框周长:
如果,则认为动模外边框四条线段选取正确;
如果,则认为动模外边框四条线段中有取错的,需要重新取线段,步骤如下:
如果 L 0 &prime; L 0 > &gamma; 3 L 0 &prime; L 0 < &gamma; 4 L 1 &prime; L 1 > &gamma; 3 L 1 &prime; L 1 < &gamma; 4 且  &gamma; 4 < L 2 &prime; L 2 < &gamma; 3 &gamma; 4 < L 3 &prime; L 3 < &gamma; 3 ,其中(L0,L1,L2,L3)为背景图像动模外边框的四条线段;(L'0,L'1,L'2,L'3)为待检测图像中检测到的动模外边框四条线段;γ3表示边长比例高阈值,取γ3=1.2;γ4=0.83;
说明L'2、L'3中有取错的,接着判断A点、D点坐标的变化量,设定顶点偏移y方向阈值δy为图像高度的3%~5%,如果|yA—yA0|>δy,则为L'2取错;如果|yD—yD0|>δy,则为L'3取错;
其中yA0、yD0分别为背景图像一的左上角、左下角的y轴坐标,yA、yD分别为待检测图像的左上角、左下角的y轴坐标。
如果 L 2 &prime; L 2 > &gamma; 3 L 2 &prime; L 2 < &gamma; 4 L 3 &prime; L 3 > &gamma; 3 L 3 &prime; L 3 < &gamma; 4  且, &gamma; 4 < L 1 &prime; L 1 < &gamma; 3 ,说明L'0、L'1中有取错的,接着判断A点、B点坐标的变化量,设定顶点偏移x方向阈值δx为图像宽度的3%~5%,如果|xA—xA0|>δx,则为L'0取错;如果|xB—xB0|>δx,则为L'1取错;
其中yA0、yB0分别为背景图像一的左上角、右上角的y轴坐标,yA、yB分别为待检测图像的左上角、右上角的y轴坐标。
对于上述有线段取错的情况,对于需要重新求取的边框线段,排除掉错误的那条线段,根据步骤A33、A34重新判断,得到正确的边框线段并计算出周长a;
步骤E33:计算缩放系数γ,算式如下:
&gamma; = a 0 a - - - ( 15 )
其中a0为背景图像一的动模外边框周长,a为待检测图像的动模外边框周长。
步骤E34:根据缩放系数γ对图像进行缩放、平移,公式如下:
x &prime; - x A = &gamma; * ( x - x A ) y &prime; - y A = &gamma; * ( y - y A ) - - - ( 16 )
x &prime; &prime; = x &prime; + x A 0 - x A y &prime; &prime; = y &prime; + y A 0 - y A - - - ( 17 )
其中m、n分别是图像的宽和高,以像素为单位,x、y为未缩放平移前的待检测图像中的像素点坐标,x∈[xA,m],y∈[yA,n];xA、yA分别为待检测图像中动模外边框左上角点的x坐标、y坐标;xA0、yA0分别为背景图像一中动模外边框左上角点的x坐标、y坐标;x'、y'为缩放后的图像中的像素点坐标,x''、y''为缩放平移后的图像中的像素点坐标;变换后,模具部分包含在图像中以(xA0,yA0)为左上角点,(m,n)为右下角点的矩形范围内;
步骤E35:对缩放、平移后得到的图像进行二维线性插值。
本发明中,所述步骤E4中对差分结果判断是否有产品残留的具体步骤为:
设定结果判定阈值η,大小取单个产品面积的0.5~0.7倍,判断图像以(xA0,yA0)为左上角点,(m,n)为右下角点的矩形范围内的白色点数count:如果count>η,则判断为有产品残留;如果count<η,则判断为无产品残留。
相对于现有技术,本发明的有益效果在于:
所述模具图像监测报警系统及方法通用性强,能够适用于各种类型的模具情况,并且监测正确率高。
附图说明
附图1 注塑机模具图像监测报警系统硬件装置图。
附图2 图像采集单元与模腔位置关系图。
附图3注塑机模具图像监测报警系统执行流程图。
附图4 系统检测算法流程图。
附图5 本发明实施例的图像采集单元采集到的背景图像。
附图6 本发明实施例对背景图像滤波得到的图像。
附图7 本发明实施例对背景图像Hough变换后的图像。
附图8 本发明实施例对背景图像Hough变换后提取边框四条线段的图像。
附图9 本发明实施例对背景图像提取出动模边框的图像。
附图10 本发明实施例对背景图像二值化后的图像。
附图11 本发明实施例的图像采集单元采集到的待检测图像。
附图12 本发明实施例对待检测图像滤波得到的图像。
附图13 本发明实施例对待检测图像光线补偿得到的灰度图像。
附图14 本发明实施例对待检测图像提取出动模边框的图像。
附图15 本发明实施例对待检测图像缩放、平移后的图像。
附图16 本发明实施例对待检测图像二值化得到的图像。
附图17 本发明实施例对待检测图像与背景图像差分运算得到的图像。
具体实施方式
本发明中的注塑机模具图像监测报警系统如图1所示,包括:
输入模块1-1,接收注塑机的开模完成的数字信号和顶针顶出完成的数字信号,并将接收到的信号发送给检测单元1-2。
检测单元1-2,用于检测由图像采集单元1-3采集到的图像;所述检测单元1-2采用DSP平台。
图像采集单元1-3,至少包含一个摄像机,通过USB接口连接至DSP上,用来采集图像并将采集到的图像发送给检测单元1-2。将摄像机放置于静模上,这样摄像机与模腔的位置关系如图2所示,图中2-1为开模后动模模腔的位置,2-2为摄像机摆放的位置。
输出模块1-4,输出数字信号,该信号表示检测单元1-2的检测结果,即动模中是否有残留产品。该数字信号输出给两个点,一个给DSP上的指示灯,当检测到有产品残留时,指示灯亮表示报警;一个给注塑机,当检测到有产品残留时,禁止注塑机锁模。
基于以上的硬件装置,该系统的执行流程图如图3所示,具体步骤包括:
步骤A:离线状态下图像采集单元1-3采集一张无产品的空模腔的背景图像一,再采集一张产品未取走前的模腔的背景图二,并将两张背景图像发送到检测单元1-2存储为背景图像,检测单元1-2对背景图像进行预处理。预处理操作包括对图像进行滤波处理、求出均值和方差、求出动模外边框的线段以及二值化操作。
步骤B:输入模块1-1循环等待注塑机的开模信号,如图3中3-1,;
步骤C:输入模块1-1在接收到注塑机的开模信号后,循环等待注塑机的顶针顶出完成信号,如图中3-4;
步骤D:输入模块1-1接收到注塑机的顶针顶出完成信号后,图像采集单元1-3对开模后的模腔部位采集图像,如图中3-5,并发送给检测单元1-2。
步骤E:检测单元1-2对待检测图像进行检测,如图中3-6。
步骤F:输出模块1-4将检测结果输出,如图中3-7。输出数字信号给两个点,一个给DSP上的指示灯,当检测到有产品残留时,指示灯亮表示报警;一个给注塑机,当检测到有产品残留时,禁止注塑机锁模。对于有产品残留的情况,输出模块输出检测结果给注塑机,同时该LED指示灯亮,双重显示能够更明确地反映报警信息。如果检测结果为无产品残留,将待检测图像的原图存储为背景图像,下次运行时待检测图像与新的背景图像结合进行比较。
基于以上的系统执行流程,检测算法包括:
步骤A中预处理操作的算法包括:
步骤A1:滤波操作
采用Opencv库的cvSmooth函数,对图像进行核大小为3*3的中值滤波,消除噪声干扰。函数原型如下:
void cvSmooth( const CvArr* src, CvArr* dst,int smoothtype=CV_GAUSSIAN,        int param1, int param2,double param3, double param4 );        (1)
其中src表示输入图像,分别取背景图像一、二的灰度图; dst表示输出图像; smoothtype表示平滑方法,取CV_MEDIAN表示对图像进行核大小为param1*param1的中值滤波; param1、param2分别为平滑操作的第一个、第二个参数,取param1=3,param2=3表示进行核大小为3*3的滤波; param3、param4对应高斯参数的标准差,取缺省值0即可。
步骤A2:求出均值、方差
此步骤是为之后对待测图像作光线补偿操作而准备的。
公式如下:
均值 u 0 = 1 m * n &Sigma; x = 1 m &Sigma; y = 1 n f ( x , y ) - - - ( 2 )
方差 &sigma; 0 2 = 1 m * n &Sigma; x = 1 m &Sigma; y = 1 n ( f ( x , y ) - u 0 ) 2 - - - ( 3 )
其中f(x,y)为滤波后背景图像一的灰度图像的亮度函数,m表示图像的宽,n表示图像的高,m、n都以像素为单位,x∈[1,m],y∈[1,n];
步骤A3:分别求背景图像一、二中动模外边框的四个顶点坐标及背景图像一的外边框周长
此步骤是为之后对待测图像与背景图像的对准操作、求取二值化阈值而准备的。采用Hough变换来检测直线,得到图像中的所有线段,再通过阈值判断,得到动模外边框的四条边,最后求得周长。具体算法步骤如下:
:步骤A31:分别对背景图像一、二滤波后的灰度图像作边缘检测,采用Opencv库的cvCanny函数,函数原型如下:
void cvCanny( const CvArr* image, CvArr* edges, double threshold1,double threshold2, int aperture_size=3 );(4)
其中image表示输入的灰度图像,分别取背景图像一、二滤波后的灰度图像;edges表示输出的边缘图像; threshold1表示边缘检测低阈值,用来控制边缘连接;threshold2表示边缘检测高阈值,用来控制强边缘的初始分割,取threshold1在35~50之间,threshold2=2.5*threshold1;aperture_size表示算子内核大小, 取缺省值3;
:步骤A32:分别对背景图像一、二边缘检测后得到的图像进行Hough变换检测直线,采用Opencv库的cvHoughLines2函数,函数原型如下:
CvSeq* lines=cvHonghLines2( CvArr* image, void* line_storage, int mehtod, double rho, double theta, int threshold3, double param1 =0, double param2 =0 );(5)
其中image表示输入图像,分别取背景图像一、二边缘检测后得到的图像;line-storage是指向保存结果位置的指针;hough_method表示霍夫变换变量,取hough_method= CV_HOUGH_PROBABLISTIC表示概率Hough变换;rho和theta是用来设置直线所需要的分辨率,累加平面可以看成是由rho像素和theta弧度组成的二维直方图,取rho=1,theta=CV_PI/180;threshold3表示认定为一条直线时在累计平面中必须达到的值,取threshold3=50;param1与param2是两个方法依赖参数,对于概率Hough变换,param1表示最小的直线长度,param2表示直线段之间的最大间隙,取param1=50,param2=10;返回值lines中存储了所有的线段。
:步骤A33:分别对背景图像一、二经Hough变换得到的所有线段进行判断;
采用Opencv库中的cvGetSeqElem函数来得到某一条线段,函数原型如下:
CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);(6)
其中lines中存储了所有的线段;i∈[0,lines->total表示的是线段条数;返回值line为某一条线段的信息;
根据式(6)遍历所有的线段,计算各线段的斜率、截距和长度,公式如下:
斜率 k = line [ 0 ] . y - line [ 1 ] . y line [ 0 ] . x - line [ 1 ] . x - - - ( 7 )
截距 b = line [ 0 ] . y - k * line [ 0 ] . x - - - ( 8 )
长度 l = ( line [ 0 ] . x - line [ 1 ] . x ) 2 + ( line [ 0 ] . y - line [ 1 ] . y ) 2 - - - ( 9 )
其中line[0]、line[1]分别表示线段的起点、终点,line[0].x、line[0].y分别表示起点的x轴、y轴坐标,line[1].x、line[1].y分别表示终点的x轴、y轴坐标;k表示斜率,b表示截距,l表示线段长度。
设定L0斜率阈值δk1=1.0、L1斜率阈值δk2=-1.0、L2斜率阈值δk3=0.5、L3斜率阈值δk4=0.5和L0坐标阈值δx0=width/4、L1坐标阈值δx1=width*3/4、L2坐标阈值δy2=height/4、L3坐标阈值δy3=height*3/4,根据阈值进行判断,判断算式如下:
{ L 0 | k > &delta; k 1 , line [ 0 ] . x < &delta; x 0 , l max }
{ L 1 | k < &delta; k 2 , line [ 0 ] . x > &delta; x 1 , l max }
{ L 2 | | k < &delta; k 3 , line [ 0 ] . y < &delta; y 2 , l max }
{ L 3 | | k < &delta; k 4 , line [ 0 ] . y < &delta; y 3 , l max } - - - ( 10 )
其中L0、L1、L2、L3分别表示动模外边框的左边界线段、右边界线段、上边界线段、下边界线段;k表示线段斜率,line[0].x表示线段起点的x轴坐标;line[0].y表示线段起点的y轴坐标;lmax表示在符合条件的线段中长度最长的线段;
即满足斜率大于δk1且起点的x轴坐标值小于δk0的线段中最长的为动模左边界线段L0
满足斜率小于δk2且起点的x轴坐标值大于δk1的线段中最长的为动模右边界线段L1
满足斜率绝对值小于δk3且起点的y轴坐标值小于δy2的线段中最长的为动模上边界线段L2
满足斜率绝对值小于δk4且起点的y轴坐标值大于δy3的线段中最长的为动模下边界线段L3
得到动模外边框的四条边界线段L0、L1、L2、L3后,分别根据四条线段的斜率k和截距b,计算得到四条边所在直线的直线方程;根据四条线段的直线方程,分别联立相邻两条直线的方程,得到四个交点A0、B0、C0、D0,四个交点所围成的四边形A0B0C0D0即为动模外边框。
:步骤A34:对背景图像一,四边形A0B0C0D0的周长即为动模外边框的周长a0,算式如下:
周长 a 0 = L A 0 B 0 + L B 0 C 0 + L C 0 D 0 + L D 0 A 0 - - - ( 11 )
其中分别表示四边形A0B0C0D0的A0B0、B0C0、C0D0、D0A0的边长。
此步骤是为后面为后面求取缩放系数γ做准备的。
步骤A4:对背景图像一进行二值化处理,采用Opencv库的cvThreshold函数,函数原型如下:
double cvThreshold( CvArr* src, CvArr* dst, double threshold, double max_value, int threshold_type );(12)
其中src表示输入的灰度图像,取背景图像一滤波后的灰度图像;dst表示输出图像;threshold表示二值化阈值;max_value表示最大取值,取255;threshold_type表示阈值类型,取CV_THRESH_BINARY表示当像素值小于threshold时输出图像中该坐标的像素值被设置为0,当像素值大于threshold时输出图像中该坐标的像素值被设置为max_value。
二值化阈值threshold的选取:
对背景图二,设定步骤A3求出的动模外边框区域为ROI,寻找轮廓,函数原型如下:
int cvFindContours( CvArr* image, CvMemStorage* storage, CvSeq** first_contour, int header_size=sizeof(CvContour), int mode=CV_RETR_LIST, int method=CV_CHAIN_APPROX_SIMPLE, CvPoint offset=cvPoint(0,0) );       (13)
其中image表示输入图像,取背景图二经过Canny后的二值化图;storage表示内存存储器,函数找到的轮廓都记录在这里;first_contour表示指向CvSeq*的一个指针;header_size表示contour的长度;mode表示检索模式,取mode= CV_RETR_CCOMP表示检索所有的轮廓,并将他们组织为两层;method表示边缘近似方法,取method= CV_CHAIN_APPROX_SIMPLE表示函数只保留轮廓的终点部分;offset表示偏移量,用于移动所有轮廓点,取默认值cvPoint(0,0)表示不需要移动轮廓点。
寻找出产品的轮廓后,根据式(2),遍历背景图二的原图,所有轮廓包含区域的亮度均值作为产品部分的亮度均值f1,轮廓外的区域的亮度均值作为非产品部分的亮度均值f2,取二值化阈值threshold=(f1+f2)/2。
步骤E中对待检测图像进行检测的算法如图4所示,包括:
步骤E1:对待检测图像的灰度图像进行滤波操作,采用(1)式,进行中值滤波同背景图像。
步骤E2:对滤波得到的图像进行光线补偿,减小光照对图像的影响,具体算法如下:
步骤E21:根据式(2)、(3)求出待测图像的均值u和方差σ。
步骤E22:通过对待测图像的每一个像素的灰度值按下式运算:
f 1 ( x , y ) = ( f ( x , y ) - u ) * ( &sigma; 0 / &sigma; ) 3 / 2 + u 0 - - - ( 14 )
其中f(x,y)为待检测图像未补偿前的亮度函数,f1(x,y) 为待检测图像补偿后的亮度函数;u0、σ0分别为背景图像一的均值、方差,u、σ分别为待检测图像的均值、方差;m、n分别为图像的宽和高,以像素为单位,则x∈[1,m],y∈[1,n]。
步骤E3:对光线补偿后得到的图像与背景图像滤波后的灰度图像进行对准
对待检测图像与背景图像进行对准,对准的目的是要让两幅图像中的模具部分所处的位置以及面积大小能够相同或者相近,从而消除或减小由于模具的位置或面积大小不同而引起的误差。对待检测图像进行缩放、平移的算法如下:
步骤E31:求图像中动模外边框的四个顶点A、B、C、D的坐标及外边框的周长a,计算方法同对背景图像预处理的步骤A3;
步骤E32:对求得的周长a进行验算。
设定周长比例高阈值γ1=1.1、周长比例低阈值γ2=0.9,a0表示背景图像一的外边框周长,a表示待检测图像的外边框周长:
如果,则认为动模外边框四条线段选取正确;
如果,则认为动模外边框四条线段中有取错的,需要重新取线段,步骤如下:
如果 L 0 &prime; L 0 > &gamma; 3 L 0 &prime; L 0 < &gamma; 4 L 1 &prime; L 1 > &gamma; 3 L 1 &prime; L 1 < &gamma; 4 且  &gamma; 4 < L 2 &prime; L 2 < &gamma; 3 &gamma; 4 < L 3 &prime; L 3 < &gamma; 3 ,其中(L0,L1,L2,L3)为背景图像动模外边框的四条线段;(L'0,L'1,L'2,L'3)为待检测图像中检测到的动模外边框四条线段;γ3表示边长比例高阈值,取γ3=1.2;γ4表示边长比例低阈值,取γ4=0.83;
说明L'2、L'3中有取错的,接着判断A点、D点坐标的变化量,设定顶点偏移y方向阈值δy为图像高度的3%~5%,如果|yA—yA0|>δy,则为L'2取错;如果|yD—yD0|>δy,则为L'3取错;
其中yA0、yD0分别为背景图像一的左上角、左下角的y轴坐标,yA、yD分别为待检测图像的左上角、左下角的y轴坐标。
如果 L 2 &prime; L 2 > &gamma; 3 L 2 &prime; L 2 < &gamma; 4 L 3 &prime; L 3 > &gamma; 3 L 3 &prime; L 3 < &gamma; 4  且  &gamma; 4 < L 0 &prime; L 0 < &gamma; 3 &gamma; 4 < L 1 &prime; L 1 < &gamma; 3 ,说明L'0、L'1中有取错的,接着判断A点、B点坐标的变化量,设定顶点偏移x方向阈值δx为图像宽度的3%~5%,如果|xA—xA0|>δx,则为L'0取错;如果|xB—xB0|>δx,则为L'1取错;
其中yA0、yB0分别为背景图像一的左上角、右上角的y轴坐标,yA、yB分别为待检测图像的左上角、右上角的y轴坐标。
对于上述有线段取错的情况,对于需要重新求取的边框线段,排除掉错误的那条线段,根据步骤A33、A34重新判断,得到正确的边框线段并计算出周长a;
步骤E33:计算缩放系数γ,算式如下:
&gamma; = a 0 a - - - ( 15 )
其中a0为背景图像一的动模外边框周长,a为待检测图像的动模外边框周长。
步骤E34:根据缩放系数γ对图像进行缩放、平移,公式如下;
x &prime; - x A = &gamma; * ( x - x A ) y &prime; - y A = &gamma; * ( y - y A ) - - - ( 16 )
x &prime; &prime; = x &prime; + x A 0 - x A y &prime; &prime; = y &prime; + y A 0 - y A - - - ( 17 )
其中m、n分别是图像的宽和高,以像素为单位,x、y为未缩放平移前的待检测图像中的像素点坐标,x∈[xA,m],y∈[yA,n];xA、yA分别为待检测图像中动模外边框左上角点的x坐标、y坐标;xA0、yA0分别为背景图像一中动模外边框左上角点的x坐标、y坐标;x'、y'为缩放后的图像中的像素点坐标,x''、y''为缩放平移后的图像中的像素点坐标;变换后,模具部分包含在图像中以(xA0,yA0)为左上角点,(m,n)为右下角点的矩形范围内;
步骤E35:对缩放、平移后得到的图像进行插值。
采用二维线性插值法,根据周围最接近的几个点来作线性插值来估计这个点的亮度值,具体算法如下:
遍历图像中的每个点(x,y),设f(x,y)表示该点的亮度值,如果(x,y)=0,则对以该点为中心的3*3区域进行判断,如果该点左边点的亮度值f(x-1,y)和右边点的亮度值f(x+1,y)均不为零,则该点的亮度值取其左边点和右边点的亮度均值,即;如果左边和右边的点亮度值有为零的,则如果该点上面点的亮度值f(x,y-1)和下面点的亮度值f(x,y+1)均不为零,则该点的亮度值取其上面点和下面点的亮度均值,即;如果以上两个条件都不满足,但是其上、下、左、右四个点的亮度值不全为零,则该点亮度值取其周围八个像素点亮度值的均值,即 f ( x , y ) = 1 8 [ f ( x - 1 , y - 1 ) + f ( x , y - 1 ) + f ( x + 1 , y - 1 ) + f ( x - 1 , y ) + f ( x + 1 , y ) + f ( x - 1 , y + 1 ) + f ( x , y + 1 ) + f ( x + 1 , y + 1 ) ] 。通过线性插值,由于缩放导致的某些亮度值为零的像素点就得到了填补。
步骤E4:对插值后得到的图像,采用式(12)进行二值化操作,threshold取与对背景图像相同的二值化阈值。
步骤E5:对待检测图像的二值化图像与背景图像一的二值化图像进行差分运算。
采用Opencv库的cvSub函数,函数原型如下:
void cvSub(const CvArr* src1, const CvArr* src2, CvArr* dst, const CvArr* mask=NULL);(18)
其中src1表示被减的图像,取待检测图像的二值化图像;src2表示要减去的图像,取背景图像的二值化图像;dst表示src1与src2差分得到的图像;mask表示操作掩码,如果非空,那么dst中元素对应位置的mask中的0元素不会因此而改变,这里取mask为空;
步骤E6:根据差分结果判断是否含有残留产品。设定结果判定阈值η的大小取为单个产品的面积的0.5~0.7倍。判断图像以(xA0,yA0)为左上角点,(m,n)为右下角点的矩形范围内白色像素点数count,如果count>η,则判断为有产品残留;如果count<η,则判断为无产品残留。
下面结合具体实施例,再进一步阐述本发明,
附图5为本发明实施例的图像采集单元1-3采集到的背景图像。图像采集单元1-3采集到背景图像后,发送给检测单元1-2,检测单元1-2对背景图像进行预处理操作。
预处理操作包括:
步骤A1:对背景图像的灰度图像进行滤波操作,,采用式(1),附图6为滤波后的图像;
步骤A2:对图6求取图像的均值和方差:图像的大小是400*366,根据式(2)、(3)求得图像的均值u0=118,方差σ0 2=2657。
步骤A3:求背景图像中动模外边框四条边所在直线的直线方程及外边框的周长
步骤A31:对图6进行canny边缘检测,采用式(4),取threshold1=40,threshold2=100;
步骤A32:对canny后的图进行Hough变换,采用式(5),附图7为Hough变换后的图像;
步骤A33:对图7提取动模边框的四条线段。
线段的总条数为lines->total=42条,采用式(6)遍历lines,再采用式(7)、(8)、(9)计算出各条线段的斜率k、截距b和长度l。根据式(10)进行判断,得到动模边框的四条边。附图8为仅仅标出动模边框四条边的图像。
步骤A34:四条边所在的直线方程的系数分别为 k0=4.34、 b0=-41;k1=-5.14、b1=2027.6;k2=-0.033、b2=62.1;k3=-0.051、b3=346.5。联立四条边所在的直线方程,解得四个交点坐标分别为(23,58)、(384,52)、(330,330)、(88,341),依次为左上角点、右上角点、右下角点、左下角点。顺次连接这四个点,得到表示动模边框的四边形,如附图9所示。采用式(11),得a0=1176.9。
步骤A4:对背景图像进行二值化操作,采用式(12)、(13),取二值化阈值threshold=(255+112)/2=183,附图10为对图6进行二值化的图像。
附图11为本发明实施例的图像采集单元1-3采集到的待检测图像。图像采集单元1-3采集到待检测图像后,发送给检测单元1-2,检测单元1-2对待检测图像进行检测。检测步骤包括:
步骤E1:对待检测图像的灰度图进行滤波操作,采用式(1),附图12为滤波操作后的图像;
步骤E2:对待检测图像进行光线补偿,采用式(2)、(3),求得图12的均值u=88.9, σ=44.1,采用式(14)进行光线补偿,附图13为对待检测图像光线补偿后的图像;
步骤E3:对待检测图像与背景图像进行对准,
步骤E31:求动模边框的四条边,算法同上对背景图像提取动模四条线段的算法。得到动模外边框四个顶点的坐标依次为(30,56)、(358,45)、(308,305)、(85,310),动模边框的周长a=1075.9。连接顶点得到表示动模边框的四边形,如附图14所示。
步骤E32:对求得的边长a进行验算。因为,所以认为边框四条线段求取正确。
步骤E33:计算缩放系数γ,采用式(15),得到γ=1.09。
步骤E34:对待检测图像进行缩放、平移。采用式(16)、(17), 附图15为对图14缩放、平移并进行插值后的图像。
步骤E4:对待检测图像进行二值化,采用式(12),同背景图像取二值化阈值threshold=183,附图16为对图15二值化得到的图像。
步骤E5:对待检测图像的二值图像图16与背景图像的二值图像图10进行差分运算,采用式(18),附图17为差分得到的图像。
步骤E6:对图17进行判断是否含残留产品,取η=4500*0.6=2700,遍历图像得count=3706。因为count>η,所以判断为有产品残留,检测完成。输出模块1-4将检测结果输出给注塑机,不允许注塑机锁模,同时DSP板上的LED指示灯亮,表示报警。

Claims (6)

1.一种注塑机模具图像监测报警的方法,其特征在于,包括下述步骤:
步骤A:离线状态下,图像采集单元采集一张无产品的空模腔的背景图像一,再采集一张产品未取走前的模腔的背景图二,并将两张背景图像发送给检测单元进行存储,检测单元对背景图像进行预处理操作;背景图像一用于与待检测图像进行差分运算,背景图二用于求取二值化阈值;
步骤B:输入模块循环等待接收注塑机的开模完成信号;
步骤C:输入模块在接收到注塑机的开模完成信号后,循环等待接收注塑机的顶针顶出完成信号;
步骤D:输入模块接收到注塑机的顶针顶出完成信号后,图像采集单元对开模后的模腔部位采集图像,并将采集到的图像发送给检测单元;
步骤E:检测单元对待检测图像进行检测;
步骤F:输出模块输出检测结果,输出数字信号给注塑机和DSP上的指示灯;当检测到有产品残留时,指示灯亮表示报警,并禁止注塑机执行锁模动作;
所述步骤A中,检测单元对背景图像一、二进行的预处理操作具体包括:
步骤A1:对背景图像一、二分别进行滤波,消除噪声干扰,采用Opencv库的cvSmooth函数,函数原型如下:
void cvSmooth(const CvArr*src,CvArr*dst,iht smoothtype=CV_GAUSSIAN,
int param1,int param2,double param3,double param4);         (1)
其中src表示输入图像,分别取背景图像一、二的灰度图;dst表示输出图像;
smoothtype表示平滑方法,取CV_MEDIAN表示对图像进行核大小为param1*param1的中值滤波;param1、param2分别为平滑操作的第一个、第二个参数,取param1=3,param2=3表示进行核大小为3*3的滤波;param3、param4对应高斯参数的标准差,取缺省值0即可;
步骤A2:求背景图像一的均值、方差,为后面对待检测图像进行光线补偿做准备,计算公式如下:
均值 u 0 = 1 m * n &Sigma; x = 1 m &Sigma; y = 1 n f ( x , y ) - - - ( 2 )
方差 &sigma; 0 2 = 1 m * n &Sigma; x = 1 m &Sigma; y = 1 n ( f ( x , y ) - u 0 ) 2 - - - ( 3 )
其中f(x,y)为滤波后背景图像一的灰度图像的亮度函数,m表示图像的宽,n表示图像的高,m、n都以像素为单位,x∈[1,m],y∈[1,n];
步骤A3:分别求背景图像一、二中动模外边框的四个顶点坐标及背景图像一的外边框周长;
步骤A4:对背景图像一进行二值化处理,采用Opencv库的cvThreshold函数,函数原型如下:
double cvThreshold(CvArr*src,CvArr*dst,double threshold,double max_value,intthreshold_type);                                            (12)
其中src表示输入的灰度图像,取背景图像一滤波后的灰度图像;dst表示输出图像;threshold表示二值化阈值;max_value表示最大取值,取255;threshold_type表示阈值类型,取CV_THRESH_BINARY表示当像素值小于threshold时输出图像中该坐标的像素值被设置为0,当像素值大于threshold时输出图像中该坐标的像素值被设置为max_value;
二值化阈值threshold的选取:
对背景图二,设定步骤A3求出的动模外边框区域为ROI,寻找轮廓,函数原型如下:
int cvFindContours(CvArr*image,CvMemStorage*storage,CvSeq**first_contour,intheader_size=sizeof(CvContour),int mode=CV_RETR_LIST,intmethod=CV_CHAIN_APPROX_SIMPLE,CvPoint offset=cvPoint(0,0));       (13)
其中image表示输入图像,取背景图二经过Canny后的二值化图;storage表示内存存储器,函数找到的轮廓都记录在这里;first_contour表示指向CvSeq*的一个指针;header_size表示contour的长度;mode表示检索模式,取mode=CV_RETR_CCOMP表示检索所有的轮廓,并将他们组织为两层;method表示边缘近似方法,取method=CV_CHAIN_APPROX_SIMPLE表示函数只保留轮廓的终点部分;offset表示偏移量,用于移动所有轮廓点,取默认值cvPoint(0,0)表示不需要移动轮廓点;
寻找出产品的轮廓后,根据式(2),遍历背景图二的原图,所有轮廓包含区域的亮度均值作为产品部分的亮度均值f1,轮廓外的区域的亮度均值作为非产品部分的亮度均值f2,取二值化阈值threshold=(f1+f2)/2。
2.根据权利要求1所述的方法,其特征在于,所述步骤E中,对待检测图像进行检测具体步骤包括:
步骤E1:对上述图像进行滤波操作,消除噪声干扰,算法同步骤A1;
步骤E2:对得到的图像进行光线补偿;
步骤E3:对得到的图像中的动模部分与背景图像中的动模部分进行对准;
步骤E4:对得到的图像进行二值化操作,算法同步骤A4,二值化阈值threshold取值相同;
步骤E5:将得到的图像与背景图像一进行差分运算,采用Opencv库的cvSub函数,函数原型如下:
void cvSub(const CvArr*src1,const CvArr*src2,CvArr*dst,const CvArr*mask=NULL);                                          (18)
其中src1表示被减的图像,取待检测图像的二值化图像;src2表示要减去的图像,取背景图像的二值化图像;dst表示src1与src2差分得到的图像;mask表示操作掩码,如果非空,那么dst中元素对应位置的mask中的0元素不会因此而改变,这里取mask为空;
步骤E6:对差分结果判断是否有产品残留。
3.根据权利要求1所述的方法,其特征在于,所述步骤A3中分别求背景图像一、二中动模外边框的四个顶点坐标及背景图像一的外边框周长的具体步骤包括:
步骤A31:分别对背景图像一、二滤波后的灰度图像作边缘检测,采用Opencv库的cvCanny函数,函数原型如下:
void cvCanny(const CvArr*image,CvArr*edges,double threshold1,double threshold2,int aperture_size=3);                                            (4)
其中image表示输入的灰度图像,分别取背景图像一、二滤波后的灰度图像;edges表示输出的边缘图像;threshold1表示边缘检测低阈值,用来控制边缘连接;threshold2表示边缘检测高阈值,用来控制强边缘的初始分割,取threshold1在35-50之间,threshold2=2.5*threshold1;aperture_size表示算子内核大小,取缺省值3;
步骤A32:分别对背景图像一、二边缘检测后得到的图像进行Hough变换检测直线,采用Opencv库的cvHoughLines2函数,函数原型如下:
CvSeq*lines=cvHonghLines2(CvArr*image,void*line_storage,int hough_mehtod,doublerho,double theta,int threshold3,double param1=0,double param2=0);         (5)
其中image表示输入图像,分别取背景图像一、二边缘检测后得到的图像;line-storage是指向保存结果位置的指针;hough_method表示霍夫变换变量,取hough_method=CV_HOUGH_PROBABLISTIC表示概率Hough变换;rho和theta是用来设置直线所需要的分辨率,累加平面可以看成是由tho像素和theta弧度组成的二维直方图,取rho=1,theta=CV_PI/180;threshold3表示认定为一条直线时在累计平面中必须达到的值,取threshold3=50;param1与param2是两个方法依赖参数,对于概率Hough变换,param1表示最小的直线长度,param2表示直线段之间的最大间隙,取param1=50,param2=10;返回值lines中存储了所有的线段;
步骤A33:分别对背景图像一、二经Hough变换得到的所有线段进行判断;
采用Opencv库中的cvGetSeqElem函数来得到某一条线段,函数原型如下:
CvPoint*line=(CvPoint*)cvGetSeqElem(lines,i);                   (6)
其中lines中存储了所有的线段;i∈[0,lines->total],lines->total表示的是线段条数;返回值line为某一条线段的信息;
根据式(6)遍历所有的线段,计算各线段的斜率、截距和长度,公式如下:
斜率 k = line [ 0 ] . y - line [ 1 ] . y line [ 0 ] . x - line [ 1 ] . x - - - ( 7 )
截距b=line[0].y-k*line[0].x                         (8)
长度 l = ( line [ 0 ] . x - line [ 1 ] . x ) 2 + ( line [ 0 ] . y - line [ 1 ] . y ) 2 - - - ( 9 )
其中line[0]、line[1]分别表示线段的起点、终点,line[0].x、line[0].y分别表示起点的x轴、y轴坐标,line[1].x、line[1].y分别表示终点的x轴、y轴坐标;k表示斜率,b表示截距,l表示线段长度;
设定L0斜率阈值δk1=1.0、L1斜率阈值δk2=-1.0、L2斜率阈值δk3=0.5、L3斜率阈值δk4=0.5和L0坐标阈值δx0=width/4、L1坐标阈值δx1=width*3/4、L2坐标阈值δy2=height/4、L3坐标阈值δy3=height*3/4,根据阈值进行判断,判断算式如下:
{L0|k>δk1,line[0].x<δx0,lmax},
{L1|k<δk2,line[0].x>δx1,lmax},
{L2‖k|<δk3,line[0].y<δy2,lmax},
{L3‖k|<δk4,line[0].y>δy3,lmax}                    (10)
其中L0、L1、L2、L3分别表示动模外边框的左边界线段、右边界线段、上边界线段、下边界线段;k表示线段斜率,line[0].x表示线段起点的x轴坐标;line[0].y表示线段起点的y轴坐标;lmax表示在符合条件的线段中长度最长的线段;
得到动模外边框的四条边界线段L0、L1、L2、L3后,分别根据四条线段的斜率k和截距b,计算得到四条边所在直线的直线方程;根据四条线段的直线方程,分别联立相邻两条直线的方程,得到四个交点A0、B0、C0、D0,四个交点所围成的四边形A0B0C0D0即为动模外边框;
步骤A34:对背景图像一,四边形A0B0C0D0的周长即为动模外边框的周长a0,算式如下:
周长 a 0 = L A 0 B 0 + L B 0 C 0 + L C 0 D 0 + L D 0 A 0 - - - ( 11 )
其中分别表示四边形A0B0C0D0的A0B0、B0C0、C0D0、D0A0的边长。
4.根据权利要求2所述的方法,其特征在于,所述步骤E2中对待检测图像滤波后的图像进行光线补偿的具体步骤如下:
步骤E21:求出图像的均值u和方差σ,计算方法同步骤A2;
步骤E22:对待检测图像的每一个像素的灰度值按下式运算:
f1(x,y)=(f(x,y)-u)*(σ0/σ)3/2+u0                           (14)
其中f(x,y)为待检测图像未补偿前的亮度函数,f1(x,y)为待检测图像补偿后的亮度函数;u0、σ0分别为背景图像一的均值、方差,u、σ分别为待检测图像的均值、方差;m、n分别为图像的宽和高,以像素为单位,则x∈[1,m],y∈[1,n]。
5.根据权利要求2所述的方法,其特征在于,所述步骤E3中对图像中的动模部分与背景图像一中的动模部分进行对准的具体步骤包括:
步骤E31:求图像中动模外边框的四个顶点A、B、C、D的坐标及外边框的周长a,计算方法同对背景图像预处理的步骤A3;
步骤E32:对求得的周长a进行验算;
设定周长比例高阈值γ1=1.1、周长比例低阈值γ2=0.9,a0表示背景图像一的外边框周长,a表示待检测图像的外边框周长:
如果则认为动模外边框四条线段选取正确;
如果则认为动模外边框四条线段中有取错的,需要重新取线段,步骤如下:
如果
其中(L0,L1,L2,L3)为背景图像动模外边框的四条线段;(L′0,L′1,L′2,L′3)为待检测图像中检测到的动模外边框四条线段;γ3表示边长比例高阈值,取γ3=1.2;γ4表示边长比例低阈值,取γ4=0.83;
说明L′2、L′3中有取错的,接着判断A点、D点坐标的变化量,设定顶点偏移y方向阈值δy为图像高度的3%~5%,如果|yA-yA0|>δy,则为L′2取错;如果|yD-yD0|>δy,则为L′3取错;
其中yA0、yD0分别为背景图像一的左上角、左下角的y轴坐标,yA、yD分别为待检测图像的左上角、左下角的y轴坐标;
如果说明L′0、L′1中有取错的,接着判断A点、B点坐标的变化量,设定顶点偏移x方向阈值δx为图像宽度的3%~5%,如果|xA-xA0|>δx,则为L′0取错;如果|xB-xB0|>δx,则为L′1取错;其中yA0、yB0分别为背景图像一的左上角、右上角的y轴坐标,yA、yB分别为待检测图像的左上角、右上角的y轴坐标;
对于上述有线段取错的情况,对于需要重新求取的边框线段,排除掉错误的那条线段,根据步骤A33、A34重新判断,得到正确的边框线段并计算出周长a;
步骤E33:计算缩放系数γ,算式如下:
&gamma; = a 0 a - - - ( 15 )
其中a0为背景图像一的动模外边框周长,a为待检测图像的动模外边框周长;
步骤E34:根据缩放系数γ对图像进行缩放、平移,公式如下;
x &prime; - x A = &gamma; * ( x - x A ) y &prime; - y A = &gamma; * ( y - y A ) - - - ( 16 )
x &prime; &prime; = x &prime; + x A 0 - x A y &prime; &prime; = y &prime; + y A 0 - y A - - - ( 17 )
其中m、n分别是图像的宽和高,以像素为单位,x、y为未缩放平移前的待检测图像中的像素点坐标,x∈[xA,m],y∈[yA,n];xA、yA分别为待检测图像中动模外边框左上角点的x坐标、y坐标;xA0、yA0分别为背景图像一中动模外边框左上角点的x坐标、y坐标;x′、y′为缩放后的图像中的像素点坐标,x″、y″为缩放平移后的图像中的像素点坐标;变换后,模具部分包含在图像中以(xA0,yA0)为左上角点,(m,n)为右下角点的矩形范围内;
步骤E35:对缩放、平移后得到的图像进行二维线性插值。
6.根据权利要求2所述的方法,其特征在于,所述步骤E4中对差分结果判断是否有产品残留的具体步骤为:
设定结果判定阈值η,大小取单个产品面积的0.5~0.7倍,判断图像以(xA0,yA0)为左上角点,(m,n)为右下角点的矩形范围内的白色点数count:如果count>η,则判断为有产品残留;如果count<η,则判断为无产品残留。
CN201210377493.1A 2012-10-07 2012-10-07 一种注塑机模具图像监测报警系统及方法 Expired - Fee Related CN102896752B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210377493.1A CN102896752B (zh) 2012-10-07 2012-10-07 一种注塑机模具图像监测报警系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210377493.1A CN102896752B (zh) 2012-10-07 2012-10-07 一种注塑机模具图像监测报警系统及方法

Publications (2)

Publication Number Publication Date
CN102896752A CN102896752A (zh) 2013-01-30
CN102896752B true CN102896752B (zh) 2014-08-20

Family

ID=47569384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210377493.1A Expired - Fee Related CN102896752B (zh) 2012-10-07 2012-10-07 一种注塑机模具图像监测报警系统及方法

Country Status (1)

Country Link
CN (1) CN102896752B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106934786B (zh) * 2015-12-31 2022-04-26 深圳市宝捷信科技有限公司 一种实现模具监视器的图像处理软件的方法
CN106778779A (zh) * 2016-12-12 2017-05-31 广东省智能制造研究所 一种电动注塑机模具检测方法
CN109949362B (zh) * 2019-03-01 2021-08-13 广东九联科技股份有限公司 一种物料视觉检测方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1318461A (zh) * 2000-04-18 2001-10-24 住友重机械工业株式会社 可低成本实现的模制产品脱模检测装置
CN101314251A (zh) * 2007-05-28 2008-12-03 发那科株式会社 注塑成形机
CN102303397A (zh) * 2011-08-29 2012-01-04 厦门伟迪康科技有限公司 用于模具成型机的模具图像监视方法及装置
CN202264372U (zh) * 2011-10-17 2012-06-06 辽宁民康制药有限公司 注塑机模具检测系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1318461A (zh) * 2000-04-18 2001-10-24 住友重机械工业株式会社 可低成本实现的模制产品脱模检测装置
CN101314251A (zh) * 2007-05-28 2008-12-03 发那科株式会社 注塑成形机
CN102303397A (zh) * 2011-08-29 2012-01-04 厦门伟迪康科技有限公司 用于模具成型机的模具图像监视方法及装置
CN202264372U (zh) * 2011-10-17 2012-06-06 辽宁民康制药有限公司 注塑机模具检测系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
姚俊峰,詹长明.基于位置补偿技术的模具监视系统.《计算机工程》.2010,第36卷(第9期),238-239,242页. *
注塑行业中模具监视系统的设计与开发;詹长明;《厦门大学硕士论文集》;20091106;第42,44页 *
詹长明.注塑行业中模具监视系统的设计与开发.《厦门大学硕士论文集》.2009,

Also Published As

Publication number Publication date
CN102896752A (zh) 2013-01-30

Similar Documents

Publication Publication Date Title
CN107679520B (zh) 一种适用于复杂条件下的车道线视觉检测方法
US9558412B2 (en) Vehicle exterior environment recognition device
Li et al. Nighttime lane markings recognition based on Canny detection and Hough transform
CN107895375B (zh) 基于视觉多特征的复杂道路线提取方法
CN107578012B (zh) 一种基于聚类算法选择敏感区域的驾驶辅助系统
CN110108711A (zh) 圆环侧壁缺陷的视觉检测系统
CN103824066A (zh) 一种基于视频流的车牌识别方法
CN103426164B (zh) 基于Opencv图像分析的扇贝尺寸计算方法和扇贝分拣系统
CN106384085A (zh) 一种无人车偏航角计算方法
CN106887004A (zh) 一种基于块匹配的车道线检测方法
EP3979196A1 (en) Image processing method and apparatus for target detection
US10824885B2 (en) Method and apparatus for detecting braking behavior of front vehicle of autonomous vehicle
CN112949398A (zh) 车道线检测方法、测距方法及对应装置
CN105447892A (zh) 车辆偏航角的确定方法及装置
CN110032946B (zh) 一种基于机器视觉的铝/铝泡罩包装药片识别与定位方法
CN102896752B (zh) 一种注塑机模具图像监测报警系统及方法
CN106802144A (zh) 一种基于单目视觉和车牌的车距测量方法
CN102393902A (zh) 基于h_s二维直方图和区域颜色匹配的车辆颜色检测方法
CN107563331B (zh) 一种基于几何关系的道路标志线检测方法及系统
CN112733703A (zh) 一种车辆停放状态检测方法及系统
Okran et al. Effective deep learning-based ensemble model for road crack detection
CN111332306A (zh) 一种基于机器视觉的交通道路感知辅助驾驶预警装置
CN112990049A (zh) 用于车辆自动驾驶的aeb紧急制动方法、装置
CN105335981A (zh) 一种基于图像的货物监控方法
CN116494253A (zh) 目标物体抓取位姿获取方法及机器人抓取系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140820

Termination date: 20211007