机器视觉自我实现(三)
文章平均质量分 73
工业机器视觉设计和实现
这个作者很懒,什么都没留下…
展开
-
关于8位图像buffer显示到picturebox上
以前用c++,固定思维,喜欢用sendmessage,WM_COPYDATA,这次在c#中吃了大亏(接受的动态库窗口没有title name,导致WM_COPYDATA带过来的图像去错了地方,串台了),但改过了,就算成功。一直用第一版本,好几年了,中间改成24位buffer显示到picturebox,24位可以在picturebox中显示,也改成32位显示过,没什么问题,一直也很小心width4位整除问题,所以也没写进去。//其实这都是和显示相关,处理图像其实不必考虑,int mod = ww % 4;原创 2023-11-25 20:45:46 · 636 阅读 · 0 评论 -
基于形状的匹配提纲(第六个问题解决)
记录,分享原创 2022-12-22 19:34:32 · 348 阅读 · 3 评论 -
为什么要追寻更快的高斯平滑速度?(比IIR高斯递归法还快,c#实现,二)
记录奉献原创 2022-12-01 19:45:50 · 162 阅读 · 0 评论 -
基于形状的匹配提纲
记录原创 2022-10-31 10:02:48 · 399 阅读 · 2 评论 -
基于形状的模板匹配突破(黑中白,曙光,追赶visionpro)
记录原创 2022-10-29 17:55:35 · 1268 阅读 · 0 评论 -
敲开bp神经网络之门(三,机器视觉斑点blob匹配中使用)
记录原创 2022-10-29 12:06:55 · 301 阅读 · 0 评论 -
rgb转hsl,红绿蓝转色调饱和度亮度(颜色转换,c#)
记录原创 2022-10-20 14:40:42 · 2116 阅读 · 2 评论 -
高斯金字塔的秘密(二,加速高斯,c#实现)
记录,备用原创 2022-10-20 10:11:09 · 598 阅读 · 0 评论 -
高斯金字塔的秘密
记录原创 2022-10-18 20:48:29 · 598 阅读 · 0 评论 -
自己最好的canny实现(二,c#)
canny可以封笔le原创 2022-10-18 18:59:58 · 307 阅读 · 0 评论 -
相邻感知(二邻域感知器,轮廓爬虫)
感知原创 2022-10-18 16:48:20 · 350 阅读 · 0 评论 -
视觉与机器人的九点标定(三)
应用为王原创 2022-09-15 18:39:45 · 1551 阅读 · 0 评论 -
视觉与机器人的九点标定(二)
应用为王原创 2022-09-15 17:49:19 · 527 阅读 · 0 评论 -
视觉与机器人的九点标定(一)
应用为王原创 2022-09-15 17:16:08 · 6449 阅读 · 0 评论 -
自己最好的canny实现(c#)
记录原创 2022-09-06 18:32:56 · 382 阅读 · 0 评论 -
直方图均衡化(三,c#实现)
备用原创 2022-09-06 18:03:49 · 578 阅读 · 0 评论 -
找斑点(blob)的最小旋转矩形(三)
最小旋转矩形样图展示原创 2022-09-06 16:05:52 · 576 阅读 · 0 评论 -
找斑点(blob)的最小旋转矩形(二)
最小旋转矩形可以快速的匹配一个斑点(blob)原创 2022-09-06 13:54:47 · 111 阅读 · 0 评论 -
找斑点(blob)的最小旋转矩形(一)
最小旋转矩形可以快速匹配一个斑点(blob)原创 2022-09-06 13:47:33 · 489 阅读 · 0 评论 -
visionpro学习再研究,camera实时观察和调用(四,追着自己跑,megauging继续推进)
在visionpro中,我们静态图像处理好了(我们刚刚在前一讲匹配模板学习好了),需要动一下观察物,实时观察图像,并运行,再次看静态图像处理结果(匹配效果)。常常需要实时观察,visionpro给我们提供了一个实时观察的控件,添加步骤如下:第一,工具箱---选项中,如图添加:第二,拖动到form界面如下,我感觉其实这个cogdisplay控件就是picturebox:第三,我们前面创建了一个c#项目,“调用cognexvpp”,实时取像代码: CogAcqFifo...原创 2020-10-30 17:42:36 · 1687 阅读 · 0 评论 -
visionPro学习再研究,快速开发toolgroup示范(三,追着自己跑,继续推进megauging)
我们用vs2010创建一个c#项目,名称“调用cognexvpp”,使用framewor3.5,我们仍然遵循轻量化使用visionpro,以便我们用meguaging替换他。好,我们已经创建了一个form,我们怎么加载hello.vpp呢?第一,点击工具箱,在最下边,点击右键,选择“选择项...”如图:第二,选择cogtoolgroupeditv2,如图所示:第三,这个工具就出现在工具箱里,拖放到form,如图:第四,好,添加代码:要注意:第五,运行,ok,加原创 2020-10-28 14:28:51 · 1141 阅读 · 0 评论 -
visionPro学习再研究,快速开发(二,追着自己跑,继续推进megauging)
visionpro之所以独占鳌头的原因是他可以快速开发,使得机器视觉项目高效完成。这是和机器视觉的精神一脉相承。visionpro最核心的就是,在quickbuild中做实验进行项目测试,ok后,打包,再写程序,调用打包程序即可,寥寥几行。我们来演示这个过程,为了简单,最轻量级,我们使用一个工具,匹配二维码方框:第一,打开quickbiuld,搞定相机,点开工具箱,双击cogacqfifotool添加取像工具:第二,双击添加匹配工具,用折线把他们连接起来,保证图像传递:第三,原创 2020-10-28 11:59:33 · 1960 阅读 · 0 评论 -
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 · 2150 阅读 · 1 评论 -
使用差图像进行地震预测(二,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 · 250 阅读 · 0 评论 -
使用差图像进行地震预测(一,c#实现)
做机器视觉久了,发现要求的精度越来越高,当你习惯了1um的精度时,你对动静的灵敏度会非常高,因为你会发现动静会对你的机器视觉图像影响非常大。突发奇想,这个原来可以感知地震,应该比张衡的地震仪精度高多了!感知地震,你不可能天天盯着相机图像看吧!是否可以通过程序来自动感知呢?搞机器视觉,不就是干这个的吗?用什么方法呢?很简单,实时图像前后两帧做差,如果发生变化,我们就认为感知到了震动,否则,图像无变化,做差结果显然为零了,做差图像显示就是一团黑。那么发生变化的做差图像,动动脑筋,想一下,原创 2020-10-25 14:14:37 · 357 阅读 · 0 评论 -
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 · 604 阅读 · 0 评论 -
Hu矩的学习,图像轮廓特征识别(一,c#实现)
今天1024,写点东西庆祝一下!机器视觉自从搞定斑和轮廓后,今天在自己的Megauging(轻量级仿写visionpro软件)中引进Hu矩来进行图像轮廓特征识别。先看热闹,再看代码:第一,打开相机,实时取像:第二,右边工具箱鼠标双击,依次添加三个工具,imagesource(图像源),calibrate(标定),blobmatch(斑匹配),用折线连接起来,保证图像能传递到斑匹配工具,实时图像上点击鼠标右键,选择wmcopydata项,抓取单帧实时图像传blobmatch(斑匹配)工具:原创 2020-10-24 16:08:59 · 1084 阅读 · 0 评论 -
第三神奇----harris角点之亚像素角点最小二乘法实现(感兴趣区域(roi)变化为角点)
已经明白两个向量点积为零的道理(x1*x2+y1*y2=0;即k1*k2=-1),亚像素角点即就是整数角点间的插值。时间回到2016.07.25今天使用聚集区harris整数角点做为向量P(i),求向量q(亚像素点)。在角点聚集区域再一次harris角点迭代仍然是整数角点,意义应该不大。两个向量点积为零是一个非常好听的名字,即让角点聚集区非负点积接近零的插值,不就是最小二乘法吗?...原创 2019-03-06 15:23:44 · 781 阅读 · 0 评论 -
第三神奇----harris角点的理解和实现(感兴趣区域(roi)变化为角点)
首先,要有这样的意识,梯度的方向会垂直边缘。那么x的梯度和y的梯度相交,也即两个边缘相交就会形成角点。那么,什么是梯度?在图像处理上,可以这样表达:Gx=I(x+1,y)-I(x,y);Gy=I(x,y+1)-I(x,y).I是图像阵列那么x,y处的梯度这样表达,▽I(x,y)=|Gx|+|Gy|;梯度的方向θ=arctg(Gx/Gy).Gx,Gy很像一阶导数,虽然从数学上来讲此种表达...原创 2019-03-06 09:59:19 · 417 阅读 · 0 评论 -
一步一步实现自己机器视觉Megauging中工具的制作和运作(简单示范,抓矩形工具与其他工具组项协作,四)
我们的gaugeRectform制作完成,在工具组里边双击,秀出来:RectGaugeForm gaugeRectFr;//202006010712连线工作未做,正在添加roi的四角感知能力以上鼠标响应双击事件,显示一个form: if (ispointInRect(pfme, toolitemRect.m_RoiBase1.rcWin))//双击在toolitemRect的矩形框里 { gaugeRect...原创 2020-06-04 08:33:14 · 305 阅读 · 0 评论 -
一步一步实现自己机器视觉Megauging中工具的制作和运作(简单示范,抓矩形工具功能实现,三)
我们需要双击toolitemRect,产生一个form,当有图像传入,我们可以操作去找矩形,这个form如下,分两部分,通用部分和针对性部分(这里针对自然是gaugerect),其实我们大部分工具都是这样设计的。通用部分,前面博客已经出现,代码可参考:a,Learning opencv续不足(二)感兴趣区域图像截取b,神奇的东东在一个界面快速组织起来工作(一)public partial class ImageSourceForm : Form{...................原创 2020-06-03 15:45:00 · 321 阅读 · 0 评论 -
一步一步实现自己机器视觉Megauging中工具的制作和运作(简单示范,抓矩形工具进入工具组,二)
我们拖动一下加载了gaugeRect位图的toolbox,如下图:鼠标移动事件响应代码: PointF point = new PointF(e.X, e.Y); bool status = false; if (e.Button == System.Windows.Forms.MouseButtons.Left) { status = true; ...原创 2020-06-03 11:45:07 · 405 阅读 · 0 评论 -
一步一步实现自己机器视觉Megauging中工具的制作和运作(简单示范,抓矩形工具在工具盒产生,一)
我们的工具盒里有八个工具,我们以抓取矩形(gaugeRect或rectcaliper)工具,我通常称他为抓框工具,为demo(例子),一步一步展开,先看一看8个工具的样子:我们先用小画家(mspaint.exe)制作一个51*32位图icon,存为RectCaliper1.png,样子如下:,当然放在debug文件中。程序中加载步骤如下:一,声明变量 public mgToolBox mytoolbox;//自制的工具盒 Bitmap[] bmp=null...原创 2020-06-02 16:50:00 · 424 阅读 · 0 评论 -
Megauging中最后一个抓矩形工具设计(孙大圣的金箍棒(线图像)再变化)
MeGauging一直觉得没有必要设计一个抓框工具,工具盒中一共八个,设计了七个,预留了一个,差一点给了未畸变网格工具,一个是他在标定中出现了,还有一个是他不够简单?还有就是对他充满了超凡的想象力,变换万端的不确定,实在焦虑的很!让他在未来定格吧!没想到最后还是给了抓框工具。这一次我设计了一个简单的抓框工具,这里有一种回归简单的理想,当时间点回到2013年的成都(宿舍看到的西岭雪山,上班路上花圃里的栀枝花香,狂热的满头大汗的热爱打乒乓球,四月的芦山地震,六月的暴雨,后悔没去峨眉山),那时正用evisio原创 2020-06-01 17:42:34 · 249 阅读 · 0 评论 -
第八神奇----megauging中核心动态库访问成功
我们的动态库是MegaugingLibNew.dll,程序中使用步骤如下:MeGaugingLib1又是什么呢?就是MegaugingLibNew.dll添加到项目程序中的控件名称,看图:我们的返回的是一条直线和这条直线的角度,在动态库工具组(toolgroup)中运行结果如下黄色线所显示:我们当前测试程序中添加了一个按钮"对MG动态库(dll)的访问和调用",响应代码前面已经显示了,就如下样子:既然我们是以cognex的visionpro为蓝本的创作,是否越长越像了呢?原创 2020-05-31 11:18:01 · 253 阅读 · 1 评论 -
最后的神奇----MeGauging中核心动态库的设计(快捷编程,第二动态库)
看图,toolgroup(工具组)和toolbox(工具盒)工具盒像不像‘连连看’,是的,收到了他的启发,而且,我们前面的‘写给父亲的语音计算器’也是如此设计,其实都是‘线图像工具’设计的变化,站着的‘线图像工具’,添加了位图icon的加载,区域鼠标事件的判断和响应,我们在看一看,感兴趣区域,坐标系,都是一脉相承,还是那话:自己的东西,自己都不用,别人怎么会用!你说我们的‘未畸变网格’设计,是否也和此有关系呢?是的,这或许就是不觉察的隐式传递。在看一看:而工具组(toolgroup)原创 2020-05-25 10:07:43 · 393 阅读 · 0 评论 -
机器视觉径向畸变校正分步实现(标定,七,补充:未畸变网格工具继续进化,新一版的标定)
与其健忘,不如记录与其懒散,不如再总结(总结使人进步,进步了,还是应该奖励一下,阿尔卑斯糖吧,甜的!)何以如此,趁方兴未艾,趁热打铁。未畸变网格工具的第二版(感兴趣区域roi)和第三版(整个视野,标定)均在此处。并借此实现新一版标定。未畸变网格,又是一次感兴趣区域的胜利。图的世界总是比文字的世界信息量丰富。上图:第一幅,加载标定片第二幅,图像丢给标定那边去第三幅,像不像visionpro?第四幅,进入标定界面,利用截取roi界面小试未畸变网格(第二版)第五原创 2020-05-24 21:31:34 · 968 阅读 · 0 评论 -
c#下导入使用微软的sendmessage接口函数(api)
第一,using System.Runtime.InteropServices;第二, public struct CLineAndTheta { //public int x; //public int y; public PointF startPt; public PointF endPt; public double theta; };第...原创 2020-05-20 09:02:38 · 250 阅读 · 0 评论 -
第九神奇----MeGauging中有关相机动态库设计(第一动态库)
动态库baslercamdll包含的功能:1,实时取像2,缩放图像3,图像中点击右键菜单响应(a,savebitmap;b,wm_copydata)4,a,响应外来消息,一个是输出图像,b,一个是接受数据并在图像界面显示。整个界面如下:第一个技术,我们的博客中已存在,请参考:简单使用gige千兆网口basler工业相机第二个技术,我们的博客中已经存在,请参考:图像上任意点的自由缩放(zoom)技术第三个问题,图像中点击右键菜单响应a,savebitmap原创 2020-05-19 17:15:41 · 305 阅读 · 0 评论 -
第一神奇----第一次在机器视觉项目中使用自己的线图像工具
那是在2016年初,项目有需求,软件没这项功能,然后想到了自己做的MeGauging中有这样的功能,修改即可谁也不知道谁也没告诉当时有点怕怕很谨慎,反复测试,用了半年,很稳定,戒备心也慢慢放下了,就是下面这个图中红色的框,以及中心十字:这个通道可以看得再清晰一些:当下这个红色框占用的通道是20um宽度,一系列的还有8um通道,4um通道等等,激光就是要在这个晶圆通道切割。代码如下: double lmapsx1 = 0, lma...原创 2020-05-18 16:58:31 · 635 阅读 · 0 评论