您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页VisionPro 机器视觉案例 之 药剂液面高度检测

VisionPro 机器视觉案例 之 药剂液面高度检测

来源:化拓教育网

第九篇 机器视觉案例 之 药剂液面高度检测

1.案例要求

测量出每个药剂液面高度,根据标准药剂液面高度判断是否合格,并标出液面高度和是否合格在每支药剂上。

2.实现思路

2.1 卡尺工具结合点到线距离工具测量

为确保药剂质量检测药剂是否合格,需要一个标准的药剂液面高度范围,这里规定合格药剂的液面高度范围为190(±10)。测量出每一支药剂的液面高度,与此范围进行比较,符合范围的输出“药剂合格”,不符合的如果过高输出“药剂不合格,高度过高”,过低输出“药剂不合格,高度过低”。

2.2 工具需要多次使用,使用代码循环使用

其中需要多次使用的工具:卡尺工具和点到线距离测量工具和输出文本工具在代码中循环使用。

3.使用控件

3.1 单张图像处理工具 —— CogIPOneImageTool

图像中液面的特征不明显,需通过图像算法处理图片,来增强液面的特征,并减弱其他部分的特征。

均衡操作后的图像:

3.2 模板匹配工具 —— CogPMAlignTool

要测得每一支药剂的液面高度,需要先找到每一支药剂的位置。

模板匹配的匹配区域已经原点位置:

3.3 卡尺工具 —— CogCaliperTool

找到液面及药剂底部的基准线为距离测量工具做准备。
卡尺工具一找到页面底部基准线:

3.4 创建直线工具 —— CogCreateLineTool

确定药剂底部的基准线。

3.5 点到线距离测量工具 ——CogDistancePointLineTool

根据页面点与药剂底部的基准线测得药剂液面的高度。

3.6 工具块工具 ——CogToolBlock

将需要使用的工具先拖到该工具内,根据情况创建不同级别的脚本,编写代码并发布运行。

4.代码逻辑

 	CogPMAlignTool pma = mToolBlock.Tools["CogPMAlignTool1"]as CogPMAlignTool;
    //声明定位工具
    CogCaliperTool cpt = mToolBlock.Tools["CogCaliperTool2"]as CogCaliperTool;
    //声明卡尺工具
    CogDistancePointLineTool dis = mToolBlock.Tools["CogDistancePointLineTool1"]as CogDistancePointLineTool;
    //声明求点线距离工具
    int count = pma.Results.Count;
    labels = new CogGraphicLabel[count];
    labels1 = new CogGraphicLabel[count];
    for(int i = 0;i < count;i++)
    {
      CogGraphicLabel l = new CogGraphicLabel();
      CogGraphicLabel l1 = new CogGraphicLabel();
      double x = pma.Results[i].GetPose().TranslationX;
      double y = pma.Results[i].GetPose().TranslationY;
      //卡尺工具  卡尺工具.范围.CenterX(Y)
      cpt.Region.CenterX = x;
      cpt.Region.CenterY = y;
      cpt.Run();//运行
      //测量工具
      dis.X = cpt.Results[0].Edge0.PositionX;//获取x
      dis.Y = cpt.Results[0].Edge0.PositionY;//获取y
      dis.Run();//运行
      double height = Math.Ceiling(dis.Distance);
      //向上取整,(向下取整函数为floor)
      double x1=cpt.Results[0].Edge0.PositionX;
      double y1=cpt.Results[0].Edge0.PositionY;
      l.SetXYText(x1, y1, "液面高度为" + height.ToString());
      //将double类型转换成string类型
      l.Color = CogColorConstants.Orange;
      l.Font = new Font("宋体", 10);
      labels[i] = l;
      //输出液面高度
      if(height>=180&&height<=200)
      {
        l1.SetXYText(x1, y1 - 15, "药剂合格");
        l1.Color = CogColorConstants.Green;
        l1.Font = new Font("楷体", 13);
      }else if(height<180)
      {
        l1.SetXYText(x1, y1 - 15, "药剂不合格,液面过低");
        l1.Color = CogColorConstants.Red;
        l1.Font = new Font("楷体", 13);
      }else{
        l1.SetXYText(x1, y1 - 15, "药剂不合格,液面过高");
        l1.Color = CogColorConstants.Red;
        l1.Font = new Font("楷体", 13);
      }
      labels1[i] = l1;
      //判断是否合格
    }

5.实现效果

6.知识点总结

6.1 图像处理工具

工具的特点:
①多样化的图像处理功能。
②灵活的图像处理函数。
③高效的图像处理算法。
工具每个选项的作用:
①加减常量:为像素值添加正值或者负值,生成更亮或者更暗的图像。
②灰度形态调整:腐蚀、膨胀等。
③均衡:增强图像的对比度
④扩展:以沿x轴和y轴放大图像
⑤高斯采样器:对输入图像进行子采样,以使输出图像仅包含原始像素的一小部分,并平滑图像
⑥卷积:将输入图像中的每个像素乘以一个称为核的数值矩阵,然后替换输出图像中的相应像素。

6.2 卡尺工具

搜索方向与投影方向
  • 搜索方向是卡尺工具在图像中查找边缘或边缘对时沿着的方向。它决定了工具如何遍历图像以找到感兴趣的特征。

    • 在VisionPro中,搜索方向通常用一个实心箭头来表示。
  • 投影方向是卡尺工具将二维图像区域投影成一维图像(即投影图像)时所用的方向。投影的目的是为了减少处理时间和存储,同时维持或增强边线信息。

    • 在VisionPro中,投影方向通常用一个空心箭头来表示。
    • 通过投影,卡尺工具可以更容易地检测和分析图像中的边缘特征。
注意事项
  • 在使用卡尺工具时,首先需要设置正确的搜索方向和投影方向。
  • 拖动屏幕上的矩形框到需要测量的位置时,要确保卡尺的搜索框角度与边缘平行(除非特意要测量边缘的最顶点)。
  • 根据图像中的边缘特征调整边缘模式(单个边缘模式或边缘对模式)和边缘极性(由暗到明、由明到暗或任何极性)。
  • 边缘对宽度参数的设置需要适当,以确保能够准确找到并测量所需的边缘对。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务