说明:模板匹配是halcon的强项,opencv自带的模板匹配算子跟halcon这个比起来差好几层楼那么多。
在视觉引导定位时,模板匹配是少不了的东西。
所有的新手在遇到阈值搞不定的应用时,都会想到模板匹配,可见其概念和易用性已经深入人心。
但实际上halcon的模板匹配的知识点还是很多的,并非仅仅是我们常见的形态模板匹配。
勇哥这个系列贴子用来补全halcon模板匹配的相关系列知识。使用基于描述符的模板匹配在图片序列中寻找不同姿式的饼干盒子这个例子展示了如何使用基于描述符的匹配特性找到
最近做了个项目,遇到一个问题,就是在创建形状匹配模板时候,干扰太多,像麻绳一样。使用自定义区域去消除吧,因为轮廓长,边缘干扰距离近,操作起来不方便;使用CAD图形创建模板吧,又因为产品随意性比较强,每次换产品都要从新画模板。最终决定使用手绘模板的方式解决这个问题。halcon手绘形状匹配模板手绘形状匹配模板为了避免大家产生理解歧义,这里对手绘形状匹配模板做一个解释。所谓手绘形状匹配模板,就是在图像上画XLD轮廓,将这个XLD轮廓作为形状匹配模板。这样模板就由我们手绘而成,我们想让模板长什么样,就
Variation Model的主要原理是将待检测的图像与一张标准图像作比较,找出待检测图像与标准图像(ideal image)的明显差异(也就是不良)。标准图像可以采用几张OK品的图像训练(training)得到,也可以通过对一张OK品图像进行处理得到。训练后得到标准图像和一张variation图像(variation image),variation图像中包含了图像中每个像素点灰度值允许变化的范围。标准图像和variation图像用来创建一个variation model,如此,其他图像就可
如下图所示为偏转摆正后的图像,截取“PROD”固定字符创建NCC模板 ;NCC 算法= normalized cross correlation,归一化互相关匹配法创建模板* 图像增强
scale_image (ImageReduced, ImageScaled, 2.74194, -129)
threshold (ImageScaled, Regions, 179, 25
这个例子中,在相机聚焦清晰的图片中创建一个ncc的模板。随后,相机变焦数次,然后在这些失焦的图片中再模板,可以看到ncc相关性模板匹配很好的适合了图片的这种变化,稳定的找到了模板。聚焦清楚的图变焦严重的情况下准确的找到模板演示代码:dev_update_off ()
read_image (Image, 'smd/smd_on_chip_05')
get_image_size (Image, Width, Heigh
一、先来看理论:摘自论文《基于HDevelop的形状匹配算法参数的优化研究》1. Shape-Based matching的基本流程HALCON提供的基于形状匹配的算法主要是针对感兴趣的小区域来建立模板,对整个图像建立模板也可以,但这样除非是对象在整个图像中所占比例很大,比如像视频会议中人体上半身这样的图像,我在后面的视频对象跟踪实验中就是针对整个图像的,这往往也是要牺牲匹配速度的,这个后面再讲。基本流程是这样的,如下所示:⑴首先确定出ROI的矩形区域,这里只需要确定矩形的左上点和右下点的坐标即
我们知道opencv的模板匹配是个鸡肋,效果跟halcon的模板匹配没法比。感谢下面这位大神贡献了实现类似halcon形状匹配的源码。前言用过halcon形状匹配的都知道,这个算子贼好用,随便截一个ROI做模板就可以在搜索图像中匹配到相似的区域,并且能输出搜索图像的位置,匹配尺度,匹配角度。现在我们就要利用opencv在C++的环境下复现这个效果。我们先看下复现的效果图,提升下学习的欲望(要在搜索图像中找到所有的K字母)。下图是模板图像,为一个"K"字母。下图是待搜索的图像,
形态模板的定义与查找是工业视觉里最基本的常用操作。下面勇哥提供一个例子。下图是定义形态模板,并且显示模板轮廓。换一张不同姿式的图片,查找模板,并显示模板轮廓、ROI、中心点。dev_set_draw ('margin')
dev_set_color('green')
dev_close_window()
dev_open_window(0, 0, 512, 382, 'black', 
下面是标准位置的图片,使用使用它创建了一个shape model,名字为:Matching 02.shm下图是需要做模板匹配,摆正姿式的图片。下图是模板匹配后,再使用仿射运算后旋转到正确位置的图像。源代码: //find_shape_model
var winHandle = win.HalconWindow;
var ModelId=halcon.read_shape_model(@"C:\Us
基于组件的模板匹配:应用场合:组件匹配是形状匹配的扩展,但不支持大小缩放匹配,一般用于多个对象(工件)定位的场合。算法步骤:1.获取组件模型里的初始控件 gen_initial_components()参数:ModelImage [Input] 初始组件的图片InitialComponents [Output] 初始组件的轮廓区域ContrastLow [Input] 对比度下限ContrastHigh [Input] 对比度上限MinSize [Input] 初始组件的最小尺寸Mode[Inp