如果需要了解其他图像处理的文章,请移步小编的GitHub地址

  传送门:请点击我

  如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice

  VisionPro有很多的示例和算子,这里再展示一个最新出的算子Bead Inspect Tool。估计理解这个算子需要有一定的基础,但是使用的话其实到大可不必。我自己的笔记不会按照顺序一一展示出来的,也许那个文章先OK,我会先release出来的。 其中大部分的图片和步骤都是VisionPro的官方文档,我这里只是自己的学习笔记,不做任何商用。

  首先,我会展示一下这个工具是干什么的,什么场景使用。其次我会根据这个算子的使用步骤学习一下这个算子的原理。最后会展示一下VisionPro10.2版本这个算子的页面。

1,示例:使用Bead Inspect Tool寻找缺陷

  Bead inspect  tool 允许你检查任何长度和方向的统一路径。经过训练的bead inspect工具可以发现图像中的缺陷。其中珠子存在间隙,过度填充或其他缺陷。你可以使用bead路径的预期位置和外观来训练bead inspect tool,然后使用经过训练的工具来定位运行时图像中的缺陷。

  比如:如下图展示了一个检查胶珠路径的bead inspect tool。

  上图其实是在这个黑色的路径里面寻找缺陷,简单的理解就是判断这条路线的宽度,如果宽度超出设定的阈值,那么就出来Ng了。这样highlight出来就可以。而如果一些图片不存在缺陷,则程序可以使用绿色突出显示找到的珠子路径,如下图:

  这样说可能不是很好理解,我们将这个例子展开学习就方便理解了。下面学习一下Bead Inspect Tool的使用步骤。

2,bead inspect tool 使用步骤

  为了在视觉应用中使用 Bead Inspect 工具,VisionPro 在 QuickBuild 实用程序中提供了 BeadInspectTool 编程接口和 Bead Inspect Edit Control 图形用户界面。将 Bead Inspect 工具添加到您的视觉应用程序中需要执行以下步骤:

    • 1,获取训练图像,显示您要在运行时图像中分析的珠子的良好示例(给一个没有缺陷的图像,即Good图像)。
    • 2,让工具找到路径的大致位置、形状和宽度。
    • 3,手动细化珠路径的报告位置,使其与训练图像中的实际路径准确匹配。
    • 4,使用您想要检查的珠子路径的准确位置来训练工具。
    • 5,选择一组运行时参数,限制珠子路径在连续图像中可以显示的变化量,但仍允许工具返回通过的结果。

  使用一个Bead inspect Tool检查珠子的路径,并在图像中查找珠子存在间隙,过度填充或者其他缺陷。VisionPro的QuickBuild提供了Bead Inspect工具编辑控件,用于训练和测试Bead Inspect Tool。下面我会按照使用bead inspect tool的步骤讲一下其使用流程。

2.1 找bead 路径

  在使用要在运行时图像中检查的特定珠子路径的特征来训练bead inspect tool之前,该工具必须能够准确找到示例图像中的路径。使用“训练”选项卡在示例图像中找到珠子路径,然后训练该工具在允许时图像中找到它:

  就是说,寻找的路径就是我们要检测的地方。

  执行以下步骤来查找bead路径。

step1:为bead inspect tool 提供一个珠子路径良好的图片,并且将该图像传递给工具的训练图像属性

step2:使用训练图像上的起始圆属性来定义感兴趣的珠子和查找珠子路径的起始位置。

  使用方法:找到并定义起始圆,使其仅包含被区别于背景像素的特征包围的珠子路径。

  调整开始的圆可以拉取图像的大小,也可以手动优化,下图是手动优化的界面(你可以调整圆心坐标,也可以调整圆的半径):

step3, 你可以让该工具自动确定以下参数的最佳设置,或手动设置这些参数

  如果使用这个工具,建议先使用自动调节,自己觉得不合适了,再手动优化。

  下面是自动确定的参数值及其解释:

  • Bead width:要搜索珠子的预期宽度
  • Contrast threshold:用于检测珠边缘的对比度阈值
  • Dark Bead:表示珠子路径由比背景像素更暗的像素组成

  下面是手动确定的参数及其解释:

step4,使用bead inspect tool 查找方法让该工具检测图像中与珠子路径相对应的特征。

  Bead inspect Tool 使用不同的搜索参数分析样本图像,并尝试生成一个或多个粗略路径,以准确跟踪样本图像中的bead 路径,根据图像中的特征,一些粗略路径可以更准确地反映珠子路径,而另一些则不能:

  所以我们通过为样本选择最佳粗略路径,继续训练bead inspect tool的使用。这里的粗略路径就是我们后面要检测缺陷的路径。可以简单的理解为路径上有过于窄,或者过于宽的地方就是存在缺陷的地方。但是对于Good的数据中肯定不存在。

