在家过了个年,就完成一件事,就是白白涨了4斤肉,什么都没做,回到学校就立刻补了一篇博客,最近也有几个网友找过我,很多人是用助手做完图像处理过程之后不知道这些参数什么的怎么用,今天就把这一部分也都说一说。
主要是上学期,我们图像处理这门课上,老师请了欧姆龙一个培训讲师给我讲几节课,感觉还不错。给我印象比较深的就是欧姆龙的视觉开发平台,当然那个应该是他们内部技术人员用来编程的,不会对外公开发布的。
当时给我们讲的一个功能就是检测芯片的引脚个数是否正确。假如正常是8个引脚。但是生产出来可能会是7个或者5个的。这个时候要识别出来产品是否是合格的8个引脚。欧姆龙开发平台的变成模式我觉得和labview的差不多,所以我就用labview来实现一下这个功能。我只是把每一步程序实现了,但是很多细节还没有加上。也没有整合到一起。我就是刚刚有个想法我就写出来了。欢迎来喷!
首先就是怎么确定引脚个数。这里用的就是labview的边缘检测。他的边缘检测算法是在一个方向上的边缘。在视觉助手当中就是下面这个工具。
在进行边缘检测的之前要转化成灰度图像,太简单我就不说了,我们直接看参数吧,也是非常简单的。
1.选择边缘检测方式,有两个选项,一个是简单方式,另一个是高级方式。简单方式需要手动输入一个阈值,阈值对检测结果影响比较大,所以我不建议使用简单方式,这个高级方式速度也没有慢多少,而且准确度也比较高。所以只讲高级的了。
2.有四个选项,其实都是很简单的英文分别是。第一个边缘,第一个和最后一个,所有边缘,效果最好的边缘。我就选择所有的边缘了。因为要引脚的数量,必须把所有的边缘都找出来。
3.有三个选项,分别是,上升沿,下降沿,和上升下降沿。不同之处就是检测的是单侧还是双侧还是单双侧,哎呀,我就觉得这里很简单,就这样
每个参数自己换一下试试就可以知道什么作用了。。。。。
然后用ROI选择工具在需要检测的地方画一条线,就可以得到我们想要的边缘了
下边就是我们得到的信息。以第一个为例,坐标值,这里有两种单位,因为我在上一步学习过标定文件了,所以这里还有一个坐标值是以毫米为单位的。这样也是便于测量,这张图片是我用PS画出来的。所以真值我是不知道的,这里只是演示作用。我们可以自己算一下就是每个灰色的引脚都是20mm左右,
这个distance长度,是边缘点到左边的长度,是一个累加的过程,strength我的理解就是强度,就是这个边缘点效果,当然是越大越说明他是边缘的可能性越大
rising,就是是否是上升沿。。其实我最关心的就是这个边缘的个数,以及边缘点的坐标值。这里设置完,我们finish就好了,finish之前选择一下selsct controls
把这个“边缘信息”这个选项输出,这样我们就可以使用得到的信息了 。
然后按下面的程序框图就可以得到坐标值。。。当然我也是演示作用,你也可以去得到其他的边缘信息。
反正。。。。剩下的自由发挥吧。。。
另一个就是还有个问题,就是进来的图片目标物体可能不在我们那条线那里,怎么才能让新进来的图片在我门想要他在的位置,起个名字就是位姿校正。当然这里我还没有做完,我能想到的首先就是我们要把目标识别出来,这样就到了今天要说的另一个事了,就是模板匹配。道理很简单,就是用一个我们的目标图片,在新图片上进行匹配,找到匹配度最高的部分。。。
这里要说一个新的工具就是这个
模板编辑器。同样我们还是用这个视觉助手。
就是他,前边别忘了灰度图像。进来之后。
我这个是因为我已经输入一个模板了,所以 有一个图像,第一次进来的时候应该是什么都没有的,我们需要加载一个模板,所以我们就用那个新工具来制作一个模板然后加载到这个里边。
加载一个包含你模板的图片。
说实话,那个上边的选择创建模板的类型,我还不清楚这个是什么意思,反正我就全选择上了,就是功能最全的了。这部分我还会继续学习的。
选择一个模板区域
用右边这个工具选择一个我们不需要的区域,只保留脸的部分,,其实我为什么要用这个图片呢,就是因为这个图片相对来说比较复杂一点了。opencv也是可以达到这个效果的,但是他的代码就需要写很长时间。。。。好了,这个我们另存为就好了
保存之后就是一个,png的图片,跟咱们之前做的标定模板是一样的格式。
标注的几个地方,就是咱们得到的信息了,匹配的图像已经在新图象上得到了坐标。做这个的目的是想做芯片的位姿矫正,但是我真的是没有芯片引脚的图片,按照那个边缘检测的方法我们就可以得到坐标值,和咱们希望他在的那个坐标值匹配一下得到相对位移,我们只要移动图片像素就好了。这样就完成位姿矫正 了。
原谅我说的很笼统,因为我现在不做这方面的东西,这个就是个业余爱好,我们的项目也不会去检测芯片引脚是否正确, 就是平时累了换换口味。之前有几个朋友问我标定完了不会用,这个边缘检测就是用了之前的标定模板,得到了边缘点的真实尺寸,不知道我写这个会不会给那个哥们一个启发。