2018-11-16 14:18:33
在日常工程应用中,我们通常通过halcon的 shape-based matching(形状匹配)进行各种定位,如以前文章介绍的这样,理解各个参数并灵活应用通常就能得到很好的匹配效果和匹配速度,当待匹配物体有轻微变形时,并不影响得到的匹配结果,然后当待匹配物体有较大变形时,如塑料产品在成形时变形、纺织产品的花纹因为褶皱变形等,要想得到精确的定位结果就显得捉襟见肘, 如下图所示,印刷品有较大变形,在...
2018-11-16 14:14:58
当我们用VC\C#调试halcon代码的时候,通常会遇到一个头痛的问题,我们无法看到halcon变量的调试信息如下图:什么鬼。。。什么鬼比如我们想看一个double数值变量,我们需要double score = htScore.D()或者当我们想看一个image、region的中间处理结果时,我们需要存文件或者输出到窗口中如此的繁琐以至于大大降低了开发效率。 然而这些烦恼在halcon12中得到了...
2018-11-16 14:12:21
很多扫描APP都有祛底色的功能:用于改善成像质量,通常扫描后的图像可能会用于存档或者再打印。 本来想通过扫描后打印,想法是好的,但是打印出来的文件不是自己想象的那样,打印出来有底色,而且很严重,那该怎么办才能解决? 熟悉photoshop的通常通过色阶调整来达到此目的,但是今天介绍的是用halcon灰度拉伸函数(scale_image)来达到此目的。下图是halcon祛底色的效果。在halcon的...
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:09:58
SourceTree的基本使用1. SourceTree是什么拥有可视化界面的项目版本控制软件,适用于git项目管理window、mac可用2. 获取项目代码1. 点击克隆/新建2. 在弹出框中输入项目地址,http或者ssh地址都可以如果箭头指向的仓库类型表明“这不是一个标准的Git仓库”,可能是有以下原因 1) 项目地址获取错误 2) 没有项目访问权限3. 点击“克隆”,等待项目克...
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-09 08:40:47
初学Xamarin ,各种折腾,大概这公司破电脑配置差,老是很多问题。2018.02.04备注,目前最新版问题越来越少了,报错时大家看输出最上面的报错百度就行了。GitHub 真是个好东西,可以参考别人做的,不过下载来运行不了就各种折腾了,为此我重装电脑两次了,反正win10安装就十几分钟的事。问题一:没有为此解决方案配置选中要生成的项目 这个问题的原因懒得找,可能是项目解决方案拷贝的bug解决...
2018-11-08 22:40:12
序 公司原因,要求用C#开发移动端app,老板觉得用现在会的C#做会比较快。。。从零开始,折腾一个多星期,重装系统三遍(强迫症),其它各种折腾,终于手机运行上了第一个APP,看看就好。。。不得不吐槽几个按钮没有任何事件安装包有40M+。 (2018.04.03补充安装包大小可以多个设置进行减小) 因为Xamarin被微软收购,所以标题关键字是"VS2017”,而不是"...
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-08 14:50:25
模板纹理识别的步骤 特征提取 图像处理(二值化选中感兴趣区域,灰度共生矩阵(原图和感兴趣区域)得到特征,sobel得到轮廓,灰度直方图得到特征) 创建分类器,添加特征,保存,识别 1.文件夹遍历 list_image_files(::ImageDirector,Options:ImageFiles) ImageDirector:文件夹路径; Options:搜索选项(‘default’默认值为’f...
2018-11-08 14:34:05
纹理分析是对图像灰度(浓淡)空间分布模式的提取和分析。纹理分析在遥感图像、X射线照片、细胞图像判读和处理方面有广泛的应用。关于纹理,还没有一个统一的数学模型。它起源于表征纺织品表面性质的纹理概念,可以用来描述任何物质组成成分的排列情况,例如医学上X 射线照片中的肺纹理、血管纹理、航天(或航空)地形照片中的岩性纹理等。图像处理中的视觉纹理通常理解为某种基本模式(色调基元)的重复排列。因此描述一种纹理...
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-11-01 22:36:34
直接加where约束——where T:struct(任何值类型都可以用作类型实参)。以后想改动该一下where字句就行。 private static T Sum<T>(T num1,T num2) where T : struct
{
dynamic v1 = num1;
dynamic v2 = num2;...
2018-11-01 21:17:06
焦距 镜头焦距指镜头光学后主点到焦点的距离,是镜头的重要性能指标。镜头焦距的长短决定着拍摄的工作距离、成像大小、视场角度大小及景深大小。一般常用的镜头的焦距为4mm、6mm、8mm、12mm、16mm、25mm、35mm、50mm。光圈/相对直径 相对孔径是指镜头直径与焦距的的比值;而光圈是相对孔径的倒数。通过调节镜头的光圈大小,可以控制镜头的入光量,图像的亮度也随之而变化。视场/...
2018-10-30 13:15:41
引言:一般来说,工业上的运动控制上我们要么使用运动控制板卡,要么直接使用带脉冲输出功能的PLC。一般运动较多的案子,使用PLC要更适合一些,这是因为插上运动板卡、运行着windows操作系统的工业电脑并不是绝对可靠的。因为windows是一个抢占式多任务系统,如果系统上跑着一些有bug的程序、或者中了病毒,你的工作软体可能会出现各种奇怪的问题。而且单纯从硬件上来看,电脑的硬盘比较脆弱,运动控制板卡...
2018-10-30 08:20:17
下面笔者总结一下实现项目中的闭环实现的要点:n 只有伺服液压栈的辊压机才可以进行闭环调节, 因为这种液压栈精度很高,最小可以+-0.5um调节都会生效n 目前的基本原理是测厚仪上传辊压机左侧厚度,右侧厚度,标准值。辊压机调节对应的左侧辊缝压力、右侧辊缝压力n 目前辊压机算法有两种。 一是做简单加减的操作。辊压机内部会有自己最小调节压力,跟据测厚仪送过来的超标厚度值,步进加减最小调节压力。 二...