自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(186)
  • 资源 (1)
  • 收藏
  • 关注

原创 visionpro学习再研究,camera实时观察和调用(四,追着自己跑,megauging继续推进)

在visionpro中,我们静态图像处理好了(我们刚刚在前一讲匹配模板学习好了),需要动一下观察物,实时观察图像,并运行,再次看静态图像处理结果(匹配效果)。常常需要实时观察,visionpro给我们提供了一个实时观察的控件,添加步骤如下:第一,工具箱---选项中,如图添加:第二,拖动到form界面如下,我感觉其实这个cogdisplay控件就是picturebox:第三,我们前面创建了一个c#项目,“调用cognexvpp”,实时取像代码: CogAcqFifo...

2020-10-30 17:42:36 222

原创 visionPro学习再研究,快速开发toolgroup示范(三,追着自己跑,继续推进megauging)

我们用vs2010创建一个c#项目,名称“调用cognexvpp”,使用framewor3.5,我们仍然遵循轻量化使用visionpro,以便我们用meguaging替换他。好,我们已经创建了一个form,我们怎么加载hello.vpp呢?第一,点击工具箱,在最下边,点击右键,选择“选择项...”如图:第二,选择cogtoolgroupeditv2,如图所示:第三,这个工具就出现在工具箱里,拖放到form,如图:第四,好,添加代码:要注意:第五,运行,ok,加

2020-10-28 14:28:51 114

原创 visionPro学习再研究,快速开发(二,追着自己跑,继续推进megauging)

visionpro之所以独占鳌头的原因是他可以快速开发,使得机器视觉项目高效完成。这是和机器视觉的精神一脉相承。visionpro最核心的就是,在quickbuild中做实验进行项目测试,ok后,打包,再写程序,调用打包程序即可,寥寥几行。我们来演示这个过程,为了简单,最轻量级,我们使用一个工具,匹配二维码方框:第一,打开quickbiuld,搞定相机,点开工具箱,双击cogacqfifotool添加取像工具:第二,双击添加匹配工具,用折线把他们连接起来,保证图像传递:第三,

2020-10-28 11:59:33 188

原创 visionPro学习再研究,搭建环境(一,追着自己跑,继续推进megauging)

想用自己的Megauging代替visionpro,就得再琢磨研究。先搭建个项目,再熟悉曾经用过的visionpro。第一,先搞定硬件和软件环境:a,一颗常用的basler千兆网口相机(gige接口),200万黑白(1600*1200)ccd,要注意,电脑端一定是支持gige的千兆网口,工控机或者笔记本都可以。b,常用的computar2514镜头c,12v相机供电线,或者poe网口供电线模块d,一根通用的网线。e,安装visionpro软件,我用的是7.2版本,最好是xp系统,

2020-10-26 19:37:10 205