2.2 编辑一条粗路径

  默认情况下使用find方法在示例图像中查找珠子路径后,珠子检查工具会生成五个粗略珠子路径的集合。如下图所示:

  通过查看集合我们可以确定哪个粗略路径与示例图像中的珠子最匹配。请注意,即使粗略路径的最佳匹配也可能与某些区域中珠子路径的实际位置有所不同。

  下面我简单对比两条路线(我随机选择了第一条和第三条路径):

  当然上面区别也许不够明显,但是有些地方可能会找的不对,如下图所示:

  出现这种情况,Bead inspect tool允许修改粗珠子路径,使其与示例图像的实际路径紧密匹配。因为我们的目的就是检测我们想要检测的路径,所以我们必须对其路径修改,一般情况下,我们使用下面工具页面来更改粗珠子路径:

  这是edit页面,我们可以随意拉动每个bead,也可以选择合适的地方进行调整。

  该界面使用点和线段来表示粗路径:

  该路径具有灵活性,即可以打开也可以关闭,具体取决于示例图像要检测的东西,这也会影响路径的编辑方式:

单击点和线段以修改粗略路径以遵循实际的珠子路径:

  • 1,单击各个点并将其拖动到更好的位置。
  • 2,如果要在光标位置插入新点,请右键单击线段。
  • 3,右键单击现有点可根据需要将其删除。 您无法删除开放轮廓路径上的第一个点和最后一个点。
  • 4,选择“打开闭合轮廓”可删除闭合轮廓路径上两点之间的线段。
  • 5,选择“删除之前的点”或“删除之后的点”可删除开放轮廓路径上选定点之前或之后的所有点。
  • 6,编辑后,确保粗略路径尽可能遵循实际的珠子路径:

  点击训练按钮,(一旦您获得与示例图像中的实际珠子路径相匹配的粗略路径,请单击“训练”。成功训练后,Current.TrainImage 缓冲区会突出显示该工具将在运行时图像中使用的找到的珠子路径:)

  训练选项卡支持以下参数,这些参数可以对工具用来定位珠子路径的卡尺进行额外控制:

2.3 选择运行参数

  Bead Inspect 工具支持一组运行参数,这些参数允许运行时图像中的 Bead 路径的外观发生变化,但仍允许工具返回通过结果。

 

  例如,设置对比度阈值以设置检测珠子边缘所需的最小对比度。 珠子路径像素低于此阈值的任何运行时图像都会导致工具返回一个或多个缺陷。

  这些参数的解释如下:

2.4 遮盖和填充边缘

  Bead inspect tool 允许忽略或修改bead路径的不精确区域,否则可能导致错误缺陷。例如下图突出显示了应用程序在允许时映射中可以安全忽略的珠子路径的一部分:

  下图显示了训练图像,其中相应的点范围已除于考虑被屏蔽:

  除了可以选择工具可以完全忽略的珠路径段之外,还可以选择Bead Inspect Tool在这些限制的图像中创建左边缘或右边缘的段落,以及需要应用程序避免生成有关缺失的缺陷的段落,边缘。下图表示训练图像中补偿缺陷左边缘的点:

  使用Bead inspect编辑控件或 MaskList 属性生成珠路径上的点列表,这些点在搜索缺陷时会在运行时图像中被忽略。

2.5 寻找缺陷

Bead 缺陷路径通常属于以下类别:

  • 1,找不到路径或者路径包含间隙
  • 2,与训练图像相比,路径太窄或太宽
  • 3,Bead inspect tool 无法准确确定给定位置的左边缘或右边缘

  下图说明了Bead inspect tool 可以检测到的缺陷类型:

3,Bead inspect tool 界面介绍

3.1 Train页面

  这个页面包含的参数我们上面都有介绍,主要通过这个页面选择自己要检测的路径,并且调整到合适的路线,最后通过设置bead的宽度和卡尺的距离然后训练图像。因为我们要通过路径上布置的卡尺来比较测试图像的路径是否存在缺陷。

3.2 Run Params页面

  这个页面是运行参数页面,主要是通过训练的图像来验证测试图像是否OK,正如我之前所说的,通过训练图像布置的卡尺来通过参数卡测试图像的缺陷。

  这里除了设置常见的参数,还有两个选项,之前未提到的。一个是Copy Suggested Run Parameters。另一个是Setting Mask and Fill Edge Ranges。

Copy Suggested Run Parameters

  当您训练 Bead Inspect 工具时,它会生成一组候选运行参数,以查找训练图像中的 Bead 路径。 单击复制建议的运行参数以选择要在编辑控件中使用的建议运行参数:

Setting Mask and Fill Edge Ranges

  单击“编辑遮罩”或“填充边缘”打开一个界面,允许您忽略或修改焊道路径的不精确区域,否则可能会导致错误缺陷:

可以通过执行以下步骤来使用这个界面

1,选择 Mask, Left Fill Edges, or Right Fill Edges 来选择你想自己创建的那种区域

2,放大图像并双击你想要在mask或者边缘填充范围内的卡尺结果。卡尺会导致珠子路径外观发生变化,具体取决于你创建的范围类型:

  该界面还提供了一个控件,可让您指定该范围的第一个和最后一个卡尺结果:

3,这个界面也提供了选项去创建或擦拭掉一些链接从想要得到的范围内。

4,创建完所需范围后,单击确认选择

