在日常工程应用中,我们通常通过halcon的 shape-based matching(形状匹配)进行各种定位,
如以前文章介绍的这样,理解各个参数并灵活应用通常就能得到很好的匹配效果和匹配速度,
当待匹配物体有轻微变形时,并不影响得到的匹配结果,然后当待匹配物体有较大变形时,如
塑料产品在成形时变形、纺织产品的花纹因为褶皱变形等,要想得到精确的定位结果就显得捉襟见肘,
如下图所示,印刷品有较大变形,在用shape-based matching时,定位结果就不尽如人意,因为
shape-based matching本身得到的匹配结果只是一个点(row,col),我们根据匹配结果通过仿射变换
将模板转换到匹配位置时就这个熊样。
怎么办?怎么办?如果有一种匹配模式,匹配结果可以根据待匹配物体自动进行变形多好!
如下图所示,简直完美,有木有?有木有!这就是我们今天要介绍的local deformable matching (局部变形匹配)

local deformable matching的基本流程和 shape-based matching相似:
所以在此之前闭上眼睛好好感受一下, shape-based matching掌握的怎么样,要不要回顾一下历史文章,相似参数不做介绍。
 
(1)create_local_deformable_model 创建变形模板
ScaleMin、ScaleMax、ScaleStep:
指定行列最小最大变形尺度例(0.9,1.1,0.01)用于指定相对于原图的变形范围
 
(2)find_local_deformable_model 匹配
ImageRectified :
匹配到的变形后模板图像
VectorField: 
变形矢量区,里面存储了匹配区域每个点变形后的位置,之所以叫vector是因为每个点为存储了行列坐标(x,y),动态图中的网格就是以此算出的.
返回的区域大小是创建模板时domain的最小外界矩形大小,当然你可以通过ParamName参数中的expand_border扩展区域等到更大的区域。
DeformedContours:
匹配到的轮廓,非模板轮廓而是经过变形得出的轮廓,动态图中的绿色轮廓即是此
ResultType:'deformed_contours', 'image_rectified', 'vector_field'可指定需要得出的结果分别对应ImageRectified VectorFiedl DeformedContours,
ParamName:
deformation_smoothness:平滑的度,对于变形越大参数越大
expand_border:扩展ImageRecfified VectorField 区域
附注:生成变形网格的函数,此函数隔10个像素取值
gen_warped_mesh (VectorField, WarpedMesh, 10)
gen_empty_obj (WarpedMesh)
count_obj (VectorField, Number)
for Index := 1 to Number by 1select_obj (VectorField, ObjectSelected, Index)*把vector转换成存储行坐标和列坐标图像vector_field_to_real (ObjectSelected, DRow, DCol)get_image_size (VectorField, Width, Height)*取行坐标for ContR := 0.5 to Height[0] - 1 by Step       Col1 := [0.5:Width[0] - 1]tuple_gen_const (Width[0] - 1, ContR, Row1)get_grayval_interpolated (DRow, Row1, Col1, 'bilinear', GrayRow)get_grayval_interpolated (DCol, Row1, Col1, 'bilinear', GrayCol)gen_contour_polygon_xld (Contour, GrayRow, GrayCol)concat_obj (WarpedMesh, Contour, WarpedMesh)endfor*取列坐标for ContC := 0.5 to Width[0] - 1 by StepRow1 := [0.5:Height[0] - 1]tuple_gen_const (Height[0] - 1, ContC, Col1)get_grayval_interpolated (DRow, Row1, Col1, 'bilinear', GrayRow)get_grayval_interpolated (DCol, Row1, Col1, 'bilinear', GrayCol)gen_contour_polygon_xld (Contour, GrayRow, GrayCol)concat_obj (WarpedMesh, Contour, WarpedMesh)endfor
endfor
return ()

总结:一句话形容halcon的局部变形匹配功能,那就是“屌炸天”,本人也在多个项目中应用取得了极其好的效果。
然而本片文章只是浅尝辄止,更深层次的应用还需要各位看官动手实践,夜深了~窗外下着雨,各位晚安。
关注微信:halconhub,每日获取halcon精华文章

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/xiaomaLV2/p/5496920.html

