VsionPro中分享CogBlobTool斑点工具的使用详解

    科技2022-07-10  202

    1. 斑点工具作用

    探测并且分析图像中的二维形状,斑点通过辨别处于用户定义的灰度范围 内的不同的像素组,来查找对象。简单理解就是将一幅灰度图像,根据用户选定的灰度等级进行分割。 一般用在没有特定的图形轮廓,但是可以通过明暗提取特征的应用,比如:

    2. 工具的部署流程:

    3. 斑点工具的使用:

    添加CogBlobTool工具到Job中 打开CogBlobTool工具编辑 极性:黑色背景中检索白色特征,或者白色背景中检索黑色特征 阈值:用于分割灰度的限定值 模式: ①固定阈值:固定的阈值分割 缺点是无法自适应光线的变化引起的图像明暗变化,如下图: ②相对阈值:自动计算分割阈值 下面两张图在不改变参数的情况下依然可以准确提取白色区域 高低尾部:可以有效剔除柱状图两端的噪音像素。

    连通性处理: 区域设置: 测量尺寸限制:这里通过一个示例图像做一个查找孔的练习 ① 首先选择极性为:黑底白点,因为孔是白色的 ② 然后选择合适的阈值模式,这里采用相对阈值50%,低尾部25% ③ 运行工具,分析要提取的斑点特征:如图这里的图像已经被分割成若干个区域,接下来需要加条件筛选 ④ 连通标记、面积初步过滤: 这里我们通过面积和连通标记做初步筛选: 将ConnectivityLabel设置为包含1:表示只筛选斑点,过滤背景 将面积设置为包含200-1000:通过面积初步筛选一部分相似斑点区域 ⑤ 通过非环性特性筛选包含圆形轮廓: 上图可以看到圆形斑点的非环形值很低,这里筛选包含0-1的区域 ⑥ 完成

    3. 工具结果输出:

    代码获取结果

    public override bool GroupRun(ref string message, ref CogToolResultConstants result) { for (Int32 toolIdx = 0; toolIdx < toolGroup.Tools.Count; toolIdx++) { toolGroup.RunTool(toolGroup.Tools[toolIdx], ref message, ref result); if(toolGroup.Tools[toolIdx]is CogBlobTool) { CogBlobTool blob = (CogBlobTool) toolGroup.Tools[toolIdx]; if(blob.Results.GetBlobs().Count > 0) { double x = blob.Results.GetBlobs()[toolIdx].CenterOfMassX; double y = blob.Results.GetBlobs()[toolIdx].CenterOfMassY; double area = blob.Results.GetBlobs()[toolIdx].Area; } } }

    以上如有错误,欢迎指出,谢谢。。。

    Processed: 0.030, SQL: 8