2018-11-07 15:35:35
area_center_gray ( Regions, Image : : : Area, Row, Column ) 计算Image图像中Region区域的面积Area和重心(Row,Column)。cooc_feature_image ( Regions, Image : : LdGray, Direction : Energy,Correlation, Homogeneity, Cont...
2018-11-06 22:34:35
如果机构连压块的位置都不给你保障,那就惨了,就如下图这个样子了。左边的图如果算是正常的话,右边的图是不是你想叫妈?压块的位置在跳舞,逼得你不能用固定的ROI来框焊点。 来一张素材图,然后我来整个算法的思路。基本的思路是,threshold算子取得白色部分的region,然后求出一个内接的Rectangle,然后做下定位把这个矩形画出来。这个就是我们要的动态的ROI了,无论压块怎么跳舞都不怕了!li...
2018-11-06 21:22:05
这个问题是偶尔出现的,一般情况下是可以选择的。我们选择Regrion或者XLD是为了查看它的特征属性,不能选择时让人火大!为什么有时候不能选择呢?注意看下面的图,当你出现编辑ROI窗口时是无法选择XLD或者Region。关闭这个ROI窗口就可以了!2019/11/15勇哥补注:最近工作换成halcon17后,发现经常出现鼠标选择不了region。强烈怀疑是因为halcon17的问题,其实不是,还是...
2018-11-02 21:30:02
上一篇讲述的例子用的素材是“善良”图片,只能用来说明一下焊点检测的基本原理。由于机器机构设计的局限,例如焊点检测工位的前工位缺少辗平焊极的工位,或者焊片本身上下弯曲而没有在压平状态下检测,或者每片焊片上的焊点位置不固定,等等。会造成灯光不能很好的白化背景暗化焊点,时不时来几片焊点与背景混在一起的图片,让你痛不欲生。例如下面这些奇葩,它们的特征是:粘连,和背景混合 我们来一张背景干扰的素材,它...
2018-11-02 20:47:58
我们来看一下焊点检测的基础算法,这种方法基于halcon的形态学算法。其基本流程为: 阈值分割->填充region->选择region下面是实验图片。下面为halcon程序:read_image (Image23, 'C:/Users/Administrator/Desktop/焊点图片/23.bmp')
gen_rectangle1 (ROI_0, 300.12...
2018-10-28 14:58:21
引言: 本章介绍焊点检测的生产工艺的基础知识,下一章会介绍基础的焊点检测方法。这种方法基于halcon视觉软件包,教程中笔者使用的halcon版本是halcon10。演示程序会提供halcon和C#两个平台的,其中C#的演示程序使用了netMarketing库中的视觉功能,该功能是对halcon功能的二次封装,以方便在windows平台的上位机上使用halcon的视觉功能。一、焊点检...
2018-10-27 15:30:34
halcon窗体连续拍照并处理结果,几分钟后整个程序界面失去响应。在任务管理器中会提示程序已经失去响应。这种问题多半跟跨线程调用有关系。也就是说,处理图像的线程想在halcon窗体内显示结果,但是halcon控件是另一个界面线程中的控件。例如下面一段程序就是halcon进行图片处理并且显示结果。其中 m_HWCtrl.InvokeRequired 这个如果为true,则表示调用控件m_HWCtrl...
2018-10-25 20:42:43
今天终于解决了困扰我很久的一个问题,在VC中调用HALCON中的分割函数后,在最后返回显示时总是报错,让我郁闷了很久,Undefined gray in get_image_pointer3 或Undefined gray in get_image_pointer。 原来问题出在对于bin_threshold、threshold等这些分割函数的返回值上面,把返回值当成Image变量直接赋...
2018-10-24 21:51:04
在学习halcon算子sub_image(ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : )时,在样例中遇到了一个操作* This example demonstrates how to subtract two images
* using the operator 'sub_image'.
*
*
dev...
2018-10-24 21:24:47
1, autobahn.hdev: Fast detection of lane markers控制语句MinSize:=30get_system('init_new_image', Information)得到当前halcon系统的参数值(这里执行后得到information的值为' true')set_system('init_new_image'...
2018-10-24 20:49:33
Compute the distance transformation of a region 该算子的作用是计算对region转换距离。该算子的形式为distance_transform(Region : DistanceImage :Metric,Foreground,Width,Height : ) 怎么理解这个算子呢,他的作用是输出一副图像,这幅图像是每个点到这个reg...
2018-10-24 10:47:35
焊点检测的难点主要在于图像上粘连的焊点怎么处理,例如下图中右上边的两个焊点就粘连在一起。这个问题比较难以处理,下面的例子给出的基本策略是利用腐蚀来进行处理。原图,待检测焊点处理后的图像,可以看到9个焊点都检测到了。源程序: //焊点检测
var winHandle = win.HalconWindow;
var Image1 = halcon.read_image("C:/Use...
2018-10-23 21:23:45
下面是标准位置的图片,使用使用它创建了一个shape model,名字为:Matching 02.shm下图是需要做模板匹配,摆正姿式的图片。下图是模板匹配后,再使用仿射运算后旋转到正确位置的图像。源代码: //find_shape_model
var winHandle = win.HalconWindow;
var ModelId=halcon.read_shape_model(@&...
2018-10-21 18:58:55
基于组件的模板匹配:应用场合:组件匹配是形状匹配的扩展,但不支持大小缩放匹配,一般用于多个对象(工件)定位的场合。算法步骤:1.获取组件模型里的初始控件 gen_initial_components()参数:ModelImage [Input] 初始组件的图片InitialComponents [Output] 初始组件的轮廓区域ContrastLow [Input] 对比度下限ContrastH...
2018-10-21 18:51:19
NCC匹配基于Normalized cross correlation(NCC)用来比较两幅图像的相似程度已经是一个常见的图像处理手段。在工业生产环节检测、监控领域对对象检测与识别均有应用。NCC算法可以有效降低光照对图像比较结果的影响。而且NCC最终结果在0到1之间,所以特别容易量化比较结果,只要给出一个阈值就可以判断结果的好与坏。传统的NCC比较方法比较耗时,虽然可以通过调整窗口大小和每次检测...
2018-10-19 19:27:11
《zw版·Halcon-delphi系列原创教程》 Halcon分类函数013,shape模型为方便阅读,在不影响说明的前提下,笔者对函数进行了简化::: 用符号“**”,替换:“procedure”:: 用大写字母“X”,替换:“IHUntypedObjectX”:: 省略了字符:“const”、“OleVariant”【示例】 说明函数:procedure AddNoiseWhiteConto...
2018-10-19 17:17:47
德国MVTec公司开发的HALCON机器视觉开发软件,提供了许多的功能,在这里我主要学习和研究了其中的形状匹配的算法和流程。HDevelop开发环境中提供的匹配的方法主要有三种,即Component-Based、Gray-Value-Based、Shape-Based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配。这三种匹配的方法各具特点,分别适用于不同的图像特征,但都有...
2018-10-19 17:12:20
初始时刻,我们准备好参考图像,并对其做一定的处理,然后我们需要从参考图像中导出模板,也就是将参考图像裁剪成所谓的模板图像。获取模板图像可以通过设置ROI来完成。对于某些应用来说,也可以使用综合模板代替模版图像。综合模板既可以是综合创造的模板图像,也可以是一个XLD轮廓。裁剪参考图像,使之成为模板图像为了创建模板图像,我们需要从参考图像中选取ROI,并使用 reduce_domain裁剪图像的定义域...
2018-10-19 17:09:39
任务:选出图中的白色圆形区域;使用基于灰度的模板匹配,主要使用以下算子:add_channels() ——把灰度值添加到区域中。best_match() ——寻找一个模板和一个图像的最佳匹配。dev_clear_window ()
read_image (Image, 'C:/Users/Administrator/Desktop/image.bmp')
gen_circle...
2018-10-19 17:05:53
halcon的模板匹配种类有很多种,方法各有优缺点,一般有基于灰度的匹配,基于形状的匹配等等,这里具体理论和方法不做详解,只简单总结一个实例。图像匹配一般需要对旋转放缩进行处理,另外为了提高搜索效率,常用用图像金字塔来处理模板图像,图像金子塔就是把图像按一定算法,缩小为不同比例的模板,减少像素。一般的模板匹配流程如下:所以首先创建模板,模板的创建就是采集一张自己需要的原始图像,如下我采集的原始图像...
2018-10-19 16:57:26
二维仿射变换,顾名思义就是在二维平面内,对对象进行平移、旋转、缩放等变换的行为(当然还有其他的变换,这里仅论述这三种最常见的)。 Halcon中进行仿射变换的常见步骤如下:① 通过hom_mat2d_identity算子创建一个初始化矩阵(即[1.0, 0.0, 0.0, 0.0, 1.0, 0.0]);② 在初始化矩阵的基础上,使用hom_mat2d_translate(平移)、hom_mat2...
2018-10-19 16:53:58
Halcon中实现旋转的方式由两种。一种是rotate_image,该方式实现简单,但只能绕中心旋转。二是affine_trans_image,该方式实现较复杂,但是可以实现绕任意位置的旋转。1 rotate_image*Image和ImageRotate分别是输入和输出图像
*Phi是输入的旋转度数
*interpolation是内插方式,默认为'constant' rota...
2018-10-19 16:37:26
create_shape_model创建模板,这个函数有许多参数,其中金字塔的级数由Numlevels指定,值越大则找到物体的时间越少,AngleStart和AngleExtent决定可能的旋转范围,AngleStep指定角度范围搜索的步长;这里需要提醒的是,在任何情况下,模板应适合主内存,搜索时间会缩短。对特别大的模板,用Optimization来减少模板点的数量是很有用的;MinConstra...
2018-10-19 16:15:11
注:本文内容大量引用了王成群所著《Halcon工业使用教程》第二册中9.1.3 find_shape_mode的内容。 HALCON中最实用的算子find_shape_model,该算子通过模板在图像中寻找没有几何缩放的目标。本文重点对其主要参数进行了归纳整理。通过对该参数的分析,得出通过优化匹配角度、金字塔层数以及贪婪度可减少模板寻找的时长。 find_shape_model...
2018-10-19 15:04:11
halcon有三种模板匹配方法:即Component-Based、Gray-Value-Based、Shaped_based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配,此外还有变形匹配和三维模型匹配也是分属于前面的大类本文只对形状匹配做简要说明和补充:Shape_Based匹配方法:上图介绍的是形状匹配做法的一般流程及模板制作的两种方法。先要补充点知识:形状匹配常见的...
2018-10-19 14:59:13
Rinspect_gasket_local_deformable.hdev检测垫圈局部变形*这个例子演示了如何利用局部变形匹配(local deformable matching)来寻找出垫圈是否变形dev_update_off()Smoothness:=25read_image(ModelImage,..read_image( Image,......下面是ModelImage和Image(两个...
2018-10-19 13:34:05
halcon软件最高效的一个方面在于模板匹配,号称可以快速进行柔性模板匹配,能够非常方便的用于缺陷检测、目标定位。下面以一个简单的例子说明基于形状特征的模板匹配。为了在右图中,定位图中的三个带旋转箭头的圆圈。注意存在,位置、旋转和尺度变化。上halcon代码:dev_update_pc ('off')
dev_update_window ('off')
de...
2018-10-19 09:30:03
图像分割之阈值分割: 请参见halcon例程:gray_histo.hdev 此例程中主要用到两个算了: 1.gray_histo(Regions,Image:::AbsoluteHisto,RelativeHisto) 作用:获得图像的某一指定区域内的灰度分布,将数据写入到参数AbsoluteHisto和RelativeHisto 其中AbsoluteHisto是指图像内0-255灰度...
2018-10-18 13:35:43
Image一 读取的3种方式:read_image( image,'filename') //image 是输出对象,后面是输入文件的路径和名称读取多图: 1,申明一个数组,分别保存路径ImagePath:=[]ImagePath[0]:='D:/1.bmp'ImagePath[1]:='D:/2.bmp'ImagePath[2]:=...
2018-10-18 13:34:31
1. 无论读入什么图像,读入图像显示效果明显和原始图像不一致,哪怕是从相机读入的图像,也是明显颜色差异。什么原因引起?初步诊断是,显示的时候调用的颜色查找表存在异常不是 default ,而是其它选项。此时可以通过查阅相关参数,调用set_system解决,也可以 在 编辑-》参数选择-》颜色查找表进行更改 。2. 裁剪图像;从图像上截取某段图像进行保存。如何实现该操作 ?首先应该知道,regio...