2019-10-15 09:46:11
1. 三点绘制圆 已知三点为(x1,y1)、(x2,y2),(x3,y3),求三点形成的圆的坐标,可以设求得的圆的原点为(X,Y),半径为R,这样可以得到方程组: (x1-X)²-(y1-Y)²=R² (1)式 (x2-X)²-(y2-Y)²=R² (2)式 (x3-X)²-(y3-Y)²=R² (3)式由上述方程组可以得到: 2(x1-x2)X +2(y1-y2...
2019-10-14 21:41:52
运行程序前先创建ROI以创建模板,然后顺时针或者逆时针绘制三根直线,以确定找线的方向与距离。由于找线的时候是模板跟随的,最后得到下面的结果:代码如下:其中draw_rake,dev_display_shape_matching_result,rake,pts_to_best_line为外部算子。有需要的朋友可以找勇哥索取。dev_close_window ( )
read_image (Imag...
2019-10-13 19:11:54
halcon17的找线功能其实是对之前halcon10版本找线方法的封装。勇哥下面这几篇文章介绍了halcon10版本的找线方法,你会发现,halcon17的找线算子的参数其实跟这篇文章介绍的差不多的。Halcon学习(27-2)halcon测量技术:找线带ROI跟随的找边测试代码(halcon代码演示)经过封装后的找线算子,还是非常好用的,你只需要给定找线的起始与终止点即可。演示代码如下:rea...
2019-09-11 10:21:27
勇哥写的演示框架如下图所示。通过run main1, run main2 这样的指令可以启动不同的main程序。因此可以在触摸屏上可以用按钮启动不同的机器人程序。我们知道启动“远程以太网”模式后,在运行窗口中就不能再选择启动自定义的函数了。但是我们可以像main2函数中那样,启动一个线程,来监听#201端口,然后处理传入的字符串进行case分支处理。这种方式就实现了两种模式可以兼得。相当于plc...
2019-08-23 11:02:13
接上篇。本篇讨论下面的话题:二是绕着特征点旋转,验证特征点的像素偏差,或者是转换后的机械坐标的偏差。三是做放料测试,验证实际的放料精度下面是采用特殊算法标定成功后的数据。后面主要谈谈怎么用旋转特征点的方式验证标定后的精度。因为手眼标定是把视觉像素换算成机器人的机械坐标,而本算法的原理是:把工具坐标1做到特征点上,然后走4组位置,记录4组像素与机械坐标,最后调用halcon的标定函数。因此对于这种标...
2019-08-23 09:57:15
所谓的精度是指验证标定后工具1坐标系下的特征点,转为机械坐标系后再与机器人的坐标进行差值比较,越小越好。验证精度我们可以从三方面入手:一是验证特征点在视野最大范围内变换位置,考虑相机畸变因素影响下对精度的影响二是绕着特征点旋转,验证特征点的像素偏差,或者是转换后的机械坐标的偏差。三是做放料测试,验证实际的带料取放料精度。勇哥在本篇先讨论第一种方法。下面是标定后的特征点的信息标定特征点信息 像素x:...
2019-07-23 22:38:05
angle_lx( : : Row1, Column1, Row2, Column2 : Angle) 函数作用:计算线与水平轴间的夹角逆时针旋转向量到水平轴的角度即为结果值,该结果取决于两个点的顺序,用弧度表示,范围为[-pi, pi]上一段代码:ange_lx(Row_1, Col_1, Row_2, Col_2, Angle)
****************************...
2019-07-23 20:10:40
写在前面由于涉及到公司的一些内容,本文仅做方法和思路记录,请见谅。用途9点法标定是工业上使用广泛的二维手眼标定,所谓二维,即工作平面限制在一个平面上,常用于从固定平面抓取对象进行装配等操作,这种应用场景可以满足大多数的工业应用场景。使用过程和一般的手眼标定一样的是,9点法标定也分eye_in_hand和eye_to_hand两种,标定的结果分别是相机坐标系与工具坐标系的转换矩阵(4*4),以及相机...
2019-07-23 20:01:58
最近在学习手眼标定,做下笔记,和大家分享下学习经历:一 手眼标定的两种情形首先讲一下在工业应用中,手和眼(摄像机)的两种位置关系,第一种是将摄像机(眼)固定在机械手(手)上面,眼随手移动;第二种是摄像机(眼)和机械手(手)分离,眼的位置相对于手是固定的,下面用网上的两张图来说明下:第一种情况:相机移动第二种情况:相机固定从上面两副示意图可以看出,第一种情况中我们要求的是相机坐标系和机械手坐标系的转...
2019-07-23 19:54:12
手眼标定涉及的坐标系有:工件坐标系工具坐标系相机坐标系(相机坐标系里又有图像坐标系和像素坐标系,这其实就是前面讲的单目标定的内容)基坐标系手眼标定一般有两种形式:1、相机固定(eye-to-hand)我们需要的最终结果,即得到base 与 cam 的空间位置关系,即一个4*4的变换矩阵。这个可以通过移动tool带着标定板移动到相机下方不同位置角度,由相机多次拍摄标定板来计算得到。有些相机虽然固定在...
2019-07-23 19:50:02
关于机器人视觉的手眼标定的原理,勇哥先放上一些教程资源:工业现场相机坐标系和机械手坐标系的标定halcon之手眼标定基本原理手眼标定的两种方式手眼标定之9点法众所周知,目前机器视觉项目,很大一部分都是引导机器人去取料 放料等工作。 这个里面就有个非常重要的工作要做。就是将相机的坐标系 映射到机器人坐标系里面,这样才可以实现视觉配合机器人动作。 通常这种标定使用有多点标定法(俗称九宫格标定法)可以...
2019-07-20 15:09:23
(一)先拍再抓和先抓再拍的区别先拍再抓要简单得多,拍照后,视觉给机器人纠偏位置,然后下去吸,这样能保证每次取料位置一致。放料的时候不用管,只用走一个固定的示教点即可。先抓再拍则因为每次吸起电芯时,吸嘴在电池上的位置不同,电池相对吸嘴的角度也不同,因此在放料那边需要做一些复杂运算才可以保证放料位置保证一致。(二)先拍再抓的流程流程分为3个部分:(1)首先取得模板电芯的特征点信息,示教载盘上放料位置点...
2019-07-18 21:42:31
通过本例程巩固了对剖面灰度值的描述,并进行测量,算子使用同“halcon例程学习笔记(2)”。此例程进一步学习了halcon中的基本函数的使用方法:subset 求取一个数组的子集find 查找相应条件的值的位置索引数组的错位减法的使用。其它基本图像处理基本算子,可以查阅halcon使用手册,详细了解。例程代码如下:dev_update_off ()
dev_close_window (...
2019-07-18 21:38:36
本例程来做halcon10.0版本中的一维函数中check_smd_tilt.hdev例程,通过此例程可以学习到如何使用halcon中算子measure_projection通过投影图像上垂直于剖面线方向的灰度值来提取1D灰度剖面,如下是对此算子的详细理解:更多关于测量的算子理解,可以参考北京大恒宣讲的PPT halcon测量技术。下面例程是检测SMDS是否与近水平或者相对相机是否倾斜。分析图像...
2019-07-18 21:29:33
其为分析液体中的成分,得出区域中的平均灰度和面积;在液体二值图像中有几个亮斑,需要提前去除;液体成分中灰度变化不明显,直接采用全局阈值处理效果不佳;读取鼠标按键数值,并选择区域。threshold (Image, Large, 110, 255)
* Dilate regions with a circular structuring element
dilation_circle (Larg...
2019-07-17 17:16:17
这个例程的目的是使用算子来找出结构不规则的原则,其中涉及到一些算子:crop_rectangle1:从图像中截取矩形图像
gauss_filter:高斯滤波
watersheds:图像分水岭算法
smallest_rectangle1:平行于坐标轴的最小外接矩形Part Ⅰ 初始化程序dev_update_off ()
dev_close_window ()
dev_set_draw...
2019-07-17 17:11:30
1、一维条码一维条码:由一组规则排列的条、空以及对应的字符组成的标记,“条”指对光线反射率较低的部分,“空”指对光线反射率较高的部分,这些条和空组成的数据表达一定的信息,并能够用特定的设备识读,转换成与计算机兼容的二进制和十进制信息。 一维条码的码制: EAN码、39码、交叉25码、UPC码、128码、93码,ISBN码,及Codabar(库德巴码)等。 EAN 码:是国际通用的符号体系,是...
2019-07-17 16:55:23
要检查电芯表面是否有条码,可以知道电芯是否放反面了,起到视觉防呆的作用。勇哥能想到的思路是:一维,二维码识别,能识别则为有码面。框选区域,算子intensity计算区域灰度值的平均值或者方差,以此来判断是否为有码面。下面的程序两种方法都用到,把代码做个记录,供大家参考。其结果可以看到,完美的情况下,两种方法都可以。但其实还是有问题的,比如如果电池表面贴了膜,那么因为反光的原因,两种方法都有可能会误...
2019-06-28 21:31:19
勇哥目前在一款尺寸测量设备中,应用到了一些算法,在这里做记录。下面是算法用到的一些函数。/// <summary>
/// 新建一条拟合直线
/// </summary>
/// <param name="linePt"></param>
/// <pa...
2019-05-27 09:41:09
已知直线的起始端点与终止端点,移动到指定点的位置。这个必须要考虑直线有可能是任意角度的问题。#代码如下:要注意,下面的代码需要安装netMarketing类库。using HalconDotNet;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;...
2019-05-22 17:03:58
注意看下面的8个点(绿色的小点),我们想由8个点拟合出一条直线。拟合完成的直线halcon代码如下:read_image (Image, 'C:/Users/Administrator/Desktop/尺寸机/建模/395876G-3-HWR.bmp')
*dev_open_window(0, 0, 2000, 2000, 'black', WindowHandl...
2019-05-07 10:52:54
此方法旨在满足部分区域拍照后,想输出成一张图,对重叠区域要求不是很高。区别于图像拼接方法,请注意。勇哥2019/5注:下面的办法只适合拼合灰度图片,如果你想拼合彩色图片则要用另外的办法。在这里,我在一个文件夹中保存了9张图,遍历读取,从而合成显示。图片合成方法public void ImageJigsaw(string path = "C:/Users/team/Desktop/4/&q...
2018-11-27 08:51:29
勇哥原来的程序都是工作在halcon10下面的,某一天尝鲜安装了halcon12,用起来很爽的感觉。但是今天跑以前的某个视觉程序时,软件起动会报错误:help files for package 'system' ……看起来这个错误8000很是莫名其妙的,说什么help目录无效。后面那句 Please check the correct setting of HALCONROOT让...
2018-11-24 11:54:01
为了使用户在选择一款机器视觉系统时应该考虑的关键的、基本的特性方面提供指导。下面是选择一款机器视觉系统时要优先考虑的十个方面:1. 定位器 对象或特征的精确定位是一个检测系统或由视觉引导的运动系统的重要功能。传统的物体定位采用的是灰度值校正来识别物体。尽管这种技术得到了广泛的应用,但是,它在图象质量变差的情况下,就缺乏稳定性。图象质量变差可能是由于凌乱、亮度不同和遮盖等因素的影响。相反,几何对象定...
2018-11-24 11:48:19
镜头的选择决窍 镜头按光圈分为手动光圈镜头和自动光圈镜头,选择依据:主要根据环境的光线是否稳定,环境稳定的一般选用手动光圈,一次调试OK后即可,环境不稳定选用自动光圈镜头(必须配以带有自动光圈镜头插座的摄像机),这样便可以实现画面亮度的自动调节。自动光圈镜头的控制信号又可分为DC及VIDEO控制两种,即直流电压控制及视频信号控制。这在自动光圈镜头的类型选用上,摄像机自动光圈镜头插座的连接方式上,以...
2018-11-24 11:42:57
图像拼接技术就是针对同一场景的一系列图片,根据图片的特征,比如位置,重叠部分等,拼接成一张大幅的宽视角的图像。图像拼接要求拼接后图像最大程度的与原图一致,失真尽可能的小,并且要尽量做到天衣无缝即没有明显的拼接线或其他拼接痕迹。图像拼接不能损失原始图像信息为达到以上目标,图像拼接要求具备以下条件:1:图像应具有一定的特征性能,拼接正是通过这些特征来进行的。2:图像需要具有重叠部分,一般情况下,这些重...
2018-11-23 20:56:32
灰度形态学处理有腐蚀,膨胀,开运算,闭运算,顶帽操作,低帽操作等。可以对图像进行图像平滑,图像增强,图像分割等。一,图像平滑gray_opening_shape(Image : ImageOpening : MaskHeight, MaskWidth, MaskShape : )开运算。开操作会抑制比结构元小的亮细节,去除亮点噪声gray_closing_shape(Image : ImageCl...
2018-11-23 20:38:23
选择性滤波在很多应用中,其中感兴趣是处理指定的频段或频率矩形。第一类滤波器分别称为带阻滤波器或带通滤波器。第二类滤波器称为陷波滤波器。1、带阻滤波和带通滤波D(u,v)是距离频率矩形中心的距离,D0是带宽的径向中心,W是带宽。一个带同滤波器可以用从低通滤波器得到高通滤波器的相同的方法从带阻滤波器中得到halcon生成理想带阻带通和高斯带阻带通的代码read_image (Image, 'D...
2018-11-23 20:30:33
低频对应于图像变化缓慢的灰度分量,前面我们通过衰减高频成分来平滑图像。高频则对应于图像中变化快速的灰度变化。这些通常是物体的边缘及噪声。以下我们将通过高通滤波来实现图像的锐化。高通滤波会衰减傅立叶变换中的低频分量而不扰乱高频信息。理想高通滤波器halcon程序read_image (Image, 'D:/halcon work/fft/有票.bmp')
rgb1_to_gray...
2018-11-23 20:16:21
二维离散傅立叶(DFT)变化及其反傅立叶变换(IDFT)傅立叶变换通用形式对通用形式来讲,c=1,s=-1即为傅立叶变化(图像空间域转频域);c=1/MN,s=1即为逆变换(频域转空间域)halcon算子fft_generic(Image : ImageFFT : Direction, Exponent, Norm, Mode, ResultType : ) 通过参数设置可实现图像的频域和空间域的...