Halcon的形状模板匹配

基本流程:

(1)确定出ROI的矩形区域,这里只需要确定矩形的左上角和右下角的坐标即可,gen_rectangle1()这个函数会帮忙生成一个矩形,利用area_center找到矩形的中心;

(2)需要从图像中获取这个矩形区域的图像,reduce_domain会得到这个ROI;接下来可以对这个矩形建立模板,在建立模板之前,可以先对这个区域进行一些预处理;

(3)创建模板,使用create_shape_model():

       a. 金字塔的级数由Numlevels指定,值越大找到物体的时间越少;

       b.AngleStart和AngleExtent决定可能的旋转范围,如果物体几乎是对称的,则需要控制旋转范围,

        AngleStep指定角度范围搜索的步长(此为弧度非角度,模板越大,角度步长越小;要求越精确,步长越小;步长越小,占用内存越多,定位速度越慢,如果没有特殊要求,可选“auto”让系统做最佳选择);

       c. Optimization: 对于特别大的模板,可以使用Optimization减少模板点的数量,以边缘较多为减少的原则

        none:不减少像素

        point_reduction_low: 大约一半点

       point_reduction_medium:大约1/3

      point_reduction_high: 大约1/4

       d. MinContrast: 模板的对比度;

       e. Metric(度量):决定模板识别的条件, 如果图像的光线有变化,则需要调整这个参数,

           设为‘use_polarity’,则图像中的物体和模板必须具有相同的对比度,生成的模板只有一个目标;

          设为“ignore_global_palarity”:生成的模板由两个目标,一个是原图,另一个是灰度值取反,黑的变白,白的变黑

         设为“ignore_local_polarity”生成的模板有三个目标,一个原图,一个灰度值取反,一个灰度值渐变,由于这种模式下find_shape_model函数的运行时间显著增加,最好的方法是使用create_shape_model 创建几个反映目标的可能的对比度变化的模型,同时使用find_shape_models去匹配他们。

       f. 判断物体是否与物体的其他实例重叠,如果在任何状态下都能识别物体,则应该增加MaxOverlap值;     

使用inspect_shape_model 来监视模板,检查参数的适用性,还能帮助找到合适的参数;

      使用get_shape_model_contours会帮我们找到模板的轮廓;

     

(4)进行模板匹配,使用find_shape_model,在图像中找到最佳匹配的模板,返回一个模板实例的长、宽和旋转角度,

      a.subPixel:设置为“interpolation”则精确到亚像素级,若需要更精确,则设为“least_square”,''least_square_high',这样会增加额外的时间。

    b. MinScore: 分析模板的旋转对称和它们的相似度,值越大,则越相似

        贪婪度:很大程序上影响搜索速度,设为0---》启发式搜索,比较耗时;设为1---》不安全搜索,但最快。所以在能够匹配的情况下,尽可能增大其值,建议取值0.7-0.9。

(5)找到模板之后,还需要对其进行转化,使之能够显示,使用以下两个函数

   a.vector_angle_to_rigid()  从点和角度计算一个刚体仿射变换

   b.affine_trans_contour_xld()

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值