5,在允许图像上测试你的mask或者填充范围,看看他们是否生成了预期的结果

 

3.3 Graphics

  使用“图形”选项卡可启用或禁用 Current.TrainingImage 和 LastRun.InputImage 上的各种图形:

  这个页面的参数主要是显示的,可以开启一些显示,也可以关闭。

  Find Features:在训练图像上启用或禁用以下图形:

  Train Features: 启用或禁用该工具将用于在运行时图像中定位路径的训练路径。

  Results:在当前输入图像上启用或禁用以下图形:

3.4 Results

  使用结果选项卡查看上一个运行时图像中发现的任何缺陷:

  总之,这个工具主要是应用于工业的特殊场景使用,必须保证测试图像和训练图像在同一个光源下。而且是一些精确化的检测,所以并不是那么大众的工具。

VisionPro学习笔记(3)——BeadInspectTool的更多相关文章

  1. VisionPro学习笔记(1)——软件介绍和基本使用

    前言 自己使用visionPro已经有段时间了,最近也一直在研究其算子的理论,为了加深印象,计划将自己的学习笔记整理在博客园,当然其官方文档对如何使用及其各种算子都有详细的介绍,所以这里的笔记仅仅为个 ...

  2. Visionpro学习笔记(壹)

    注册4年,第一次发了随笔.我的博客将主要涉及到visionPro软件的学习,labview数据采集方面的思考,c#及VS的学习 此随笔系列主要是关于VisionPro(以后简称VP)的学习及使用. 近 ...

  3. Visionpro学习笔记 :QuickBuild-Based Application Run-Once Button

    1) Creating a Run-Once Button 通过JobManager调用VisionPro文件.所有的过程放到一个Try/Catch块中. Private Sub RunOnceBut ...

  4. VisionPro学习笔记:用IEEE1394相机抓取图像

    1)找到采集卡: CogFrameGrabber1394DCAMs cameras = new CogFrameGrabber1394DCAMs(); 2)列举相连接的相机: ICogFrameGra ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  7. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  8. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  9. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  10. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

随机推荐

  1. # 代码随想录算法训练营Day10 栈与队列| 理论基础  232.用栈实现队列  225. 用队列实现栈

    栈与队列理论基础 队列是先进先出,栈是先进后出 关于栈的四个问题 C++中stack 是容器么? 我们使用的stack是属于哪个版本的STL? 我们使用的STL中stack是如何实现的? stack ...

  2. Java方法的调用以及方法参数传递、方法的递归调用

    一.方法的调用以及方法参数传递 1.方法的定义: ​ 访问修饰符 返回值类型 方法名 ([参数列表]){ ​ 方法体 } 如果方法体中需要一些未知的数据作为执行条件,那么这些数据可以作为参数. 如果方 ...

  3. 生信服务器 | Linux 时间戳和标准时间

    在 Linux 系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数.如/etc/shadow里的密码更改日期和失效日期,还有代理服务器的访问日志对访问时间的记录等 ...

  4. API NEWS | Money Lover爆出潜在API漏洞

    欢迎大家围观小阑精心整理的API安全最新资讯,在这里你能看到最专业.最前沿的API安全技术和产业资讯,我们提供关于全球API安全资讯与信息安全深度观察. 本周,我们带来的分享如下: Money Lov ...

  5. WPF实现新手引导

    1. 半透明灰的遮罩层 新建一个遮盖的window窗体 canvas是后期可以在思显示高亮区域 //定义一个window将它的样式设置透明等可以覆盖到其他窗体上,其中遮罩层使用border控件 //原 ...

  6. Vue Router 源码分析💪

    专栏分享:vue2源码专栏,玩具项目专栏,硬核 推荐 欢迎各位 ITer 关注点赞收藏 本篇文章参考版本:vue-router v3.x 最终成果,实现了一个可运行的核心路由工程:柏成/vue-rou ...

  7. ArcMap镶嵌数据集的创建、数据导入与数据范围修改方法

      本文介绍基于ArcMap软件,建立镶嵌数据集(Mosaic Datasets).导入栅格图像数据,并调整像元数值范围的方法.   镶嵌数据集(Mosaic Datasets)是一种用以管理.显示. ...

  8. Python潮流周刊#10:Twitter 的强敌 Threads 是用 Python 开发的!

    你好,我是猫哥.这里每周分享优质的 Python 及通用技术内容,大部分为英文,已在小标题注明.(标题取自其中一则分享,不代表全部内容都是该主题,特此声明.) 首发于我的博客:https://pyth ...

  9. #Powerbi 10分钟,理解 Rankx 排名函数

    一:本文思维导图及示例数据图 1.1思维导图 1.2  示例数据图 二:度量值示例 2.1 函数简介 RANKX 首先为的每一行计值表达式,将结果临时存储为一个值列表.然后在当前筛选上下文中计值,将得 ...

  10. 你的Spring应用启动很慢?不妨试试这个工具!

    睡不着闲逛,在GitHub上看到一个挺实用的开源项目:Spring Startup Analyzer. 从项目名称中就大概能猜到,这是一个分析Spring应用启动过程的工具.Spring Startu ...