halcon模板匹配干扰边缘消除办法(最硬核方式)

目录

  • halcon手绘形状匹配模板
    • 手绘形状匹配模板
    • 主要算子解析
        • draw_nurbs 绘制平滑曲线
          • 参数解释
        • create_shape_model_xld 使用XLD轮廓创建模板
          • 参数解释
    • 实例演示与解析
        • 实例代码展示与解析
        • 运行过程与处理展示
            • 读入图像
            • 绘制模板
            • 使用绘制的XLD创建模板
            • 查找模板

  • 博主写作不容易,还是需要您鼓励
  • 万水千山总是情 , 先点个赞行不行

最近做了个项目,遇到一个问题,就是在创建形状匹配模板时候,干扰太多,像麻绳一样。

使用自定义区域去消除吧,因为轮廓长,边缘干扰距离近,操作起来不方便;
使用CAD图形创建模板吧,又因为产品随意性比较强,每次换产品都要从新画模板。

最终决定使用手绘模板的方式解决这个问题。

halcon手绘形状匹配模板

手绘形状匹配模板

为了避免大家产生理解歧义,这里对手绘形状匹配模板做一个解释。
所谓手绘形状匹配模板,就是在图像上画XLD轮廓,将这个XLD轮廓作为形状匹配模板。这样模板就由我们手绘而成,我们想让模板长什么样,就把模板画成什么样。

主要算子解析

draw_nurbs 绘制平滑曲线

draw_nurbs — 界面交互式绘制平滑曲线

draw_nurbs( : ContOut : WindowHandle, Rotate, Move, Scale, KeepRatio, Degree : Rows, Cols, Weights)

我们一般使用时参数设置如下:
draw_nurbs (ContOut1, WindowHandle, ‘true’, ‘true’, ‘true’, ‘true’, 3, Rows, Cols, Weights)

参数解释

ContOut(output_object)xld_cont→对象
与手绘轮廓近似的NURBS曲线。
WindowHandle(input_control)窗口→(整数)
窗口句柄。
Rotate(input_control)字符串→(string)
旋转使能,轮廓交互时可以旋转
默认值:“ true”
值列表:“ false”,“ true”
Move (input_control)字符串→(string)
移动使能,轮廓交互时可以使能
默认值:“ true”
值列表:“ false”,“ true”
Scale(input_control)字符串→(string)
缩放使能,轮廓交互时可以缩放
默认值:“ true”
值列表:“ false”,“ true”
KeepRatio(input_control)字符串→(string)
缩放时是否保持比例,是否等比例缩放
默认值:“ true”
值列表:“ false”,“ true”
Degree(input_control)整数→(整数)
NURBS曲线的曲度。合理的值是3到25。
默认值:3
建议值:2、3、4、5
限制:Degree> = 2
Rows(output_control)坐标.y数组→(真实)
控件多边形的行坐标。
Cols(output_control)坐标.x数组→(实数)
控件多边形的列坐标。
Weights (output_control)实数数组→(实数)
权重向量。

create_shape_model_xld 使用XLD轮廓创建模板

create_shape_model_xld — 使用XLD轮廓创建模板

create_shape_model_xld(Contours : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, MinContrast : ModelID)

我们一般使用时参数设置如下:
create_shape_model_xld (Contours , ‘auto’,-rad(180), rad(360), ‘auto’, ‘auto’, ‘ignore_local_polarity’, 10, ModelID)

参数解释

Contours (input_object)xld_cont(-array)→对象
输入将用于创建模型的轮廓。
NumLevels(input_control)整数→(整数/字符串)
金字塔等级的最大数量。
默认值:“自动”
值列表:1、2、3、4、5、6、7、8、9、10,“自动”
AngleStart(input_control)angle.rad→(实数)
模板的起始角度。
默认值:-0.39
建议值:-3.14,-1.57,-0.79,-0.39,-0.20、0.0
AngleExtent(input_control)angle.rad→(实数)
模板旋转角度的范围。
默认值:0.79
建议值:6.29、3.14、1.57、0.79、0.39
限制:AngleExtent> = 0
AngleStep(input_control)angle.rad→(真实/字符串)
旋转角度的步长(分辨率)。
默认值:“自动”
建议值:“自动”,0.0175、0.0349、0.0524、0.0698、0.0873
限制:(AngleStep> 0)&&(AngleStep <=(pi / 16))
Optimization(input_control)字符串(-array)→(string)
一种优化,以及用于生成模型的可选方法。
默认值:“自动”
值列表:“ auto”,“ no_pregeneration”,“ none”,“ point_reduction_high”,“ point_reduction_low”,“ point_reduction_medium”,“ pregeneration”
Metric(input_control)字符串→(string)
匹配指标。
默认值:‘ignore_local_polarity’
值列表:‘ignore_color_polarity’,‘ignore_global_polarity’,‘ignore_local_polarity’,‘use_polarity’
MinContrast(input_control)编号→(整数)
搜索图像中对象的最小对比度。
默认值:5
建议值:1、2、3、5、7、10、20、30、40
ModelID(输出控制)shape_model→(整数)
模板的句柄。

