漫水填充法是一种用特定的颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果的方法。漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。所谓漫水填充,简单来说,就是自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色,这是个非常有用的功能,经常用来标记或者分离图像的一部分进行处理或分析.漫水填充也可以用来从输入图像获取掩码区域,掩码会加速处
模板匹配是在一幅图像中寻找一个特定目标的方法。这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标。程序中会用到 OpenCV 的函数包括:void matchTemplate( InputArray image, InputArray templ,
&nb
对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间,然后通过计算H1与H2之间的距离得到两个直方图的相似程度进而进行比较图像本身的相似度。OpenCV提供的比较方法有四种:直方图比较方法Correlation相关性比较Chi-Squra卡方比较Intersection十字交叉性Bhattacharyya distance巴氏距离直方图比较方法–相关性计算(CV_COMP_CORREL)如果等于1说明完全一致,为0就是不相关。直方图比较方法–卡方计算(CV_COMP_CHISQR)等
灰度直方图,RGB直方图,梯度直方图对于数据在一定范围之内,可以统计频率的都可以做直方图。图像直方图。是指对整个图像在灰度范围内的像素值(0-255)统计出现频率次数,据此生成的直方图成为图像直方图,直方图反映了图像灰度的分布情况,是图像的统计学特征。直方图均衡化是一种提高图像对比度的方法,拉伸图像灰度值范围。如何实现均衡化呢?通过重映射可以将图像灰度分布从一个分布映射到另一个分布,然后在得等映射后的像素值即可。API说明:equalizeHistory(InputArray src, //8位
勇哥最近跟的一台设备,其视觉定位出现一种奇怪的现象:定义好工具坐标1后,进行九点标定,然后把视野内的5个像素点位置转为机器人坐标,依次走过去看是否准确。结果发现只有中间的两个点走过去是比较准确的,而其它的几个点最大偏差有几个毫米!并且偏差的位置没有规律,有的是向左边偏,有的向右边偏。操,这又是什么鬼呢?重新做工具坐标1,做好后,在原地旋转一定角度后,再截原来的点,发现工具1并不准确,有零点几个毫米的误差。初步判断这样的工具坐标如果用来进行九点标准,误差积累起来肯定会很大。接下来我们在视野内确定一
勇哥之前发表的一篇文章《Halcon学习(27-2)halcon测量技术:找线》这个文章介绍的找线方式是使用算子measure_pos来工作的,因此这种方式适合halcon及以上版本。勇哥另外几篇贴子里介绍了适合halcon17及以上版本的找线方法:《视觉进阶:2D Metrology(二维计量)》《halcon17的找线功能》听说,这些高阶的功能其实也是对halcon10原来的算子的一些封装。因此,对于工业视觉中常见的找线功能来说,我们必须了解核心的measure_pos算子。在找线的时候,先
勇哥继续讨论Epson机器人手眼标定的过程和一些经验。(一)九点标定时的高度与实际电池取放高度相差几毫米可以吗?依据最近勇哥现场做的实验来看,如果标定高度不等于电池取放高度,影响很大。定位的时候差别按mm来算,不是差一点半点。而且这种偏差呈放射状的变化,有点像CCD的成像方式。勇哥画了个示意,在下图中,电池1的偏差可能是向左,而电池6的偏差可能是向右。如果这个时候把电池面升高到原来标定的高度,你会发现机器人走位又非常准确了。(二)一定要九点标定吗,不可以四点吗?九点标定一定需要九宫格子吗?这个要
这一篇勇哥来谈一谈验证视觉取放料准不准如何来判定的问题。机器在客户工厂试产阶段,会暴露出整机定位精度不准的问题,这时候机构会甩锅给视觉这边,如何反驳呢?首先,我们视觉这边必须要有数据证明视觉取放精度是满足要求的.这一点之前的贴子中勇哥讲了许多.主要方法有两种:一是在标定完成后,在视野的最大范围内确定一批像素点, 转为机械人坐标后走过去戳下去, 看准不准.二是取实际的物料, 然后放置回视野内的一个固定位置, 变化量是每次取的物料位置与角度都会不同. 做几十组数据观察放置的位置偏差有多少
先来段代码。 angle_ll (Row1, Column1, Row, Column,Row1, Column1, Row5-RT_Y, Column5+RT_X, Angle1)
disp_line(200000, Row1, Column1, Row,
(应用6)已经直线的起始端点与终止端点,把这条直线移动到指定的点勇哥先放上halcon写的函数moveline的代码,它的作用是把一条线移动到指定的点。resultLineStartPointRow := 0
resultLineStartPointCol := 0
resultLineEndPointRow := 0
resultLineEndPointCol := 0
projection_pl(poin