halcon之屌炸天的变形匹配(1)相关推荐

  1. HALCON基于形变的模板匹配实现

    基于形变的模板匹配 先看匹配结果: 下面是HALCON的代码,用匹配助手生成的,现在得到的就是模板上61个点的坐标,还有仿射矩阵,利用仿射矩阵可以算出61个点匹配上的像素坐标. * * Matchin ...

  2. halcon知识:ncc_model模板匹配

    说明 除了常见的模板匹配之外,还有其它模板匹配,虽然不够主流,但尝试使用,也能解决许多问题.这里先说明ncc_model模板. 一.基于互相关匹配 一种基于灰度值的方法是基于相关的匹配.这种方法使用归 ...

  3. 基于qt+halcon实现视觉定位模板匹配【附部分源码】

    文章目录 前言 演示视频 一.项目文件目录讲解 二.Qt Designer设置ui界面 1.CtuImageMatching.ui界面详解 2.CameraSetting.ui的设置 3.Calibr ...

  4. halcon 相似度_halcon模板匹配

    在机器视觉应用中,经常需要对图像进行仿射变换. 1.在基于参考的视觉检测中,由于待检图像与参考图像或多或少都会存在几何变化(平移.旋转.缩放等),所以在做比较之前一般都要对待检图像进行仿射变换以对齐图 ...

  5. halcon学习笔记(14)——模板匹配

    halcon的模板匹配种类有很多种,方法各有优缺点,一般有基于灰度的匹配,基于形状的匹配等等,这里具体理论和方法不做详解,只简单总结一个实例.图像匹配一般需要对旋转放缩进行处理,另外为了提高搜索效率, ...

  6. halcon基于形状的模板匹配第三例:rectify_result.hdev

    这个例子其实是在比较两种ROI"还原"的方式: 模板匹配后,获得仿射变换矩阵T,则对于ROI的分析有两种: 1.全局的,将T.inv()*Img_target得到目标图片全局还原后 ...

  7. halcon例子学习matching书页匹配

    转自:http://qing.blog.sina.com.cn/2316220871/8a0eb9c733002rnq.html detect_brochure_pages.hdev *这个例子主要描 ...

  8. Halcon学习笔记之模板匹配-基于形状的多模板匹配

    基于形状的模板匹配在我们实际的项目中应用最广,同时在一些项目中,光是选中一个目标作为匹配的模板,效果可能还达不到我们所需要达到的要求或者我们所需要检测的目标存在多个特征需要去判别,所以这个时候可以考虑 ...

  9. halcon三种模板匹配方法

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

  10. Halcon模版匹配

    记录下自己遇到的一次模板匹配的难题.方便以后举一反三. 遇到的是两颗螺丝,受环境光影响,轮廓非常复杂.思考逻辑如下: 1.减少轮廓复杂程度,使用到的算子edges_sub_pix edges_sub_ ...

最新文章

  1. 1.5 关于这门课-深度学习-Stanford吴恩达教授
  2. 好色派:日省 6 小时,神策分析是我的“菜”
  3. 投资学习网课笔记(part6)--基金第六课
  4. jq获取最后一个子节点_如何选择jQuery中的最后一个子元素?
  5. 898A. Rounding#数的舍入
  6. AcWing 3208. Z字形扫描
  7. Git 使用的问题总结
  8. 刘强东:京东必定会击败阿里巴巴
  9. Tomcat的bin文档下startup.bat启动后中文出现乱码
  10. python-gui-pyqt5的使用方法-3--自定义信号的初识
  11. Unity3D面试题汇总
  12. 个人信息安全规范----9、个人信息保护政策模板
  13. Linux设置小红点键盘,debian linux上安装thinkpad小红点驱动/Installing Debian On Thinkpad – Trackpoint...
  14. 1 分析计算机上网时断时续的原因,网络丢包现象分析与解决方案
  15. 2018年航空概论期末考试
  16. C语言实现逆波兰表示法(栈)
  17. 配置 CRM2011 IFD
  18. Unity 之 实用技巧更换编辑器主题
  19. Process finished with exit code 134
  20. 文本修饰标签(text-decoration)

热门文章

  1. 大数据技术原理与应用 大作业--------微博精准营销案例设计与实现
  2. 中兴F450电信光猫改桥接模式
  3. 浅谈外存分配的几种方式
  4. 你对软件测试了解多少?这篇文章会给你不一样的启示!
  5. Win 10 下 android studio显示 Intel haxm无法安装,以及VT-X和hyper-x的冲突问题
  6. php贴吧系统,PhpSay 开源贴吧系统 v2.1
  7. 俄亥俄州立大学计算机科学转学成功,托福97,我是如何转学成功的?
  8. RAR压缩包有密码怎么办
  9. codeforces228A Is your horseshoe on the other hoof?(水题)
  10. 桌面ie图标删不掉的解决技巧