实例演示与解析

实例代码展示与解析

*读入图片进行显示
read_image (Image, 'C:/Users/22967/Desktop/ZL2KB/1.bmp')
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
*手绘模板
draw_nurbs (ContOut1, WindowHandle, 'true', 'true', 'true', 'true', 3, Rows, Cols, Weights)   
*使用XLD轮廓创建模板
create_shape_model_xld (ContOut1, 'auto',-rad(180), rad(360), 'auto', 'auto', 'ignore_local_polarity', 10, ModelID)
*得到模板轮廓
get_shape_model_contours (ModelContours, ModelID, 1)  
*查找模板
find_shape_model (Image, ModelID, 0, 0, 0.8, 0, 0.5, 'least_squares', 0, 0.1, Row, Column, Angle, Score)
*显示查找结果
if(|Row|==0)dev_clear_window()dev_display(Image)          set_tposition (WindowHandle, 300, 300)write_string (WindowHandle, 'Not Find')stop()
else gen_cross_contour_xld (CrossFind, Row, Column, 200, Angle)
endif

运行过程与处理展示

读入图像

在这里插入图片描述

绘制模板

在这里插入图片描述

使用绘制的XLD创建模板

在这里插入图片描述

查找模板

在这里插入图片描述

  • 博主简介:
  • 工业自动化上位机软件工程师、机器视觉算法工程师、运动控制算法工程师。目前从业于智能制造自动化行业。 博主邮箱:2296776525@qq.com
  • 帮忙点个赞吧。哈哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一个PowerShell脚本——PowerShell三分钟(九)

前面把基础知识讲了一遍&#xff0c;现在我们开始写一个最初级的脚本写脚本的工具有很多&#xff0c;有文本文档&#xff0c;有PowerShell ISE&#xff0c;PowerShell Studio等&#xff0c;这里选用系统自带的PowerShell ISE这里大家依然要记得以管理员身份运行&#xff0c;否则…

MVC架构简介及其测试策略

最近在WEB端测试工作中陷入了瓶颈&#xff0c;单纯的手动功能测试在没有成熟的代码规范之前还是很容易坑的&#xff0c;WEB自动化测试一时半会还没有什么进展&#xff0c;所以决定先学习一下网站用的MVC架构&#xff0c;跟着教程写了一个小网站&#xff0c;大概也找到了WEB测试…

C++多线程实例(_beginThreadex创建多线程)

C多线程&#xff08;二&#xff09;(_beginThreadex创建多线程) C/C Runtime 多线程函数一 简单实例&#xff08;来自codeprojct&#xff1a;http://www.codeproject.com/useritems/MultithreadingTutorial.asp&#xff09; 主线程创建2个线程t1和t2&#xff0c;创建时2个线程…

halcon求取区域顶点

文章目录简介Halcon源代码处理效果博主写作不容易&#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 简介 使用halcon求取顶点的方法。 Halcon源代码 read_image (Image1, 1.png)points_foerstner (Image1, 1, 2, 3, 200, 0.3, gauss, false, RowJunctions, …

从excel表中生成批量SQL,将数据录入到数据库中

excel表格中有许多数据&#xff0c;需要将数据导入数据库中&#xff0c;又不能一个一个手工录入&#xff0c;可以生成SQL&#xff0c;来批量操作。1.首先在第二行的H列&#xff0c;插入函数&#xff1a;CONCATENATE("INSERT INTO book (bookid, title, volume, author, u…

Linux 的多线程编程的高效开发经验

转自&#xff1a;http://www.chineselinuxuniversity.net/articles/22615.shtml 本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验&#xff0c;用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中&#xff0c;我们穿插一些 Windows 的编程用例用以对…

Visual C++中error spawning cl.exe解决办法

| 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 今天安装Vc6.0的时候出现了一个error spawning cl.exe的错误&#xff0c;在网上找了一些资料&#xff0c;才知道这是因为路径设置的问题引起的&#xff0c; “cl.exe”是VC真正的程序编译器&…

HEXA机器人荣获CES Asia2018 创新奖

2019独角兽企业重金招聘Python工程师标准>>> 6月13日至15日&#xff0c;亚洲消费电子展CES Asia 2018将在上海新国际博览中心如期举行。在活动到来前&#xff0c;美国消费技术协会&#xff08;CTA&#xff09;于5月24日&#xff0c;提前揭晓了“2018亚洲消费电子展创…

【bzoj3994】[SDOI2015]约数个数和 莫比乌斯反演

