2018-11-06 22:34:35
如果机构连压块的位置都不给你保障,那就惨了,就如下图这个样子了。左边的图如果算是正常的话,右边的图是不是你想叫妈?压块的位置在跳舞,逼得你不能用固定的ROI来框焊点。 来一张素材图,然后我来整个算法的思路。基本的思路是,threshold算子取得白色部分的region,然后求出一个内接的Rectangle,然后做下定位把这个矩形画出来。这个就是我们要的动态的ROI了,无论压块怎么跳舞都不怕了!li...
2018-10-27 08:14:12
一、神经网络为什么比传统的分类器好1.传统的分类器有 LR(逻辑斯特回归) 或者 linear SVM ,多用来做线性分割,假如所有的样本可以看做一个个点,如下图,有蓝色的点和绿色的点,传统的分类器就是要找到一条直线把这两类样本点分开。对于非线性可分的样本,可以加一些kernel核函数或者特征的映射使其成为一个曲线或者一个曲面将样本分开。但为什么效果不好,主要原因是你很难保证样本点的分布会如图所示...
2018-10-27 07:30:27
哈哈,是不是有人一进来就想问训练数据哪找的。。 好吧,坐好,老司机要发车了,传送门—->用 Caffe 可以做什么好玩的 Project?,其实就是知乎上前两天看到的一个问题,有人提供了这个数据集,大家有兴趣的可以自己下下来看看,我这里就不贴了,怕被河蟹。。总之就是有10000张正常电影封面+10000张av电影封面,正好这几天临近放假,project/assignment什么的都搞完了,离...
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...
2018-10-18 11:03:16
图像增强一般通过如下几种方式:1. 灰度值线性变换scale_image: g’ := g * Mult + Add g为当前的灰度值,Mult 为所乘的系数,Add为加的偏移值,由公式可以看出用scale_image来处理图像是个线性变化,会让黑的地方更黑,亮的地方更亮。scale_image_max:将灰度值拉伸到0-255。2. 增强图像对比度- emphasize(Image : Imag...
2018-10-16 18:51:33
很多时候当我们用edges_sub_pix, threshold_sub_pix 等算子得到边缘后,因为有噪声、物体本身断裂等原因 很多边缘是共线但是断裂的如下图所示,提取键盘的网格,左图有很多共线线段,右图为共线连接后的结果更详细信息可查阅自带例程:measure_grid.hdev一个更直观的例子提取网格,左图因为网格有交叉点通过edges_sub_pix得到是断裂的网格线,右图为union...
2018-10-15 17:12:22
如下图,我们需要找到该产品的中心的螺丝孔。处理结果截图如下:halcon的中间处理结果如下图这个例子在各类锁螺丝设备中都比较常见。采用基本的形态学算子,如:threshold, connection, select_shape 即可以解决问题。但是如果是多种颜色的产品,可能不光要调节面积、阈值等算子的参数,还需要调用不同的光源或者相机曝光参数等。在下面的代码中, inner_circle算子即求出...
2018-09-30 10:19:49
细谈工业相机ccd与cmos的差别 CCD,英文全称:Charge coupled Device,中文全称:电荷耦合元件,可以称为CCD图像传感器。CCD是一种半导体器件,能够把光学影像转化为数字信号。在工业相机中,如果按照工业芯片来分的话,比较常见的就是ccd工业相机和cmos工业相机。1、 耗电量差异:CMOS采用主动式图像采集方式,感光二极管所产生的电荷会直接由旁边的电晶体放大输出;而CC...
2018-09-29 16:01:09
本文是勇哥很早的时候写的一篇,如果想知道更多的信息,请参阅勇哥另一篇更详细的文章:《勇哥的视觉实验:halcon的标定助手》"安装"面板中:描述文件要选择你手里的halcon标定板的对应的描述文件. 例如笔者手中是30*30mm的标定板, 就使用图中所示的描述文件.我手里这片标定板厚度为3.050mm测试相机是广角镜头, 非远心相机单个像元的宽与高,焦距应该询问相机厂商, 这里...
2018-09-28 16:43:38
(一)数字图像基础概念1、数字图像:一幅图像可以定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,而在任何一对空间坐标(x,y)处的幅值f称为图像该点处的强度或灰度。当x,y和灰度值f是有限的离散数值时,我们称该图像为数字图像。简而言之,数字图像就是离散的灰度集。2、像素:数字图像是由有限数量的元素组成的,每个元素都有特定的位置和幅值,这些元素我们称之为像素。(二)halcon数据结构...
2018-09-24 14:23:02
1、Developdev_display 在现有图形窗口中显示图像目标。dev_set_color 设置一个或更多输出颜色,通常用于设置region或者xld的颜色。dev_set_draw 定义区域填充模式,可选项有fill和margindev_set_line_width 定义区域轮廓输出的线宽。dev_set_shape 定义区域输出形状,例如以矩形显示或者以圆形显示,这样可以更...
2018-07-16 11:09:20
halcon测量的第一步,就是找边。边找精准了,计算两边的距离才可能精准。由于物料的管控不可能做到每片抽检,或者根本不被管控。这就要求我的抓边效果能最大化适合各种可能性。下面的程序使用鼠标确定测量框,根据设定参数拟合出一条质量可调的XLD线条。图1 鼠标绘制测量框图2 拟合完成的线条,这个例子由50个点拟合出XLD线条。十字点起标识点的作用。找线方法调用代码:fpath:='C:/Us...
2018-07-16 10:56:46
友发来两个小项目,要求亚像素精度。突然想问几个问题:1、何为亚像素?2、何为亚像素精度?3、使用亚像素测量,系统应注意什么?1、何谓亚像素?面阵摄像机的成像面以像素为最小单位。例如某CMOS摄像芯片,其像素间距为5.2微米。摄像机拍摄时,将物理世界中连续的图像进行了离散化处理。到成像面上每一个像素点只代表其附近的颜色。至于“附近”到什么程度?就很困难解释。两个像素之间有5.2微米的距离,在宏观上可...
2018-07-13 22:36:21
dyn_threshold算子动态阈值算子应付以下情况:对于一些应用来说,确定一个全局阈值是不可能的,比如,因为没有通用的参考图像来确定阴影校正图像的背景是非均匀的物体在局部范围内通常比背景亮些或者黑些在这种情况下,寺找一个固定阈值来区分物体和背景是丌太容易的问题: 局部邻域的确定局部邻域可以由平滑滤波器来确定(比如, mean_image或binomial_filter)动态阈值算子的经验说明:...
2018-07-13 21:07:16
合并region select_shape(ConnectedRegions1, SelectedRegions1, 'area', 'and', 550, 99999)
select_obj(SelectedRegions1, obj1, 1)
select_obj(SelectedRegions1, obj2, 2)
unio...
2018-07-13 20:14:27
继续上节的region处理。区域相减(即求差异)上原图:现在我先选择焊点之外的背景区域,然后想反转这个区域,得到焊点区域,该怎么做?代码如下: gen_rectangle1(roi1, 813, 578, 913, 774)
reduce_domain(GrayImage, roi1, ImageReduced)
mean_image(ImageReduced, Imag...
2018-07-13 13:57:52
一,基本的图像通道知识在图像处理中有一个很重要的概念叫图像通道,在RGB色彩模式下就是指那单独的红色、绿色、蓝色部分。也就是说,一幅完整的图像,是由红色绿色蓝色三个通道组成的。他们共同作用产生了完整的图像。 一幅完整的图像,红色绿色蓝色三个通道缺一不可。即使图像中看起来没有蓝色,只能说蓝色光的亮度均为0,但不能说没有蓝色通道存在。 “存在、亮度为零”和“不存在”是两个不同的概念。...
2018-07-13 13:20:51
ROI (Region of Interest),感兴趣区域。顾名思义,就是你主要想处理的区域。Halcon中处理的对象分为三类,分别是图像(image),区域(region),XLD(extended line description)(主要用在亚像素边缘的提取)。所以从这里可以知道,ROI的作用,其一是加快程序处理速度,原因在于,是程序处理只需处理ROI,其他区域直接跳过。其二,在图像匹配中...
2018-07-12 14:05:59
dev_get_preferences和dev_set_preferences经常一起使用。dev_get_preferences为查询HDevelop参数。'graphics_window_context_menu':Returns whether a right click into the graphics window opens a context menu or not...
2018-07-12 14:03:44
halcon中的选择语句的用法。作者:骑蚂蚁上高速MATLAB提供三种选择结构,分别是if语句、switch语句和try语句。1.if语句在MATLAB中,if语句有3种格式。(1)单分支if语句:if 条件语句组end当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句。(2)双分支if语句:if 条件语句组1else语句组2end当条件成...
2018-07-12 14:02:48
30*30 规格的标定板的规格 黑色圆点行数: 7 黑色圆点列数: 7 外边框长度: 30mm*30mm 内边框长度: 28.125mm*28.125mm 即:黑色边框线宽为一个圆点半径(0.9375) 黑色圆点半径: 0.9375mm 圆点中心间距: 3.75mm 裁剪宽度: 30.75mm*30.75mm 即:由黑色边框向外延伸0.375...
2018-07-12 13:59:52
上一节遇到函数调用的问题。本节将学习函数调用。也就是创建新的过程以及调用。创建新的过程有以下几种方法:第一种:第二种创建完过程之后,就可以编辑新的过程了。包括名称,参数设置等等。设置完成后,应用,确定。最后编辑完main函数后记得保存。...
2018-07-12 13:58:01
* This program compares the result of different operators
* which detect points of interest
*
dev_update_off ()
Dark := 100
Background := 175
Light := 250
Angle := rad(45)
Size := 3
create_t...
2018-07-12 13:53:12
1、Halcon的自我描述Program LogicØ Each program consists of a sequence of HALCON operatorsØ The program can be structured into proceduresØ The sequence can be extended by using control operators like if, for...
2018-07-12 13:50:50
摄像机标定程序:注意:E:/calibration_image :为标定图像文件路径 'E:/calibration_description/caltab_123mm.descr:为标定描述文件路径*作者:骑蚂蚁上高速*程序开始list_files ('E:/calibration_image', 'files', ImageFiles)TmpCt...