模版匹配原理及Halcon说明

模版匹配原理及Halcon说明

1.1 原理说明

模版匹配的目的是为了识别图像上与模版匹配的部分,在整个图像上移动模板并计算模板与图像上被覆盖窗口之间的相似度的过程。目前主要匹配方法原理:
  • NCC:归一化相关性

    图像相关性本质是计算图像对应像素值的乘法总和,计算时将自身图片与图像均值作差,减少图像的一致变亮和变暗的影响,最后将相关性数值缩放到[-1,1]:

N C C ( I m g 1 , I m g 2 ) = 1 N σ 1 σ 2 ∑ x , y ( I m g 1 ( x , y ) − I m g 1 ‾ ) × ( I m g 2 ( x , y ) − I m g 2 ‾ ) NCC(Img1,Img2)=\frac{1}{N\sigma 1\sigma 2} {\textstyle \sum_{x,y}^{}} (Img1(x,y)- \overline{Img1} )\times (Img2(x,y)- \overline{Img2} ) NCC(Img1,Img2)=Nσ1σ21x,y(Img1(x,y)Img1)×(Img2(x,y)Img2)

σ 1 σ 2 \sigma 1 \sigma 2 σ1σ2为图像方差

  • Shape Based Template Matching

基于边缘梯度的模版匹配首先获取对应图片与模版的梯度点,可以使用Sobel或Canny,然后通过余弦相似度公式: \alpha =(a1,a2)^T \beta =(b1,b2)^T

cos ⁡ θ = α ⋅ β ∥ α ∥ ⋅ ∥ β ∥ = a 1 × b 1 + a 2 × b 2 a 1 2 + a 2 2 ⋅ b 1 2 + b 2 2 \cos \theta =\frac{\alpha \cdot \beta }{\left \| \alpha \right \| \cdot \left \| \beta \right \| }= \frac{a1\times b1+a2\times b2 }{\sqrt{a1^2+a2^2 }\cdot\sqrt{b1^2+b2^2 } } cosθ=αβαβ=a12+a22 b12+b22 a1×b1+a2×b2

其中贪婪度设计是可以利用区域中前m个点的计算结果来决定我们是否要继续进行匹配计算。

1.2 HALCON重点算子说明

  • create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)

      1) Template:输入要创建模版的剪切图片数据;
    
      2) NumLevels:可设置参数:‘auto’、1、2、3...,创建模版时所用的金字塔级别数量,数值越大,金子塔层数越高,图像包含信息越少,此参数关联后续find_shape_model搜索速度,一般选择的层级越大,匹配模版所需时间越少,但是设置过大会导致没有像素点进行匹配,使用时建议先用'auto'自动评估,然后使用inspect_shape_model二次判断下,最终结合时间效率最终确定金字塔层数;
    
      3) AngleStart: 创建模版时确定模版可能的旋转范围,此参数作为起始角度;
    
      4) AngleExtent:创建模版时确定模版可能的旋转范围,此参数作为终止角度;
    
      5) AngleStep:创建模版时确定模版可能的旋转范围,此参数作为角度步长;
    
      6) Optimization:对于不同大小的模型,可设置不同参数来减少模型点数:
    
                                   none:存储所有点模型;
    
                                   auto:自动确定减少点数量;
    
                                   other:(point_reduction_medium)其他参数会相应减少模型点数量;
    
      7) Metric:'use_polarity' :图像中的对象和模型必须具有相同的对比度;
    
                          'ignore_global_polarity':灰度反转可同样匹配,find时间会加长;
    
                          'ignore_local_polarity' :局部对比度变化可同样匹配,find时间会加长;
    
                          ‘ignore_color_polarity’:色彩变化可同样匹配,find时间会加长;
    
      8) Contrast:边缘提取的对比度阈值,对于微弱纹理需手动设计金子塔层数与对比度阈值来提取出有效地模版轮廓,单值作为阈值下限,数组输入可作为上下限;
    
      9) MinContrast:区分模版特征与噪声的阈值,及忽略随机跳动噪声;
    
      10) ModelID:模型句柄;
    
  • create_ncc_model (Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Metric : ModelID)

      参数设置功能同上shape_model,ncc对于有一定灰度变化图像有较好的适应性,速度快,匹配精度会降低。
    
  • find_shape_model (Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)

      1) Image、ModelID、AngleStart、AngleExtent功能同上,作为搜索端需覆盖实际可能的图像变动;
    
      2) MinScore:匹配特征分数,分数越大搜索越快,分析实际效果和贪婪度结合使用,贪婪度低时可提高匹配分数;
    
      3) NumMatches:查找的最大实例数,设置为0时将查找所有高于MinScore的实例;
    
      4) MaxOverlap:当出现重叠图像实例时,可控制重叠比列来识别匹配;
    
      5) SubPixel:确定是否亚像素精度提取模版图像,'none'不启用,其余可设置最小二乘、最小平方等模式提高匹配精度;
    
      6) NumLevels:匹配时使用的金字塔层数,设置为0使用create时指定的金字塔层数,为了防止漏匹配,可查询create时所用层数,匹配时使用低一层级搜索,还可指定[a,b]金子塔层搜索范围;
    
      7) Greediness:贪婪度设置,默认是0.9较高的贪婪值,搜索速度快,可能会导致漏识别,对于干扰较多的点特征可能会由于特征点干扰导致明显数据没有被匹配到,降低贪婪度后分数很高,同时,贪婪度值越小,搜索越完全,时间越久;
    
      8) Row、Column、Angle、Score匹配结果;
    
  • find_ncc_model (Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels : Row, Column, Angle, Score)

      参数功能设置同上find_shape_model,ModelID需是create_ncc_model;
    
  • inspect_shape_model (Image : ModelImages, ModelRegions : NumLevels, Contrast : )

      该算子可根据NumLevels,Contrast来提前查看不同金字塔层在Contrast阈值下提出的模版情况,针对对比度较低模版需要手动设置提前判断;
    
  • get_shape_model_params\get_ncc_model_params

      获取模版创建时参数,若使用'auto'档位出现匹配失败时,可由此算子查看模版创建参数。
    

Tips:本人第一次发布,喜欢请关注,后面会继续介绍!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞视觉的施工啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值