2019-12-06 11:01:58
在图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints)、特征点(feature points) 被大量用于解决物体识别,图像识别、图像匹配、视觉跟踪、三维重建等一系列的问题。我们不再观察整幅图,而是选择某些特殊的点,然后对他们进行局部有的放矢的分析。如果能检测到足够多的这种点,同时他们的区分度很高,并且可以精确定位稳定的特征,那么这个方法就有使用...
2019-12-06 10:59:49
漫水填充法是一种用特定的颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果的方法。漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。所谓漫水填充,简单来说,就是自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色,这是个非常有用的功能,经...
2019-12-06 10:55:14
模板匹配是在一幅图像中寻找一个特定目标的方法。这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否“相似”,当相似度足够高时,就认为找到了我们的目标。程序中会用到 OpenCV 的函数包括:void matchTemplate( InputArray image, InputArray templ,
OutputArr...
2019-12-06 10:47:36
对输入的两张图像计算得到直方图H1与H2,归一化到相同的尺度空间,然后通过计算H1与H2之间的距离得到两个直方图的相似程度进而进行比较图像本身的相似度。OpenCV提供的比较方法有四种:直方图比较方法Correlation相关性比较Chi-Squra卡方比较Intersection十字交叉性Bhattacharyya distance巴氏距离直方图比较方法–相关性计算(CV_COMP_CORREL...
2019-12-06 10:36:02
灰度直方图,RGB直方图,梯度直方图对于数据在一定范围之内,可以统计频率的都可以做直方图。图像直方图。是指对整个图像在灰度范围内的像素值(0-255)统计出现频率次数,据此生成的直方图成为图像直方图,直方图反映了图像灰度的分布情况,是图像的统计学特征。直方图均衡化是一种提高图像对比度的方法,拉伸图像灰度值范围。如何实现均衡化呢?通过重映射可以将图像灰度分布从一个分布映射到另一个分布,然后在得等映射...
2019-12-06 09:14:56
勇哥最近跟的一台设备,其视觉定位出现一种奇怪的现象:定义好工具坐标1后,进行九点标定,然后把视野内的5个像素点位置转为机器人坐标,依次走过去看是否准确。结果发现只有中间的两个点走过去是比较准确的,而其它的几个点最大偏差有几个毫米!并且偏差的位置没有规律,有的是向左边偏,有的向右边偏。操,这又是什么鬼呢?重新做工具坐标1,做好后,在原地旋转一定角度后,再截原来的点,发现工具1并不准确,有零点几个毫米...
2019-12-05 22:15:03
勇哥之前发表的一篇文章《Halcon学习(27-2)halcon测量技术:找线》这个文章介绍的找线方式是使用算子measure_pos来工作的,因此这种方式适合halcon及以上版本。勇哥另外几篇贴子里介绍了适合halcon17及以上版本的找线方法:《视觉进阶:2D Metrology(二维计量)》《halcon17的找线功能》听说,这些高阶的功能其实也是对halcon10原来的算子的一些封装。因...
2019-12-05 08:06:17
勇哥继续讨论Epson机器人手眼标定的过程和一些经验。(一)九点标定时的高度与实际电池取放高度相差几毫米可以吗?依据最近勇哥现场做的实验来看,如果标定高度不等于电池取放高度,影响很大。定位的时候差别按mm来算,不是差一点半点。而且这种偏差呈放射状的变化,有点像CCD的成像方式。勇哥画了个示意,在下图中,电池1的偏差可能是向左,而电池6的偏差可能是向右。如果这个时候把电池面升高到原来标定的高度,你会...
2019-12-02 22:03:13
这一篇勇哥来谈一谈验证视觉取放料准不准如何来判定的问题。机器在客户工厂试产阶段,会暴露出整机定位精度不准的问题,这时候机构会甩锅给视觉这边,如何反驳呢?首先,我们视觉这边必须要有数据证明视觉取放精度是满足要求的.这一点之前的贴子中勇哥讲了许多.主要方法有两种:一是在标定完成后,在视野的最大范围内确定一批像素点, 转为机械人坐标后走过去戳下去, 看准不准.二是取实际的物料, 然后放置回视野内的一个固...
2019-12-02 17:06:13
先来段代码。 angle_ll (Row1, Column1, Row, Column,Row1, Column1, Row5-RT_Y, Column5+RT_X, Angle1)
disp_line(200000, Row1, Column1, Row, Column)
disp_line(200000, Row1, Column1, Row5-RT_Y, Co...
2019-12-01 16:46:50
(应用6)已经直线的起始端点与终止端点,把这条直线移动到指定的点勇哥先放上halcon写的函数moveline的代码,它的作用是把一条线移动到指定的点。resultLineStartPointRow := 0
resultLineStartPointCol := 0
resultLineEndPointRow := 0
resultLineEndPointCol := 0
projecti...
2019-12-01 10:12:54
已经矩形的中心点、边长、phi求四个顶点的坐标 在halcon里面,类似gen_measure_rectangle2、smallest_rectangle2的算子表示任意角度的矩形。其信息包括:矩形中心点 row,column矩形角度 Phi矩形区域的长和宽的一半 Length1, Length2如下图所示:(图1)就没有没直接给出矩形4个顶点坐标。有时候想知道4个顶点的坐标怎么计算呢?由于勇哥手...
2019-12-01 09:10:35
三角函数画圆法画圆可以用圆的方程来画。原点为圆心,半径为r(r>0)的圆的标准方程为x^2+y^2=r^2也可用三角函数的方式来画。下面是画圆的C#代码:/// <summary>
/// 利用三角函数画圆
/// </summary>
/// <param name="radius"></param>
/// &l...
2019-11-29 17:39:46
重映射就是把一个图像中一个为之的像素放置到另一个图片指定位置过程。为了完成重映射过程有必要获得一些插值作为非整数像素坐标,因为原图像与目标图像的像素坐标不是一一对应的。我们通过重映射来表达每个像素的位置(x, y):g(x, y)=f(h(x,y))这里g()是目标图像,f()是原图像,h(x,y)是作用于(x,y)的映射方法函数。假设有一幅图像I,满足下面条件作重映射:h(x,y)=(I.col...
2019-11-29 17:36:28
原理:霍夫变换圆检测原理和直线相似,直线检测需要两个参数(theta,r)。圆形需要圆心做坐标两个参数和半径。对左边做霍夫圆变换可以发现圆形的位置变成了一个两点,说明HoughCircles(image,outputArray circles, 发现圆信息int method, 方法-HOUGH_GRADIENTdouble dp, dp = 1;double mindist, 最短距离,可以分辨...
2019-11-29 17:33:10
霍夫变换直线检测前提条件:边缘检测已经完成(单通道8位灰度图像,经过二值化变为黑白图像)平面空间转到极坐标空间通过上式子可以把像素点转化成极坐标,如下图所示。上面的曲线相交与一点,说明了什么信息呢?说明这些像素都在一条直线。比如一个图像有200个像素,通过坐标变换。那么就可以得到200条曲线。相交点的对应横坐标角度就是直线在空间坐标的角度。这就是霍夫变换的原理。霍夫直线变换介绍:变换到极坐标中,从...
2019-11-29 17:28:00
算法介绍:Canny是一种边缘检测算法1.高斯模糊–GaussianBlur2.灰度转换–cvtColor3.计算梯度–sobel4.非最大信号抑制 对非边缘的像素进行移植,在切向和法向 去掉,5.高低阈值输出二值图像,进行边缘连接,如果大于最高阈值的像素要保留,低于最低的要舍去,中间的作为连接图像。非多大信号抑制:在x方向和y方向做完梯度变换角度是梯度变化最大的方向。如果在和梯度垂直的方向上的相...
2019-11-29 17:25:29
理论:在二阶微分的时候,最大变化处的值为零即边缘是零值,通过二阶导数计算,依据理论我们可以计算出图像二阶导数,提取边缘。处理流程:高斯模糊-去噪声GaussianBlur()转化为灰度图像cvtColor()拉普拉斯-二阶导数计算Laplacian()提取绝对值convertScaleAbs()显示结果代码:#include <opencv2/opencv.hpp>
#include...
2019-11-29 17:23:07
卷积边缘问题在做卷积处理时,图像边缘的像素不会被卷积操作。原因在于边界像素没有完全跟卷积和重合,所以3x3像素会有1个像素的边缘没有被处理。边缘处理方法:在卷积开始之前增加边缘像素,填充的像素为0或者RGB黑色。这样就确保边缘被处理。OpenCV默认的是BORDER_DEFAULT,其他还有:BORDER_CONSTANT - 填充边缘用指定像素BORDER_REPLICATE -填充边缘像素用已...
2019-11-29 14:31:31
点绕原点旋转(方法2)和上一篇《三角函数在图形学里的应用(1)》中的条件不同的是,现在我们不知道OP0和OP1有多长。还是要求p0绕着圆点绕到p1,求p1。图1已经把公式推导了出来。(图1)其中1式与2式的推导过程,上图可能有点没解释明白,这里勇哥详细推导一下:x1=L*cos(a+b)
x1=L*(cos(a)cos(b)-sin(a)sin(b))
x1=L*((x0/L)*cos(b)-...
2019-11-28 20:29:52
之前勇哥写了《三角函数超入门》系列的贴子。接下来继续写三角函数在图形学方面的应用。点绕原点旋转如图1,线长OP=OP'=r,点(x,y)以圆点O为旋转中心,逆时针转了b°,求P'(s,t)?解: s= r*cos(a+b) t= r*sin(a+b) x=r*cos(a) y=r*sin(a)(图1)勇哥画了个CAD的图,用来验证一下上面...
2019-11-28 15:18:32
这种方式比较简单,条件是你的焊点位置比较固定。这时候我们可以按焊点数量做几个固定的ROI区域,在reduce_domain。剩下的不用说大家也知道怎么玩了。如果有深度学习就好了,否则也不会出此下策,这实在不是什么好办法。此种方式让勇哥联想到当年用printf(" * ")打印金字塔图形的那种办法。为什么焊点会出现色阶分布不均匀的效果呢?这是因为打焊点的时候,由于两个...
2019-11-28 14:53:03
最近在公司实习,实习中的项目是使用的是微视的一款线阵相机(Microview MVC1024DLM-GE35);所以把线阵、面阵相机的一些区别学习下:了解线阵相机与面阵相机的基本区别 工业相机按照传感器的结构特性可分为面阵相机和线阵相机,面阵、线阵相机都有各自的优点和缺点,在用途不同的情况下选择合适的传感器的结构工业相机,至关重要。1、类型区分面阵相机:实现的是像素矩阵拍摄。相机拍摄图像中,...
2019-11-27 16:47:20
1.找出下面2张图的不同处//先加载2张图像到内存中
var background = new Bitmap( "left.bmp");
backgroundImg.Source = ToBitmapImage(background);
var original = new Bitmap( "right.bmp");...
2019-11-27 15:58:29
VIDI 提供了第一款基于工业图像分析的深度学习软件。VIDI Suite基于最先进的机器学习算法,是一款优化可靠的可现场测试的软件解决方案。它可以完成检测与分类的编程中不可能完成的挑战。这为不少具有挑战性的机器视觉应用提供了一个强大、灵活的且明确的解决方案。VIDI Suite包含三种不同的工具:VIDI Blue用于在图像中查找和定位单个或者多个特征。ViDi Red用于检测任何类型的质量缺陷...
2019-11-27 15:50:40
一、AForge.NET简介 AForge.NET是一个专门为开发者和研究者基于C#框架设计的,这个框架提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人等领域。 这个框架由一系列的类库组成。主要包括有: AForge.Imaging —— 一些日常的图像处理和过滤器 AF...
2019-11-27 14:07:48
卷积模糊图像,图像边缘,增强图像常见卷积算子:Robert、sobel、拉普拉斯算子代码:#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
int main(int argc,char ** argv)
{
M...
2019-11-27 14:04:23
阈值(threshold)简单地说就是把图像分割的一个标尺。阈值类型1.阈值二值化(threshold binary)大于阈值取最大值,小于阈值取最小值。2.阈值反二值化(threshold binary Interval)3.截断(truncate)超过阈值和阈值相等,否则为0.4.阈值取零(threshold to zero)小于阈值取0,大于的不变。5.阈值反取零(threshold to...
2019-11-27 13:20:03
说一说勇哥手中一下手机前盖对位压合设备的一些经验。对位的基本原理如下图,灰色部分是CG,手机外壳与CG之间有9组gap(间隙)。理论上,如果CG对位是完美的,则:Gap1-Gap6=0Gap2-Gap5=0Gap8-Gap3=0Gap7-Gap4=0实际上不可能为0,而是到达一个经验值范围就算对位完成。(图1)而且,由于手机比较大,我们通常使用四个CCD分别拍四个角的方式来工作,这样可以获得较好的...
2019-11-27 10:46:40
金字塔原理图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且通过对原始图像连续降采样获得。在图像处理中,常常会调整图像大小,最常见的就是放大和缩小。一个图像金字塔是一系列图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就像一个古埃及的金字塔。高斯金字塔–用来对图像进行降采样拉普拉斯金字塔–用来重建一张图片根据他的上层降采样图片。高斯金字塔:高斯金字塔是...