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
金字塔原理图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且通过对原始图像连续降采样获得。在图像处理中,常常会调整图像大小,最常见的就是放大和缩小。一个图像金字塔是一系列图像组成,最底下一张是图像尺寸最大,最上方的图像尺寸最小,从空间上从上向下看就像一个古埃及的金字塔。高斯金字塔–用来对图像进行降采样拉普拉斯金字塔–用来重建一张图片根据他的上层降采样图片。高斯金字塔:高斯金字塔是...
2019-11-27 10:42:32
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。视频教程地址:https://www.bilibili.com/video/av17748771/?p=12感谢贾志刚老师的视频教程。开运算闭运算形态学梯度:膨胀减去腐蚀顶帽(top hat)原图像与开操作之间的差值图像。黑帽:闭操作图像和原图像之间的差值图像。提取直线:提取步骤输入彩色图像—转...
2019-11-27 10:40:13
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。视频教程地址:https://www.bilibili.com/video/av17748771/?p=11感谢贾志刚老师的视频教程。程序:#include<iostream>
#include<opencv2/core/core.hpp>
#include<h...
2019-11-27 10:37:02
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。视频教程地址:https://www.bilibili.com/video/av17748771/?p=9感谢贾志刚老师的视频教程。图像模糊原理Smooth/Blur 是图像处理中最简单和常用的操作之一。使用该操作的原因之一就是为了给图像预处理时候减低噪声。使用Smooth/Blur操作背后是数...
2019-11-27 10:35:14
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。视频教程地址:https://www.bilibili.com/video/av17748771/?p=8感谢贾志刚老师的视频教程。绘制形状使用cv::Point与cv::ScalarPoint表示2D平面的一个点x,yp = Point(10,8);Scalar表示四个元素的向量Scalar(...
2019-11-27 10:32:22
在opencv\sources\samples下面提供了很多的官方例程,是学习OpenCV的最好的资源。理论:图像变换可以看做如下:像素变换–点操作邻域变换–区域操作其中图像亮度和对比度属于像素变换–点操作α是对比度调节参数,β是调节亮度。一些主要API:Mat new_image = Mat::zeros(image.size(),image.type()); //创建一个空白图像saturat...
2019-11-27 10:30:09
理论–线性混合操作线性混合理论:两幅图像的每个像素都进行加权相加。α的取值范围是0~1。相关API线性混合API:void cv::addWeighted(inputArray src1,double alpha,InputArray src2,double gamma,outputArray dst,int dtype = -1);代码演示#include<iostream>
#i...
2019-11-27 10:28:06
修改像素值灰度图像img.at< uchar>(y,x) = 128;RGB三通道图像img.at< Vec3b>(y,x)[0]=128;//blueimg.at< Vec3b>(y,x)[1]=128;//blueimg.at< Vec3b>(y,x)[2]=128;//blue空白图像img=Scalar(0);ROI选择Rect r(10,1...
2019-11-27 10:25:23
Mat对象Mat对象:OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构,分了两个部分,头部分与数据部分。Mat对象构造函数与常用方法构造函数:Mat()Mat(int rows,int clos,int type)Mat(Size size,int type)Mat(int rows,int clos,int type,const Scalar &...
2019-11-26 20:41:41
旋转中心标定方式的说明在下面的图例中,红色为相机视野(FOV),黄色为工件,五星为Mark点。(训练的标准位置)(工件发生平移)(工件发生旋转与平移)(图4)旋转中心方法用于所有机器人与视觉配合场景方法 :计算工件实际发生的偏移量 和旋转,结合机器人的旋转中心进行二次补偿后 ,把补偿量 发送给机器人 ,然后机器人把补偿量进行抓取或放置即可。计算 某个点绕另外一旋转定角度后的坐 标,如图 :A(x,...
2019-11-26 16:49:39
获取图像像素的指针CV-Assert(myImage.depth()==CV_8U);Mat.ptr < uchar>(int i=0)获取像素矩阵的指针,索引i表示第几行,从0开始计行数。获得当前行指针const uchar * current = myImage.ptr< uchar>(row);获取当前像素点P(row,col)的像素值p(row,col)=curre...
2019-11-26 16:46:45
之前安装配置好OpenCV的环境之后,就可以进行使用了。下面是关于OpenCV的图像处理程序。#include<iostream>
#include<opencv2/core/core.hpp>
#include<highgui/highgui.hpp>
using namespace cv;
using namespace std;
int...
2019-11-26 11:11:50
关于大佬们的一些见解下面是引用知乎的一段文字: 我们从单目视觉说起。平时我们都说要做视觉识别、测量云云,然后我们就会去拍照,再对数字图像做各种处理,颜色处理、灰度化、滤波、边缘检测、霍夫变换,最后得到了希望得到的特征,是这样的对吧? 不过请注意!到了这一步,其实我们仅仅是得到了一坨坨感兴趣的像素而已!究竟要怎样才能把这些像素转化到现实世界的对象中呢?也就是说,究竟要怎样对这些仅存在于图像中的东西...
2019-11-26 08:58:40
PS:安装过程中的一些总结和教训安装文件夹里的V11对应的是VS2012版本,V14对应的是VS2015版本,所以使用VS2012的人可能无法使用opencv3后面的一些新版本的库,目前的opencv基本都支持V14,所以尽量安装VS2015.VS2012的平台默认是Win32,和你的电脑的位数无关,所以我们在VS2012上安装的时候只能选择X86的版本和Win32的平台。OpenCV是计算机视觉...
2019-11-26 08:44:54
参考代码:https://github.com/christianwengert/calib_toolbox_addon所谓手眼系统,就是人眼睛看到一个东西的时候要让手去抓取,就需要大脑知道眼睛和手的坐标关系。如果把大脑比作B,把眼睛比作A,把手比作C,如果A和B的关系知道,B和C的关系知道,那么C和A的关系就知道了,也就是手和眼的坐标关系也就知道了。相机知道的是像素坐标,机械手是空间坐标系,所以...
2019-11-25 15:25:55
勇哥的同事反映,设备的机器人在低速运动的时候,取放重复性精度可以做到+-0.2mm。但是在高速运行的时候,精度只能做到+-0.8mm。这又是什么鬼呢?我问了一圈公司的高手,他们的意见是:(1)机器人的惯性与重量要设置(2)机器人的acc加速度参数要设置,让起停速度更圓滑些(3)观察机器本身的晃动、相机的晃动、机器爪的晃动,看是否有影响(4)机器人取放之前的暂停时间是有必要的精度要求不高的时候,机器...
2019-11-23 13:25:17
这一次勇哥使用Epson机器人的标定来进行验证标定后的精度。首先按下图做九点标定。注意对于Epson机器人自己的标定指令来说,它认下面的顺序,不要乱搞。一般流程是:(1)你打印一张九点标志的纸,尽量能铺满视野范围。(2)在吸盘下装一个铅笔一样的针尖,去扎九个点的十字中心经过上面的步骤,你就能获得九组像素坐标与机器人坐标。但勇哥这台机器是背光的,这样搞不了。所以我只能先工具坐标标到标准片的Mark点...
2019-11-23 11:28:12
EPSON简单视觉编程需要设备1.EPSON机械手一台。2.工业相机一个。3.通讯设备。以固定向下相机为例1.首先准备一个类似针尖工具,装到法兰盘上。2.准备一张九个MARK点,尽可能遍布整个拍照区域。3.建立一个camera_down_camera.pts点文件。将示教好的mark点和视觉像素点分别写入P1-P9 P11-P19中。4.新建一个cal.prg程序。5.编辑cal.prg程序。Fu...
2019-11-22 16:42:40
Epson机器人同第三方相机校准方法基本思路:1. 相机通过以太网RS232同机器人通信2. 按机器人校正指令的要求获取、分离相机发送过来的信息3. 使用校准指令准备工具:1. 制作9宫图2. 制作机器人工件坐标的校准工具(类似铅笔,装在Z轴或者抓手上)一. 机器人与相机通过以太网通信(tcp/ip)1. 制作如下9宫图,该图的大小尽量占满相机的视野范围,但是不能太靠近边界,可用打印机打印,为获得...
2019-11-22 13:16:33
目的:将第三方相机的视野坐标与EPSON机器人的坐标进行校准,建立转换关系基本思路:1. 相机通过以太网或RS232同机器人通信,按机器人校正指令的要求获取、分离相机发送过来的信息2. 按照校准步骤,记录机械手校准点的机器人坐标和视觉像素坐标3. 使用校准指令,建立机械手和视觉的坐标转换关系视觉工作时,将检测到的工件的坐标发给机器人,机器人根据坐标转换关系,转换为机器人坐标后再去做抓取、装配...
2019-11-21 22:05:10
在平面直角坐标系中,怎么确定唯一的一条直线?答案是:直线上的一个定点以及它的倾斜角,二者缺一不可。坡度(图1)生活中使用用“升高量与前进量的比”表示倾斜面的“坡度”,即:坡度(比)=升高量/前进量例如,“进3升3”,“进2升2”,指的坡度比为分别为: 3/2, 2/2,前者改陡一些。斜率如图1,坡度比实际上就是tan(a),即倾斜角的正切。我们把一条直线的倾斜角a的正切值叫这条直线的斜率(slo...
2019-11-21 20:18:59
直接写出加法定理:可见,sin(a+b)并不简单等于sina+sinb。之前说过,在三角函数中我们只需要掌握6个公式(其它的做到可以推理出来),加上这两个,就齐全了。而tan的加法定理可以通过tanθ=sinθ/cosθ推导出来。tan(a+β)= sin(a+β)/cos(a+β) =(sinacosβ+cosasinβ)/(cosacosβ-sinasinβ)这个等式右边也用tan来表...