2018-11-16 14:09:08
如果不了解最小二乘算法 请先阅读: Least squares的算法细节原理https://en.wikipedia.org/wiki/Least_squares通常在halcon中拟合直线会用houghline或者 fitline。本文提供一种新的选择,用halcon的矩阵操作实现最小二乘拟合直线首先随机生成一组数据
Mx:=[100:10:500]
tuple_length(Mx,len)...
2018-11-16 13:34:24
收到一封email,有个学员求助去除衣服上纹理的干扰,然后提取衣服上徽章的边缘的方法。我想他肯定是个很努力上进的boy,在求助以前也许已经试过各种方法,通过二值化不断的调试阈值, 寻找各种边缘检测的算子不断的实验,或者更高阶的用FFT试图去掉背景等等,我想起了我刚入门的时候 那股不达目的绝不罢休的狠劲,在网络上或者图书馆搜索相关的书籍, 试图找到答案,然而受制于自身知识体系的不完善,并不能得到满意...
2018-11-15 20:39:52
这是一条金属棒上的伤疤,不知道被什么啃去了一块,你说该怎么才能把这个伤疤提取出来呢?肯定是非常简单的,核心一定是threshold算子做阈值分割,然后就是select_shape选择区域只不过在threshold算子的前置算子会有所不同,在select_shape后面的后置算子也如此。本例子提供三种方法,基本上思路都是增加图像,然后threshold阈值分割。方法一。dev_update_off...
2018-11-14 20:38:44
先来张素材图read_image (Image, 'C:/Users/Administrator/Desktop/划痕+油污+瑕疵的检测/划痕、油污、瑕疵/胶囊表面污点检测/Image.bmp')
rgb1_to_gray(Image,GrayImage)
scale_image_max(GrayImage,ImageScaleMax)
mean_image(ImageSca...
2018-11-12 15:54:32
Chapter_14:Regions14.1 Access1. get_region_chain 功能:一个对象的轮廓(contour)作为链式码。2. get_region_contour 功能:查询一个目标的轮廓(contour)。3. get_region_convex 功能:查询突起的外表作为轮廓(contour)。4. get_region_points 功能:查询一个区域的像...
2018-11-11 10:58:29
当我们想要提取Region时,图像处理后,往往存在几个类似的Region,此时,需要根据Region的一些特殊特征,来选择指定的Region。求Region指定特征值:region_features(Regions : : Features : Value)根据特征值选择区域:select_shape(Regions : SelectedRegions : Features, Operation,...
2018-11-10 21:00:36
上篇我们讲到通过动态定位焊点的ROI区域,以排除压块位置跳舞的影响。正常情况下,我们的region可以通过下移30个像素,取得很好的覆盖ROI,如图:但是,上面的算法在移动30个像素时,无法处理下面这样的情况,如图:因此,我们的算法必须能检测我们要移动的30个像素是否会超出焊片(白色)的区域。我们先把程序放上来:list_files ('C:/Users/Administrator/Des...
2018-11-09 14:01:29
Deep Learning(深度学习)ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):一ufldl的2个教程(这个没得说,入门绝对的好教程,Ng的,逻辑清晰有练习):二Bengio团队的deep learning教程,用的theano库,主要是rbm系列,搞python的可以参考,很不错。deeplearning.net主页,里面包含的信息量非常多,有software...
2018-11-09 13:55:10
划痕、油污、瑕疵,常用的方法有傅里叶变换和Blob分析。1.表面划痕invert_image(Image,ImageInvert1)
mult_image(ImageInvert1, ImageInvert1, ImageResult,0.01, 0)
gen_sin_bandpass (ImageBandpass, 0.6, 'none', 'rft'...
2018-11-09 13:42:30
参考了HALCON例程和其他网友的思路, 简单地去除周期性噪声方法如下. 因是初学者,所以有错误的地方还请多多指正.素材图片:程序:read_image (Image1, 'C:/Users/Administrator/Desktop/a1.png')
get_image_size (Image1, Width, Height)
fft_generic (Image1, I...
2018-11-09 13:23:32
一、什么是图像噪声?噪声在图像上常表现为一引起较强视觉效果的孤立像素点或像素块。一般,噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。二、噪声来源—两个方面(1)图像获取过程中两种常用类型的图像传感器CCD和CMOS采集图像过程中,由于受传感器材料属性、工作环境、电子元器件和电路结构等影响,会引入各种噪声,如电阻引起的热噪声、场效应管的沟道...
2018-11-08 19:57:36
1、close_all_framegrabbers ( : : : ) 关闭所有图像采集设备。2、close_framegrabber ( : : AcqHandle : ) 关闭Handle为AcqHandle的图像采集设备。3、open_framegrabber ( : : Name, HorizontalResolution,VerticalResolution, ImageWid...
2018-11-08 16:29:19
例程:detect_indent_fft.hdev说明:这个程序展示了如何利用快速傅里叶变换(FFT)对塑料制品的表面进行目标(缺陷)的检测,大致分为三步:首先,我们用高斯滤波器构造一个合适的滤波器(将原图通过高斯滤波器滤波);然后,将原图和构造的滤波器进行快速傅里叶变换;最后,利用形态学算子将缺陷表示在滤波后的图片上(在缺陷上画圈)。注:代码中绿色部分为个人理解和注释,其余为例程中原有代码
*...
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 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...