原创 使用差图像进行地震预测(二,c#实现)

//roi图像做差用,tempimage3=roi图像//glob_buffer8,直接从相机取出的图像,很实时,与roi图像tempimage3有时间差。if (tempImage3 == null) return; _RoiW = Convert.ToInt32(textBoxW.Text); int mod = _RoiW % 4;//解决四位对齐问题20150716 _RoiW = _RoiW + (4 - mod) % 4; ...

2020-10-25 14:32:02 103

原创 使用差图像进行地震预测(一,c#实现)

做机器视觉久了,发现要求的精度越来越高,当你习惯了1um的精度时,你对动静的灵敏度会非常高,因为你会发现动静会对你的机器视觉图像影响非常大。突发奇想,这个原来可以感知地震,应该比张衡的地震仪精度高多了!感知地震,你不可能天天盯着相机图像看吧!是否可以通过程序来自动感知呢?搞机器视觉,不就是干这个的吗?用什么方法呢?很简单,实时图像前后两帧做差,如果发生变化,我们就认为感知到了震动,否则,图像无变化,做差结果显然为零了,做差图像显示就是一团黑。那么发生变化的做差图像,动动脑筋,想一下,

2020-10-25 14:14:37 116

原创 Hu矩的学习,图像轮廓特征识别(二,c#实现)

Hu矩5,7的公式有争议,我采用数字图像处理冈萨雷斯三版的公式,不过,感到还是不满意,有问题。我们获取轮廓的特征,在此主要考察Hu矩1,2,3,4,6五个公式就够用了。我们前面演示已经说明问题。需要说明的是,我们程序中,Hu矩5和Hu矩6顺序对调了一下。实现Hu矩的c#代码:// List<Point> singlefigure = null;//大斑轮廓 //tempbuffer8//截取的roi图像 // _RoiW//截取的r...

2020-10-24 16:25:07 114

原创 Hu矩的学习,图像轮廓特征识别(一,c#实现)

今天1024,写点东西庆祝一下!机器视觉自从搞定斑和轮廓后,今天在自己的Megauging(轻量级仿写visionpro软件)中引进Hu矩来进行图像轮廓特征识别。先看热闹,再看代码:第一,打开相机,实时取像:第二,右边工具箱鼠标双击,依次添加三个工具,imagesource(图像源),calibrate(标定),blobmatch(斑匹配),用折线连接起来,保证图像能传递到斑匹配工具,实时图像上点击鼠标右键,选择wmcopydata项,抓取单帧实时图像传blobmatch(斑匹配)工具:

2020-10-24 16:08:59 84

原创 LOG(拉普拉斯高斯函数)缘分天空(数学的魅力)

曾经,高数学的还行。毕业很多年,有一种强迫症,遇到和微积分有关的话题,都会想起一个公式,并证明他,来验证父母掏的学费是否打了水漂。计算机专业毕业后,有近十年,都不曾用到计算机和高数,曾想,估计,这辈子糟蹋了所受教育,知识和实际太遥远了。时不时,感到编程手生,这个公式很陌生,证明不了,我都怀疑曾经证明过他,或许对你来说,就是一个很普通的高数课本上的习题,但我和这道习题的缘分没有终结,请看高数习题:请证明:+=g''(r)+g'(r)*1/r(x,y)!=(0,0),f(x,y)=g(r),

2020-10-18 18:59:49 65 2

原创 再回顾梯度和的应用(矩形旋转,如何求梯度和,积分和)

在机器视觉入门,找线工具的设计中,我们找穿越点时,因为找线工具只有一个方向,所以我们使用了梯度和=d。而在自动对焦中,我们用使用了梯度和=|dx|+|dy|。上一篇,积分和对比梯度和,公式又变为梯度和=dx+dy。三种表达,实质是一样。我们发现梯度和可以找穿越点,可以探知清晰度的变化,还可以代替积分和。实际在前面的经历中,我们还用梯度和探索边缘,探索角点,详见博文网格工具设计。现在存在一个问题,就是矩形旋转了,矩形框梯度和怎么计算?线图像ac,在b点灰度发生了变化,梯度和5个一组

2020-10-13 17:58:56 116

原创 surf算法中积分和(图)与盒式(box)滤波器的关系扩展(四,梯度和及效率)

以下,我们在图像处理中默认梯度,导数,差分是一个概念。我们前面博客中关于自动对焦,使用了梯度和=|dx|+|dy|的方法解决。我们上一节证明了积分和与二阶差分(梯度)的关系,或者说积分和与盒子(box)滤波器之间的关系。显而易见,积分和能表达上面关系,那么梯度和也能表达二阶差分(梯度)的关系。因为一阶导数求导,就是二阶导数,这种关系,应该比积分和更近吧!既然,积分和的加减能表达二阶差分,也就是说,积分和的加减也能表达梯度,这就是积分和与梯度和以及盒子(box)滤波器的关系。所以,

2020-10-13 11:31:30 123

原创 surf算法中积分和(图)与盒式(box)滤波器的关系(三,证明)

二者关系证明如下:

2020-10-12 16:50:34 102

原创 surf算法中积分和(图)与盒式(box)滤波器的关系(二,c#实现代码)

关于矩形框(roi区域)积分和的c#实现代码://m_cutImageRoi//这个机器视觉入门(二)里边的类,博客中有,专门用来截取感兴趣区域图像的,//在这里,很简单,只是一个不用旋转的矩形框,你也可以自己搞定//glob_buffer512512 //点一的积分和//矩形的左,顶 // int w = Convert.ToInt32(textBoxpt1x.Text); int w = (int)m_cutIma...

2020-10-12 16:15:20 126

原创 surf算法中积分和(图)与盒式(box)滤波器的关系(一,突发奇想验证)

想到一个好主意,标定片用来验证积分图与盒式(box)滤波器最好不过。另外,有所感悟,所谓的滤波,实质是匹配。盒式(box)滤波器就是盒式(box)匹配。刚好有512*512的标定片图像,立马创建roi(感兴趣)区域,进行积分和计算,图像来的更直观,在我们前面sift代码基础上,改造一下,如图:有没有发现,红色的roi矩形框(黑色正方形),积分和是稳定的,基本都是16开头的。好,我们再改变一下:看到没?都是19开头的。那么,你会有什么想法呢?当我在这512*

2020-10-12 15:59:06 145

原创 sift算法搭建(上半部,八,dog金字塔最优偏差迭代找到最优亚像素极值,c#实现)

接着“sift算法搭建,上半部,七”,先看公式,再看代码:接着前面的代码,for循环中的5,是迭代5次寻优,亚像素极值: //将找到的极值点对应成像素(整数) c += (int)Math.Round(xc); r += (int)Math.Round(xr); layer += (int)Math.Round(xi); if (layer < 1 || l...

2020-10-09 11:16:25 105

原创 sift算法搭建(上半部,七,dog金字塔中筛选后的极值点求最优偏差,亚像素级别,c#实现)

接“sift算法搭建上半部,六”中未完成的程序,调用函数: else { int r1 = j, c1 = i, layer = L; double contrastThreshold = 0.04; double edgeThreshold = 10.0; ...

2020-10-09 10:54:06 105

原创 sift算法搭建(上半部,六,dog金字塔中干扰的极值点排除,c#实现)

看图片,看代码: List<int[]> 第一组dog五层金字塔 = new List<int[]>(); 第一组dog五层金字塔.Add(oct1dog2layer512);//第一组dog五层金字塔[0] 第一组dog五层金字塔.Add(oct1dog3layer512);//第一组dog五层金字塔[1] 第一组dog五层金字塔.Add(oct1dog4layer512);//第一组dog五层金...

2020-10-09 10:17:04 47

原创 sift算法搭建(上半部,五,求二阶三阶黑塞矩阵的逆程序对比,c#实现)

先看二阶黑塞矩阵: private void 二阶黑塞矩阵的逆(ref double a,ref double c,ref double b,ref double d) {//未考虑bc-ad==0 //因为黑塞矩阵的逆*黑塞矩阵=单位矩阵 //a c*AA CC=1 0 //b d BB DD 0 1 //a*AA+c*BB=1; //b*AA+d...

2020-10-09 10:03:06 108

原创 sift算法搭建(上半部,四,第一组第一层dog金字塔生成,c#实现)

我们直接上代码,这更能说明问题:int[] oct1dog1layer512 = new int[512 * 512]; int[] oct1dog2layer512 = new int[512 * 512]; int[] oct1dog3layer512 = new int[512 * 512]; int[] oct1dog4layer512 = new int[512 * 512]; int[] oct1dog5layer512 = ...

2020-10-09 09:36:57 89

原创 sift算法搭建(上半部,三,第二组高斯金字塔第一层图像生成,c#实现)

我们的高斯金字塔第一组图像是512*512的,一共六层,第二组高斯金字塔第一层图像生成256*256,其尺度等于第一组高斯金字塔第四层尺度(也就是6-2,第一组高斯金字塔倒数第三层),有以下关系:当我们生成了第一组高斯金字塔的第四层,我们就可以生成第二组高斯金子塔了,尺度不变,隔行隔列取第四层图像,就变成256*256第二组高斯金字塔第一层了,有了第一层,第二组其他五层图像依照上面关系就生成了。256*256第二组高斯金字塔第一层图像代码: ////////////////////////.

2020-10-09 09:24:46 103

原创 sift算法搭建(上半部,二,代替二维的一维高斯模板实现,c#实现)

曾经学习canny时,学到了大神的高斯模板生成,由于二维高斯的可分离性,形成一维的x方向和y方向的高斯模板,之所以选择一维的原因,一是,处理图像速度效率高二是,图像周边处理效果好大神的代码是c++的,我翻译成c#的呈上:double nSigma = 1.25; //定义高斯函数的标准差 int nWidowSize = (int)(1 + 2 * Math.Ceiling(3 * nSigma)...

2020-10-09 08:59:26 44

原创 sift算法搭建(上半部,一,像孩子一样玩乐高积木,c#实现)

程序,像乐高积木,我没玩过,但我脑袋里边,闪过,我的孩子聚精会神的在玩积木,捏泥人的样子。可能是一辆摩托车,也可能是汽车,或许可能是坦克,也或许捏了一个士兵,驾驶着积木玩具,或许还捏了一个我,后来送给我。扯远了,返回!其实做这个sift算法上半部搭建,就想验证一下,有没有我的harris亚像素角点效果好,仅此而已!先示意一下sift上半部搭建的过程,以及中间结果(c#运行结果),后面再一步一步给出程序:第一步,加载图像第二步,截取512*512图像第三,试了一把sigma=1

2020-10-08 21:13:36 68 2

原创 ​​​验证拉普拉斯高斯函数和差分高斯函数的关系(证明lindeberg的LOG和DOG,二)

即如何验证我们已经知道真正的LOG=(/*1/-2/)*exp(-0.5*/)他们说,sigma*真正的LOG近似等于=(G(x,y,k*sigma)-G(x,y,sigma))*1/(sigma*(k-1))他们说k=,所以第二个octave的尺度=2,即每一组开头的尺度是前一组倒数第三个的尺度。k=1.26,sigma=1;y=0,x=0,1,1.8,2//G(x,y,1.26)-G(x,y,1)*1/(1*(1.26-1))x=0,G(x,y,1.26)-G(x,y,1)=0.

2020-10-02 14:45:27 50

原创 寻找真的拉普拉斯高斯算子LOG(证明lindeberg的LOG和DOG,一)

教材上说二维高斯平滑函数如下:h(x,y)=-exp(-0.5*(+)/)令+=,则h(r)=-exp(-0.5*()/)上式对r求导数,=(-0.5/)*-exp(-0.5*()/)*=r/*exp(-0.5*()/)那么r的二阶导数=1/*【*exp(-0.5*()/)+r*exp(-0.5*()/)*(-0.5/)*】=1/*【1-/】exp(-0.5*()/)=-(/*1/-1/)*exp(-0.5*()/)教材上说,用最后这个公式来求拉普拉斯的值,如图a..

2020-10-02 08:33:03 55

原创 SIFT高斯差分(DOG)函数泰勒展开求极值(矩阵求导,程序化)

上面的答案是用来求函数极值,或者说求函数最优解。比如说函数f=+的极小值是多少?我们如何用编程的方法来求函数最优解?这就要用泰勒展开,并求泰勒展开导数=0假定△x=x-x0;△y=y-y0;下面是函数的泰勒展开f(x,y)=f(x0,y0)+f'x*△x+f'y*△y+1/2*f''xx*+1/2*f''yy*+f''xy*△x*△yA:求泰勒展开针对X偏导数=0,上式中一,二阶导数都是一个确定的值,而非变量,所以0=0+f'x+0+1/2*f''xx*2*△x+0+f''xy*△y

2020-10-01 11:41:23 126

原创 有限差分法在图像求导中的应用

有限差分法求导A:函数f(xi-h)的泰勒展开等于:f(xi)+((xi-h)-xi)+(1/2)B:函数f(xi+h)的泰勒展开等于:f(xi)+((xi+h)-xi)+(1/2)A-B:f(xi-h)-f(xi+h)=0-2h*所以,=(-1)(f(xi-h)-f(xi+h))/2h,当h=1,则=(f(xi+1)-f(xi-1))/2,这个公式在图像处理(计算机视觉)中经常用到。我们把=(-1)(f(xi-h)-f(xi+h))/2h带入A中:那么可以求出=【f(xi+h)+f

2020-10-01 09:38:12 78

原创 程序化函数求导c#实现

前面在牛顿法改进版博文中,函数求导并未程序化,一个未了的心愿,下面来实现它:首先是,求导的方法,可程序化的,这种方法叫做有限差分法求导,方法如下:A:函数f(xi-h)的泰勒展开等于:f(xi)+((xi-h)-xi)+(1/2)B:函数f(xi+h)的泰勒展开等于:f(xi)+((xi+h)-xi)+(1/2)A-B:f(xi-h)-f(xi+h)=0-2h*所以,=(-1)(f(xi-h)-f(xi+h))/2h,当h=1,则=(-1)(f(xi-1)-f(xi+1))/2,这个

2020-09-30 18:53:16 222

原创 局部加权回归Loess对比MFCC三角滤波(吴恩达机器学习中说,Loess算法用到了aircraft的自动驾驶中)

局部加权回归(Loess):Loess的目标是最小化, 其中的作用是使预测点的临近点在最小化目标函数中贡献大:Loess更加注重临近点的精确拟合。这个算法中最神奇的就是这个w,局部相关性w很像高斯模板中心到边缘(3*sigma+1)/2的局部相关性,也就相关性关注(起作用),其他不关注(不起作用);从这一点出发,我们可以看到MFcc三角滤波中,每一个三角形滤波器都有这种局部相关性,只不过Mfcc最求的是三角形内归一化操作,而局部加权回归是局部相关范围内的最小二乘法。我们再看一眼梅

2020-09-30 08:44:56 58

原创 高斯判别算法GDA(吴恩达机器学习实践总结,四)

通过前面的实践,我们已经可以通过正态分布函数生成样本点,这是什么意思呢?其实也就是说,任意图像上的样本点如果能和我们的模板重合,我们就认为,这样的样本满足了正态分布,我们已经掌握,调整参数,生成不同的同心圆或者同心椭圆来框定这些样本,这样我们就可以很好的把样本从图像中分离出来,或者说我们掌握了图像的特征,如果图像中有正负两种样本,均满足高斯正态分布,只是参数不同,那么我们就可以很好的把这两种样本分割开来,这就是高斯判别算法GDA。需要改进的是:1,椭圆(或者圆)可以在图像时用鼠标任意拖动,即改变中心

2020-09-29 21:26:06 26

原创 高斯判别算法GDA(吴恩达机器学习c#实践,高斯模板上同心椭圆马氏距离画法,三)

先画一个水平椭圆吧!(参考计算机图形学基础)以下是画旋转椭圆的C#代码: //因为是11*11,不妥,X12,所以改为44*44*3*3,最终放大了16倍 byte[] gaos = new byte[11 * 11]; for (int j = 0; j < 11; j++) { for (int i = 0; i < 11; i = i + 1) ...

2020-09-29 15:48:00 33

原创 高斯判别算法GDA(吴恩达机器学习c#实践,生成高斯模板显示同心椭圆马氏距离,二)

先看以下是个什么?真看不出什么,对比一下还行,还是看不出来,我们让马氏距离放大十倍等于15,高斯值放大1000倍等于4的像素加以阻挡指示出来,使用白色。同心椭圆:(为什么?0值改0.5,不是水平方向的椭圆?而是135度的椭圆?)下面是C#对这个协方差矩阵改变后的高斯模板的计算://协方差矩阵 // a*a P*a*d====3.3 0.5 // P*a*d d*d====0.5 3.3 i...

2020-09-29 15:17:12 26

原创 高斯判别算法GDA(吴恩达机器学习c#实践,生成高斯模板显示同心圆马氏距离,一)

首先实现P(x|y)=高斯函数(正态分布),即y是正态分布,是条件,我们把它还原到图像界面I(i,j)每一个像素,是结果。这个实际就是生成高斯模板,我们前面有3*3的高斯生成算法,但是根本没有办法显示,3*3=9个像素,针尖一样,我们在这个基础上,生成11*11的高斯模板,并放大16倍,生成图像,在界面显示出来,看是否是同心圆,二维高斯像一个大钟,我们用平面平行xy平面,切割大钟很多次,感到很像核磁共振人体切片,把这些等高线,让z=0,在xy平面画出来,验证一下,发现图像的高斯离散型和高斯的连续函数还是

2020-09-28 17:58:59 57

原创 dijkstra赋权有向图最短路径算法(改进参考)

参考书目:游戏人工智能编程案例精粹 Mat Buckland 著作

2020-09-27 19:34:24 65

原创 dijkstra赋权有向图最短路径算法c#初步实现

da,da,da,da来点节奏,记住这个名字,这个伟大人物的名字。下面是c#代码初步实现,总算完成了,完成了就是好的,以后继续改进:namespace dijkstra改进{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_L...

2020-09-27 19:08:19 59

原创 牛顿法改进版(吴恩达机器学习c#实践)

参考书目:机械最优设计技术,孟兆明 常德功编著namespace 牛顿法改进版//求函数minF(X)=x0^2+x1^2-x0*x1-10*x0-4*x1+60{ //1,如何求偏导数? //2,如何求黑塞矩阵逆矩阵? public partial class Form1 : Form { public Form1() { InitializeComponent(); } int ...

2020-09-21 17:31:21 59

原创 牛顿法(吴恩达机器学习c#实践)

参考书目:机械最优设计技术,孟兆明 常德功编著namespace 牛顿法//求函数minF(X)=x0^2+x1^2-x0*x1-15*x0+75{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } int 维数N = 2; double 收敛精度E = 0.01; ...

2020-09-21 17:13:17 48

原创 坐标轮替上升法(吴恩达机器学习c#实践)

参考书目:机械最优设计技术,孟兆明 常德功编著坐标轮替上升法与梯度下降非常相似,在梯度下降基础上以下是c#代码:namespace 坐标上升法//求函数minF(X)=x1^2+x2^2-x1*x2-15*x1+75{ public partial class Form1 : Form//求函数minF(X)=x1^2+x2^2-x1*x2-15*x1+75 { public Form1() { InitializeCompo...

2020-09-20 09:32:21 65

原创 梯度下降(吴恩达机器学习c#实践)//求函数minF(X)=x0^2+x1^2-x0*x1-15*x0+75

这个算法也叫盲人下山(参考了机械最优设计技术,孟兆明 常德功编著),下面是c#代码实现:namespace 梯度下降//求函数minF(X)=x0^2+x1^2-x0*x1-15*x0+75{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } int 维数N = 2; doubl...

2020-09-19 19:50:08 175

原创 casio pb-700简单使用basic语言编程并编译执行(运行)(希望能给你提供便利)

闲鱼上淘宝casio pb-700,铁路系统版本,果断收藏。花时间,清除了该清除的,恢复了casio pb-700原来的样子。是否可以写个basic程序,运行一下?程序敲完了,不知道怎么编译运行,网上找说明书,绝迹了,还好有卖说明书的,价格比计算机本身贵,怎么办?瞎折腾一下午,终于出成绩了,哈哈!省了一大笔钱!使用步骤如下:第一,shift键+‘1’键,屏幕出现:Ready P1第二,输入basic代码:(注意每一行结束使用回车j键enter换行) ...

2020-09-17 09:04:27 235

原创 支持向量机(SVM)入门C#代码实现smo,改进第三版(五,画出来,吴恩达机器学习实践)

在前面基础上,代码增加了通用性,样本点增加到八个,运行效果如下:c#代码如下:(对比参考前面的代码,前面运行没有show出来)namespace smo改进3{ public partial class Form1 : Form//核函数仍然保持使用简单点积,没有使用高斯核函数,202009161816改进 { public Form1() { InitializeComponent(); } ...

2020-09-16 19:07:50 82

GaugMe.sln_20140115_215630.cab

此配合博客机器视觉入门(一)讲义学习之用,以前vs2005下vc++调试通过,最近vs2013下vc++调试通过

2020-07-15

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除