HALCON中的模板匹配方法总结

  • 摘要
    • 1. Shape-Based matching的基本流程
    • 2. 基于形状匹配的参数关系与优化

摘要

德国MVTec公司开发的HALCON机器视觉开发软件,提供了许多的功能,在这里我主要学习和研究了其中的形状匹配的算法和流程。HDevelop开发环境中提供的匹配的方法主要有三种,即Component-Based、Gray-Value-Based、Shape-Based,分 别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配。这三种匹配的方法各具特点,分别适用于不同的图像特征,但都有创建模板和寻找模 板的相同过程。这三种方法里面,我主要就第三种-基于形状的匹配,做了许多的实验,因此也做了基于形状匹配的物体识别,基于形状匹配的视频对象分割和基于 形状匹配的视频对象跟踪这些研究,从中取得较好的效果,简化了用其他工具,比如VC++来开发的过程。在VC下往往针对不同的图像格式,就会弄的很头疼,更不用说编写图像特征提取、模板建立和搜寻模板的代码呢,我想其中间过程会很复杂,效果也不一定会显著。下面我就具体地谈谈基于HALCON的形状匹配算法的研究和心得总结。

1. Shape-Based matching的基本流程

HALCON提 供的基于形状匹配的算法主要是针对感兴趣的小区域来建立模板,对整个图像建立模板也可以,但这样除非是对象在整个图像中所占比例很大,比如像视频会议中人 体上半身这样的图像,我在后面的视频对象跟踪实验中就是针对整个图像的,这往往也是要牺牲匹配速度的,这个后面再讲。基本流程是这样的,如下所示:

  1. 首先确定出ROI的矩形区域,这里只需要确定矩形的左上点和右下点的坐标即可,gen_rectangle1()这个函数就会帮助你生成一个矩形,利用area_center()找到这个矩形的中心;
  2. 然后需要从图像中获取这个矩形区域的图像,reduce_domain()会得到这个ROI;这之后就可以对这个矩形建立模板,而在建立模板之前,可以先对这个区域进行一些处理,方便以后的建模,比如阈值分割,数学形态学的一些处理等等;
  3. 接下来就可以利用create_shape_model()来创建模板了,这个函数有许多参数,其中金字塔的级数由Numlevels指定,值越大则找到物体的时间越少,AngleStart和AngleExtent决定可能的旋转范围,AngleStep指定角度范围搜索的步长;这里需要提醒的是,在任何情况下,模板应适合主内存,搜索时间会缩短。对特别大的模板,用Optimization来减少模板点的数量是很有用的;MinConstrast将模板从图像的噪声中分离出来,如果灰度值的波动范围是10,则MinConstrast应当设为10;Metric参数决定模板识别的条件,如果设为』use_polarity』,则图像中的物体和模板必须有相同的对比度;创建好模板后,这时还需要监视模板,用inspect_shape_model()来完成,它检查参数的适用性,还能帮助找到合适的参数;另外,还需要获得这个模板的轮廓,用于后面的匹配,get_shape_model_contours()则会很容易的帮我们找到模板的轮廓;
  4. 创建好模板后,就可以打开另一幅图像,来进行模板匹配了。这个过程也就是在新图像中寻找与模板匹配的图像部分,这部分的工作就由函数find_shape_model()来承担了,它也拥有许多的参数,这些参数都影响着寻找模板的速度和精度。这个的功能就是在一幅图中找出最佳匹配的模板,返回一个模板实例的长、宽和旋转角度。其中参数SubPixel决定是否精确到亚像素级,设为』interpolation』,则会精确到,这个模式不会占用太多时间,若需要更精确,则可设为』least_square』,』lease_square_high』,但这样会增加额外的时间,因此,这需要在时间和精度上作个折中,需要和实际联系起来。比较重要的两个参数是MinSocre和Greediness,前一个用来分析模板的旋转对称和它们之间的相似度,值越大,则越相似,后一个是搜索贪婪度,这个值在很大程度上影响着搜索速度,若为0,则为启发式搜索,很耗时,若为1,则为不安全搜索,但最快。在大多数情况下,在能够匹配的情况下,尽可能的增大其值。
  5. 找到之后,还需要对其进行转化,使之能够显示,这两个函数vector_angle_to_rigid()和affine_trans_contour_xld()在这里就起这个作用。前一个是从一个点和角度计算一个刚体仿射变换,这个函数从匹配函数的结果中对构造一个刚体仿射变换很有用,把参考图像变为当前图像。

2. 基于形状匹配的参数关系与优化

在HALCON的说明资料里讲到了这些参数的作用以及关系,在上面提到的文章中也作了介绍,这里主要是重复说明一下这些参数的作用,再强调一下它们影响匹配速度的程度;在为了提高速度而设置参数之前,有必要找出那些在所有测试图像中匹配成功的设置,这时需考虑以下情况:

  1. 必须保证物体在图像边缘处截断,也就是保证轮廓的清晰,这些可以通过形态学的一些方法来处理;
  2. 如果Greediness值设的太高,就找不到其中一些可见物体,这时最后将其设为0来执行完全搜索;
  3. 物体是否有封闭区域,如果要求物体在任何状态下都能被识别,则应减小MinScore值;
  4. 判断在金字塔最高级上的匹配是否失败,可以通过find_shape_model()减小NumLevels值来测试;
  5. 物体是否具有较低的对比度,如果要求物体在任何状态下都能被识别,则应减小MinContrast值;
  6. 判断是否全局地或者局部地转化对比度极性,如果需要在任何状态下都能被识别,则应给参数Metric设置一个合适的值;
  7. 物体是否与物体的其他实例重叠,如果需要在任何状态下都能识别物体,则应增加MaxOverlap值;
  8. 判断是否在相同物体上找到多个匹配值,如果物体几乎是对称的,则需要控制旋转范围;

