视觉论坛VISIONBBS_视觉之家VISIONHOME微信公众号:石鑫华视觉网

 找回密码
 注册会员
查看: 28|回复: 0

[原创] NI Vision Assistant视觉助手图像处理教程 第9章 Machine Vision机器视觉 9.9 Contour Analysis轮廓分析

[复制链接]
  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 1796 天

    [LV.Master]2000FPS

    发表于 2020-3-13 18:02:45 | 显示全部楼层 |阅读模式
    NI Vision Assistant视觉助手图像处理教程 第9章 Machine Vision机器视觉 9.9 Contour Analysis轮廓分析

    NI Vision Assistant视觉助手教程

    第九章图像处理-Machine Vision机器视觉

    第九节Contour Analysis轮廓分析轮廓分析介绍
    一个轮廓代表了一系列的边缘点,这些边缘点定义了图像中一个目标的轮廓。轮廓分析定位和提取灰度图像的轮廓。提取轮廓以后,轮廓分析算法可以计算沿着轮廓方向的曲率,使用以知的方程式拟合轮廓,或比较多种类型的轮廓。
    什么时候使用轮廓分析
    轮廓分析定位和分析灰度图像的轮廓,允许你比较提取的轮廓与一个模板轮廓或拟合方程。下图显示了拥有非常好轮廓的目标的例子。
    [attach]8115[/attach]
    1 有较好轮廓的目标
    可以在下面的这些应用邻域使用轮廓分析:
    测量
    测量长度、直径、角度和其它关键尺寸。如果测量值在设置的公差值之外,则拒绝该目标产品。使用几何匹配来定位目标或目标区域。使用目标的尺寸信息来阻止轮廓分析函数去分析那些太小或太大的目标。
    检查
        检测缺陷或缺失元素。用一个提取的轮廓与拟合的轮廓比较或与模板轮廓比较来检测缺陷边缘或确认检查下的对象的一部分是否缺失。
    轮廓分析的概念
    轮廓分析包含以下步骤:
    1、  从ROI中提取曲线。
    2、  根据连接参数中的设置连接多个曲线,这个过程是可选过程。
    3、  一个连接好的曲线代表选中的轮廓。
    曲线提取
    曲线提取与几何匹配中的曲线提取非常相似。一条曲线是由一组边缘点连接起来形成一个连续的轮廓。曲线通常代表了图像的边界部分。在曲线提取中,曲线用于表示一个一个模板和检查图像中的匹配模板的底层信息。本节描述了如何从图像中提取曲线。
    发现曲线种子点
    一个种子点位于跟踪开始的曲线上(即拟合曲线的点)。要想成为一个合格的种子点,一个像素不能是已经存在的曲线上的一部分。同时,像素的边缘对比度必须大于用于指定的边缘阈值(Edge Threshold)。一个像素的边缘对比度,由该像素以及邻域的像素通过函数进行计算。如果P(i, j代表坐标i, j上的像素点P的强度,则坐标i, j上的边缘对比度定义为:
    [attach]8154[/attach]
    对于8位图像,边缘对比度的范围为0~360度。
    为了增加曲线提取过程的速度,该算法仅访问图像中有限的像素点来确定当前像素是一个有效的种子点。访问的像素点数量基于用户提供的搜索步长(Search Step)以及ROI参数。搜索步长越大以及ROI越小,则该算法发现种子点的速度越快。但是,为了保证算法能够找到所有曲线上的种子点,搜索步长必须小于搜索方向上的最小曲线长度。
    该算法从ROI的边缘开始扫描。从第一个像素点开始计算像素的边缘对比度。如果对比度小于给定的阈值,则曲线从这个点开始跟踪。如果对比度小于阈值,或者像素已经存在于一个预先得到的曲线上,则该算法分析行方向上的下一个像素是否有资格作为种子点。重复这个过程直到到达当ROI的另一边。然后算法在ROI的一边跳过搜索步长Search Step指定的像素,再重复执行这样的过程。
    跟踪曲线
    当发现一个种子点,曲线提取算法跟踪其它的曲线。跟踪过程是这样的:考虑当前曲线上的最后一个像素点的邻域像素(可能有多个像素点),如果某个像素在当前的邻域中有最强的边缘对比度而且边缘对比度大于曲线种子点的可接受的阈值时,则将此像素点添加到曲线上。这个过程将重复进行,直到没有更多的像素可以被添加到当前方向的曲线上。该算法返回种子点并试图跟踪曲线相反的方向。下面的图说明了这个过程。
    [attach]8114[/attach]
    2 跟踪曲线
    1、  Scan Lines扫描线
    2、  Row Step行步长
    3、  Column列步行
    4、  Curve Seeds曲线种子点
    5、  Curves曲线
    注意,为了简化图示效果以及看得清楚,搜索步长没有小于最小特征。
    曲线连接
    曲线连接参数指定轮廓提取算法怎么连接个别的曲线生成轮廓。有两种方法可以用于将曲线变成轮廓。对于这两种方法,通过下面的连接指标的输入范围,所有的可能连接都是有限的。当需要考虑连接时,如果连接指标没有进入一个范围,则不被评价。例如,如果仅提供了距离和角度变量,梯度角和连通性则不被评价并且不会影响连接的选择。对于这两种方法,一旦建立的曲线被连接到它本身,则它将被认为是一个封装的曲线,且没有更多的连接。
    当选择最近的轮廓,提取算法从最接近ROI一边的曲线开始扫描。提取算法建立两端之间最近的曲线,一个端点为当前曲线的终点,另一个端点则为继续沿着目标边界方向的下一条曲线的起点。这个曲线只是被定义为候选曲线,其最终需求是从最近的曲线终点,通过ROI侧边的方向,需要有最小的旋转量。
       当选择最长的或最强的轮廓时,提取曲线算法以最小成本考虑所有的参考指标来连接曲线。这成本被定义为变量的归一化值(当前值除以变量范围)的和。例如,如果角度的范围是0~30度,一个连接可能有15度的变化在曲线之间,则这个角指标将为这个连接贡献0.5的成本。提取算法计算所有在范围内的指标的连接成本,然后对连接以从少到多的成本方式排序。
    当选择最近的轮廓时,最近的轮廓总是按上面所以述的建立的。当选择最长或最强的轮廓时,同时没有连接参数输入时,则不会有连接从而将提高性能。在任何需要建立连接的情况下,默认的距离范围是0~10个像素,角度距离范围是0~180度。如果另外输入指标,则会覆盖这些默认值。
    距离Distance
    这里的距离是欧几里得距离,以像素为单位,是两条曲线上最近的两个端点之间的距离。调整参数Distance距离的范围只连接被分开的距离在指定的范围内的终点。下面的图展示了终点之间的距离:


    购买主题 本主题需向作者支付 6 快钱 才能浏览
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    LabVIEW图像处理教程
    机器视觉商城淘宝店铺
    视觉论坛充值赞助方法

    QQ|视觉论坛VISIONBBS.COM|视觉之家VISIONHOME.CN|东莞市华动智能科技有限公司 ( 粤ICP备17078359号-2 )|网站地图

    GMT+8, 2020-4-6 08:43

    Powered by shixinhua.com X3.4

    © 2009-2020 VISIONBBS.COM 浏览量:

    快速回复 返回顶部 返回列表