Halcon模版匹配
记录下自己遇到的一次模板匹配的难题.方便以后举一反三.
遇到的是两颗螺丝,受环境光影响,轮廓非常复杂.思考逻辑如下:
1.减少轮廓复杂程度,使用到的算子edges_sub_pix
edges_sub_pix (ImageReduced, Edges, 'canny', 6, 20, 40)
2.使用xld创建模板create_shape_model_xld
create_shape_model_xld (Edges, 'auto', 0, 0, 'auto', 'auto', 'ignore_local_polarity', 30, ModelID)
3.reduce_domain减少搜索范围 find_shape_model匹配取结果,这里会把没有打螺丝的也找到,因为轮廓简化了
4.使用get_grayval在中心点取10点像素点的颜色做判断.
编辑好的halcon文件放在:三种模板匹配例子,有普通轮廓,非常复杂的轮廓简化.-数据集文档类资源-CSDN下载三种模板匹配例子,有普通轮廓,按区域重新生成简化图片创建模板.然后匹配.非常复杂的轮廓简化.再更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/lw8014/85800016
read_image (Image, 'clip')
gen_rectangle2 (ROI_0, 117, 185, rad(40.1207), 116.387, 41.7915)
reduce_domain (Image, ROI_0, ImageReduced)
*创建匹配模板
create_shape_model (ImageReduced, 'auto', -0.39, rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*write_shape_model (ModelID, 'C:/Users/斌/Desktop/sss/xxx.shm')*写入创建好的模板
*read_shape_model ('C:/Users/斌/Desktop/sss/xxx.shm', ModelID)*读取以前创建好的模板
*获取创建好的模板轮廓显示在0,0位置
get_shape_model_contours (ModelContours, ModelID, 1)*参数说明:
*1、要匹配的图元 2、模型句柄 3、模型最小旋转角 4、模型最大旋转角 5、行方向的最小缩放比 6、行方向最大缩放比 7、列方向最小缩放比 8、列方向最大缩放比 9、找到模型的最小分数
*10、找到模型的数量 11、模型的最大重叠 12、亚像素精度 13、金字塔数 14、贪婪值 15、16找到的图像的中心坐标;17、18行列的缩放比 20、得分
find_shape_model (Image, ModelID, -0.39, rad(360), 0.7, 20, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
if (|Score|>0)dev_display (Image)dev_display_shape_matching_results (ModelID, 'red', Row, Column, Angle, 1, 1, 0)*显示匹配的分数disp_message (200000, Score, 'window', Row, Column+5, 'black', 'true')
endif
模版匹配类型 |
执行步骤 |
应用场合 |
基于组件匹配 |
|
组件匹配是形状匹配的扩展,但不支持大小缩放匹配; 适用于多个对象定位的场合, |
基于形状匹配 |
|
定位对象内部的灰度值可以有变化,但对象边缘轮廓必须清晰平滑的场合 |
基于灰度匹配 |
|
定位对象内部的灰度值必须没有大的变化,没有缺失的部分,没有干扰图像噪声的场合 |
基于互相关匹配 |
1.创建模版create_ncc_model; 2.搜索模版find_ncc_model; 3.释放模版clear_ncc_model; |
搜索对象有轻微的变形,大量的纹理,模糊图像中的对象等场合,其速度快于传统的灰度匹配; |
基于变形匹配 |
1.创建模版create_local_deformable_model; 2.搜索模版find_local_deformable_model; 3.释放模版clear_deformable_model; |
对象有轻微的变形的场合 |
基于描述匹配 |
1.创建模版create_calib_descriptor_model; 2.搜索模版find_calib_descriptor_model; 3.释放模版clear_descriptor_model; |
对象有透视变形的场合,但它不是通过对象的轮廓来匹配的,而是根据一些描述的点来进行匹配的,这些点按照位置和灰度值进行的分类。 |
Halcon模版匹配相关推荐
- halcon模板匹配学习(一) Matching 初印象
什么是模板匹配呢?简单而言,就是在图像中寻找目标图像(模板),或者说,就是在图像中寻找与模板图像相似部分的一种图像处理技术.依赖于选择的方法不同,模板匹配可以处理各种情形下的变换,如照明.杂点.大小. ...
- halcon 形状匹配
halcon 形状匹配 1.例子 指定模板图像区域(也可以用draw_rectangle1画一个矩形) Row1 := 188 Column1 := 182 Row2 := 298 Column2 : ...
- 最简单的目标跟踪(模版匹配)
最简单的目标跟踪(模版匹配) zouxy09@qq.com http://blog.csdn.net/zouxy09 一.概述 目标跟踪是计算机视觉领域的一个重要分支.研究的人很多,近几年也出现了很多 ...
- halcon模板匹配实践(1)算子参数说明与算子简介
create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, ...
- java实现图像模版匹配(蜗牛学院)
package com.woniu.test;import java.awt.AWTException; import java.awt.Rectangle; import java.awt.Robo ...
- Halcon:模版匹配
一:函数介绍 1.创建模板 create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimiz ...
- halcon模板匹配学习(二) 准备模板
如下,我们将介绍匹配的第一个操作:准备模板 初始时刻,我们准备好参考图像,并对其做一定的处理,然后我们需要从参考图像中导出模板,也就是将参考图像裁剪成所谓的模板图像.获取模板图像可以通过设置ROI来完 ...
- 基于openCV的形状模版匹配
初衷 果然halcon用顺手了,人就变懒了,正好有项目需要自己写个形状匹配的程序,就拿来练练手,程序不是很复杂,速度上感觉和halcon里面find_scaled_shape_model还是有差距,目 ...
- Halcon 模板匹配专栏
1.基于形态的匹配 先看原图 首先将要匹配的图片剪切出来 代码如下 *读取模板图片和要查找的目标图片 read_image (Image, 'green-dot') *read_image (Imag ...
最新文章
- oracle 14108,ORA-14108:非法分区扩展表名的语法
- iOS日常工作之常用宏定义大全
- 用stm32开发时是直接买现成的开发板还是芯片?开发板学习,芯片硬件设计
- [Aaronyang] 写给自己的WPF4.5 笔记6[三巴掌-大数据加载与WPF4.5 验证体系详解 2/3]
- tcc读写文本txt文件
- 中科院的java_java 中调用中科院分词系统
- 面试题之丑数的C++实现求解(孤陋寡闻了,才知道丑数这么high的东东)
- 测试面试题集-Dubbo常见面试题
- python贪心算法几个经典例子_闲来无事整一下贪心算法 用python实现的
- php把数据存到cookie,php – 在cookie中存储数组
- 2021-02-23 根据RNA-seq测序数据判断文库类型和链特异性
- [llvm cookbook] 1、LLVM设计与使用
- 网络技术大讲堂:什么是IPv6+?
- continue语句只用于循环语句中_Python尚学堂高淇|P60P63break语句,else语句使用,循环代码的优化...
- 华为 、锐捷、新华三、睿易网络设备怎么选
- Android 11.0 12.0蓝牙遥控器确认键弹不出输入法的解决方法
- 巴贝奇计算机科学思想,计算机之父巴贝奇_图灵_计算机科学之父
- 收藏,全网开发者都在学的26门AI课程!
- 大数据之路、阿里巴巴大数据实践读书笔记 --- 第二章、日志采集
- python PIL的Image.resize()和Image.thumbnail()函数的区别
热门文章
- 程序员撩妹专用~~~好看的H5立方体创意相册,资源免费!!!程序员送给女孩子的礼物,非常适合送给小姐姐!
- lumen php命令,lumen控制器调用artisan
- barcode4j生成条形码及打印条码开发介绍
- 计算机上64位数和32位数,cad中32位和64位的区别是什么?
- hbuilderx安装教程_HBuilderX入门教程
- keil设置c语言字体大小,Keil uVision4怎么放大字体?放大字体和关键字标注颜色方法介绍...
- 饭店点餐系统之数据库表结构
- Vue报错:Uncaught (in promise) ReferenceError Message is not defined at eval
- adb安装报错情形以及解决办法
- Net-snmp添加子代理示例