建立虚拟视场验证检测工艺

 

虚拟视场使用目录中的图像文件作为数据源来模拟相机,像实际相机一样进行监视或检测运行。 虚拟相机可以用在实际的设备发生故障的时候,利用保存的帧图像,模拟实际检测过程,定位和追溯视觉故障原因。

 

下面详细描述如何建立虚拟视场,插入检测算子, 编辑脚本和模拟实际视觉检测过程。本文图像源为A249.rar中的图像,下载地址:http://www.lottav.com/noing/imagebase/A249.rar目录中图像为化妆品的一个装配件,由1个塑料本地和6片磁铁片组成。需要建立检测工程检测该装配件是否缺少磁片或磁片粘连多余零件。

1.      建立虚拟视场

点击“文件->新建”菜单,显示“新建视场”窗口。

  

点击“虚拟相机”单选框,选定“目录”列表中的图像文件所在目录(注意为图像所在的直接目录,不是上层目录),点击确认按钮完成。

2.      设计检测工艺

2.1 点击控件->物体提取类->常规物体菜单,添加一个物体提取算子,该算子默认名称为”blob1”

 

2.2 选中blob1检测算子,然后双击该算子,显示物体提取算子参数设置窗口。切换到专用页。

将各种参数设置如上图。

 

2.3 切换到读数页。将cnt, cparea三个读数设置为仅计算不输出

点击确定按钮完成。

2.4点击控件->标记->文字菜单,添加一个文字标签,该算子默认名称为”label1”。选中label1文字标签,双击该控件,显示文字窗口。

将显示类型设置为”OK”。点击字体属性按钮,显示字体属性窗口。

设置文字属性,点击确定按钮。

3.       编写脚本程序

点击助理->设置菜单,将脚本启动方式设置为手动执行,检测类型设置为质量检测

点击运行->编辑脚本菜单,显示编辑脚本窗口。添加一个”CHECKDIST”的子流程。子流程脚本程序如下:

  FOR(i=1,5:1)

          FOR(j=i+1, 6)

                 SET d = dist2p(sight1.blob1.cp[i] , sight1.blob1.cp[j])

                 

                 IF (d< 263)

                         

                        var.good=false

                        //RETURN()

                        trace("distance  violation: "..d)

 

                        EXIT

                       

                 END

          END

 END

上面的语句对检测算子blob1检查到的物体之间的距离做测量,如果某两个物体之间的距离小于阈值(263),则表示磁块有吸着物体,将good变量设置为false,表示不合格。

 

”STARTUP”子流程中输入如下脚本:

 

 

sight1.shot()

sight1.blob1.inspect()

 

IF (sight1.blob1.cnt != 6)

      var.good =false

      trace("number  violation:" .. sight1.blob1.cnt )

ELSE

  

     var.good =true

 

     FOR(i=1,6)

          IF (!(sight1.blob1.area[i] >= 9000 && sight1.blob1.area[i] <=13500))

                  var.good =false

                  trace("size  violation: "..sight1.blob1.area[i] )

 

                  BREAK

          END

     END

 

     IF(var.good)

           GOTO(CHECKDIST)

     END

END

 

IF(var.good)

    sight1.label1.text="OK"

    sight1.label1.color =  RGB(0,255,0)

ELSE

    sight1.label1.text="NG"

     sight1.label1.color =  RGB(255,0,0)

END

 

 

sight1.refresh()

上面的语句按照如下步骤进行:

l         首先视场相机采图,然后blob1检测算子进行检测。

l         如果检测算子的cnt读数不等于6,直接将good变量设置为false,表示不合格。

l         如果数量与期望的一样,判断每个物体的面积大小,如果不在设定范围内,将good变量设置为false,表示不合格。

l         如果物体面积也没有问题,进入子流程,对物体之间的距离进行判断。如果不符合距离要求,将good变量设置为false,表示不合格。

l         最后根据good变量的值将label1标签的文字设置为”OK””NG”,将合格品的文字颜色设置为绿色,不合格品设置为红色。

4.      模拟检测

点击“运行->启动”菜单,显示手动触发检测窗口。

点击“下一个”按钮,触发一帧图像,并执行检测。在输出面板中的“变量”页,查看good变量的当前值。

5.      更改图像源

当图像源文件所在路径的任何一级目录发生改变的时候,虚拟相机将无法获得图像数据。点击相机->成像参数菜单,显示相机参数窗口。

点击图像源按钮,显示选择图像文件或目录窗口。

选择图像文件所在的目录后,点击确定按钮。

 

如果是从http://www.lottav.com/noing/examples.htm下载的本例程工程文件, 极大可能需要重新设置图像源