题目描述 设d(x)为x的约数个数&#xff0c;给定N、M&#xff0c;求 输入 输入文件包含多组测试数据。 第一行&#xff0c;一个整数T&#xff0c;表示测试数据的组数。接下来的T行&#xff0c;每行两个整数N、M。输出 T行&#xff0c;每行一个整数&#xff0c;表示你所求的答案…

Linux根文件系统结构再认识

Linux根文件系统结构再认识刘建文&#xff08;http://blog.csdn.net/keminlau &#xff09; INTRO 尽管Linux的根文件系统在形式表现上是一体的&#xff08;所有数据目录均为根目录下的子目录&#xff09;&#xff0c;但实际它们是多个不同的【逻辑主体】&#xff08;为了实现…

在Window10上使用Ubuntu终端

在Windows10上使用Ubuntu终端 习惯了ubuntu的开发&#xff0c;回到windows的command可以说是很绝望了。之前偶尔用windows时一直用git-bash来代替。但是发现windows已经添加了对ubuntu子系统的支持&#xff0c;那直接用不是更爽。 1.安装 进入控制面板&#xff0c;开启适用于Li…

为静态博客生成器WDTP移植了一款美美哒主题

前言 关于这个主题的移植后公布&#xff0c;我已经联系了主题作者并取得同意&#xff0c;这个主题是一夜涕所写的Sgreen&#xff0c;预览图见下 关于WDTP 就是一个很方便很便携很快速的cpp编写的带gui跨平台的开源的静态博客生成器&#xff0c;软件作者更新记录在V站可以找到,软…

TCP/IP数据包结构分析

一般来说&#xff0c;网络编程我们只需要调用一些封装好的函数或者组件就能完成大部分的工作&#xff0c;但是一些特殊的情况下&#xff0c;就需要深入的理解 网络数据包的结构&#xff0c;以及协议分析。如&#xff1a;网络监控&#xff0c;故障排查等…… IP包是不安全的&am…

世界杯快到了,看我用Python爬虫实现(伪)球迷速成!

还有4天就世界杯了&#xff0c;作为一个资深&#xff08;伪&#xff09;球迷&#xff0c;必须要实时关注世界杯相关新闻&#xff0c;了解各个球队动态&#xff0c;这样才能在一堆球迷中如&#xff08;大&#xff09;鱼&#xff08;吹&#xff09;得&#xff08;特&#xff09;水…

Bootstrap学习笔记(四)-----Bootstrap每天必学之表单

本文主要讲解的是表单&#xff0c;这个其实对于做过网站的人来说&#xff0c;并不陌生&#xff0c;而且可以说是最为常用的提交数据的Form表单。本文主要来讲解一下内容&#xff1a; 1.基本案例2.内联表单3.水平排列的表单4.被支持的控件5.静态控件6.控件状态7.控件尺寸8.帮助文…

服务器租用单线、双线、bgp 相比有哪些区别优势?

2019独角兽企业重金招聘Python工程师标准>>> 在IDC行业中&#xff0c;服务器的稳定性、安全性是考核服务商的主要指标&#xff0c;影响这两个指标的因素有很多&#xff0c;其中比较重要的有三个&#xff0c;分别是服务器的配置、机房骨干网宽带和机房的线路。我们常…

SQL Server 数据库的维护(四)__游标(cursor)

--维护数据库-- --游标(cursor)-- --概述&#xff1a; 注&#xff1a;使用select语句查询结果的结果集是一个整体&#xff0c;如果想每次处理一行或一部分行数据&#xff0c;游标可以提供这种处理机制。可以将游标理解为指针。指针指向哪条记录&#xff0c;哪条记录即是被操作记…

关于在unity中动态获取字符串后在InputField上进行判断的BUG

今天想做一个简单的密码锁定控制功能&#xff0c;但是出现了问题。我是在游戏开始时读取streamingAsset中的text中的文本&#xff0c;其实就是密码如下图密码是123456789 然后我在程序中输入了该密码出现错误&#xff0c;居然错了。 然后我打印读取的文本信息是什么、没错啊。然…

转载 调用xvid 实现解码

2011-06-01 00:26:14) 转载view plaincopy to clipboardprint? /// intinit_decoder() { intret; xvid_gbl_init_t xvid_gbl_init; xvid_dec_create_txvid_dec_create; memset(&xvid_gbl_init, 0,sizeof(xvid_gbl_init_t)); memset(…

创业感悟:技术兄弟为什么一直没有起来(1)

相信很多做技术的朋友&#xff0c;看到“人脉”两个字&#xff0c;就显得有些敏感&#xff0c;有人甚至产生一种“抵触”的心理。 因为在很多人的心中&#xff0c;会自动的把“人脉”和“关系”关联起来&#xff0c;会把“人脉”与“走后门”&#xff0c;甚至会和“酒桌文化”&…