第九篇 机器视觉案例 之 药剂液面高度检测
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;
cpt.Region.CenterX = x;
cpt.Region.CenterY = y;
cpt.Run();
dis.X = cpt.Results[0].Edge0.PositionX;
dis.Y = cpt.Results[0].Edge0.PositionY;
dis.Run();
double height = Math.Ceiling(dis.Distance);
double x1=cpt.Results[0].Edge0.PositionX;
double y1=cpt.Results[0].Edge0.PositionY;
l.SetXYText(x1, y1, "液面高度为" + height.ToString());
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 卡尺工具
搜索方向与投影方向
注意事项
- 在使用卡尺工具时,首先需要设置正确的搜索方向和投影方向。
- 拖动屏幕上的矩形框到需要测量的位置时,要确保卡尺的搜索框角度与边缘平行(除非特意要测量边缘的最顶点)。
- 根据图像中的边缘特征调整边缘模式(单个边缘模式或边缘对模式)和边缘极性(由暗到明、由明到暗或任何极性)。
- 边缘对宽度参数的设置需要适当,以确保能够准确找到并测量所需的边缘对。