如何加快搜索匹配,需要在这些参数中进行合理的搭配,有以下方法可以参考:
① 只要匹配成功,则尽可能增加参数MinScore的值;
② 增加Greediness值直到匹配失败,同时在需要时减小MinScore值;
③ 如果有可能,在创建模板时使用一个大的NumLevels,即将图像多分几个金字塔级;
④ 限定允许的旋转范围和大小范围,在调用find_shape_model()时调整相应的参数;
⑤ 尽量限定搜索ROI的区域;

除上面介绍的以外,在保证能够匹配的情况下,尽可能的增大Greediness的值,因为在后面的实验中,用模板匹配进行视频对象跟踪的过程中,这个值在很大程度上影响到匹配的速度。
当然这些方法都需要跟实际联系起来,不同图像在匹配过程中也会有不同的匹配效果,在具体到某些应用,不同的硬件设施也会对这个匹配算法提出新的要求,所以需要不断地去尝试。在接下来我会结合自己做的具体的实验来如何利用HALCON来进行实验,主要是在视频对象分割和视频对象的跟踪方面。

图像处理HALCON中的模板匹配方法总结相关推荐

  1. halcon三种模板匹配方法

    转自 : http://blog.csdn.net/hust1900/article/details/8843270 halcon有三种模板匹配方法:即Component-Based.Gray-Val ...

  2. 在halcon中使用模板匹配助手进行定位真的很好用!!!

    一.如何使用模板匹配助手 1.菜单栏中点击助手---选择打开新的Matching 2.选择对应的模板类型 二.模板匹配助手中每个界面的功能介绍 (一)创建界面 1.模板来源 选择是从图像画ROI创建还 ...

  3. halcon知识:常见三种模板匹配方法总结

    目录 一. 形状匹配模板( Shape_Based ) 1.1 形状匹配常见的有四种情况 1.2 四种匹配的特点 1.3 一般形状匹配模板shape_model 1.4 线性变形匹配模板planar_ ...

  4. HALCON:模板匹配方法总结

    HALCON:模板匹配方法总结

  5. OpenCV与图像处理学习十六——模板匹配

    OpenCV与图像处理学习十六--模板匹配 一.模板匹配介绍 二.代码应用 一.模板匹配介绍 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定目标的图像位于图像的什么地方,进而对图像进行定位. ...

  6. Halcon学习路线——模板匹配和仿射变换

    模板匹配 1. 模板匹配分类 2. 看一个案例 3. 资源下载 1. 模板匹配分类 halcon对模板匹配进行了详细的分类 基于灰度的模板匹配是最基础也是最简单的,但是由于其受光照影响很大,匹配的精度 ...

  7. 基于模板匹配方法的机场飞机起飞-目标检测

    文章目录 1. 模板匹配方法的定义 2. 标注软件labelme 标注以及数据解析裁剪模板 2.1 labelme简介 2.2 labelme标注的json文件解析 3. 基于Opencv pytho ...

  8. OpenCV中使用模板匹配识别空闲的货架空间

    但是点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 假设你是一名在超市工作的员工,被要求在商店里四处走动,检查需要 ...

  9. 图像处理之基于NCC模板匹配识别

    图像处理之基于NCC模板匹配识别 一:基本原理 NCC是一种基于统计学计算两组样本数据相关性的算法,其取值范围为[-1, 1]之间,而对图像来说,每个像素点都可以看出是RGB数值,这样整幅图像就可以看 ...

最新文章

  1. 外键为主键可以重复原因
  2. JQuery获取元素的N种方法
  3. 全球及中国智能食品秤行业发展预测及市场规模预测报告2021年版
  4. sap界面功能_功能介面
  5. visual studio过期登录不了账户_具有最高管理权限账户,Windows 7设置Administrator密码永不过期...
  6. Flink 有状态计算的状态容错
  7. 技能拓展笔记-React(一)
  8. JavaScript的原型和原型链
  9. 4、第4次课 CSS代码第三节课20150923
  10. k8s(Kubernetes) 上部署 Redis 集群(3主3从)
  11. 多目标进化优化-SPEA/R
  12. 从招股书看蚂蚁集团的技术底色
  13. CDH通过parcels安装组件,激活时卡住,取消激活
  14. 电脑视频加水印软件哪个好?这些软件值得收藏
  15. 今日干货:mac视频剪辑软件推荐
  16. 【可达性分析中的增量更新和原始快照】
  17. 基于百度翻译和有道翻译api的一款翻译Demo
  18. Microsoft365 PowerPoint找不到设计灵感design ideas、历史版本记录、自动保存不见了
  19. linux命令之----sort命令用于将文本文件内容加以排序
  20. java毕业设计智能交通管控系统Mybatis+系统+数据库+调试部署

热门文章

  1. 程序员30岁投简历找工作,还能找到满意的工作吗?
  2. Android 音视频开发(六) -- Android Mediaprojection 截屏和录屏
  3. 这些神奇的AI智能机器人很早就已出现过,你确定你不了解?
  4. OSChina 周三乱弹 ——所有树都绿了,却不知道谁干的!
  5. 中国科学家发现侏罗纪时期带羽毛恐龙“飞行”新证据
  6. 前端photoshop 切图神器cutterman
  7. wince注册表介绍
  8. 使用MySQL Workbench修改数据库名称
  9. vijos1027题解
  10. 【JAVAEE】文件操作——IO