halcon学习和实践(工业视觉套路)-灵析社区

神机妙算

       和学术领域为了追求正确率尝试各种算法不同,工业视觉领域更多的是一种算法的套路。这些套路有它自己的道理,也有它内在的逻辑,整个过程也比较好解释,所以在工业上面其实用的很广。大家可以来看一看,

        在工作当中,会有一个有趣的现象。那就是,早期的很多工业视觉工程师,虽然没有系统学过相关图形图像的原理,但是这并不妨碍他们在实际生产和工作中大量使用工业视觉的相关算法。究其原因,主要是他们了解算法使用的套路,知道怎么把需求和算法匹配起来,所以熟悉了算法理论的同学只要掌握了这个套路,也是可以很快搭建出自己需要的视觉工业开发软件的。

1、图像获取

       工业图像获取目前主要是usb3和ethernet。ethernet因为可以分布式部署,处理图像的设备可以和摄像头离的很远,camera部署也比较方便,因此在生产中得到了广泛引用。此外,图像获取的这部分工作主要都是由设备厂商来完成的,开发算法的同学只需要复用厂家给出的demo代码即可。

2、彩色转黑白

       如果选用的是黑白相机,那么获取的图像直接就是黑白图片。反之,如果本身是彩色相机,算法分割对色彩没有特殊要求的话,那么大概率需要自己转换成黑白图像。黑白图像处理数据少一些,但是细节部分还是保留下来了,计算量也小很多,后续的主要算法也是基于黑白图像来完成的。

3、降噪

       自然界的图片总是会存在噪声的,用合理的算法剔除这些噪声是不错的一个方法。当然,降噪还可以通过控制曝光时间、添加滤光片等方法来解决,不仅仅是降噪算法这一个选项。

4、边缘检测

       边缘检测是图像处理的一个重要环节。通过边缘检测的解算,大部分边缘细节都被完整保留下来了,那些边缘不是特别明显的部分往往就被忽略了。

5、二值化

       二值化的意思,后面的黑白图片中,像素值不是0,就是255,没有了中间地带。所以,二值化后的图像,信息进一步聚集,相应的计算量也开始进一步减小了。

6、腐蚀

       腐蚀运算是非常有用的一个操作。如果本来两个区域,因为一些噪声莫名其妙粘连在一起了,那么用腐蚀运算就可以重新把两个区域分开。

7、膨胀

       和腐蚀操作对应的就是膨胀了。举个例子,假设本来是一个区域,同样因为噪声分成了两个区域,那么就可以用膨胀操作来解决这个问题。实际操作中,一般用开运算和闭运算来代替。开运算是先腐蚀、再膨胀;闭运算是先膨胀、再腐蚀,具体用哪个看实际情况。

8、分割

       经过上面的操作之后,图像一般会被分割成若干个小区域。halcon里面用的是connection函数完成,opencv里面用的是findContours函数完成。

9、过滤筛选

       分割后的区域,并不是每一部分都是符合我们要求的。所以这个时候,只能根据一些特定的属性去筛选和过滤了,比如说长度、宽度、面积、圆度、半径、长宽比等等。halcon用的是select_shape函数,opencv就只能自己写了。

10、测量

       经过上面的操作之后,这个时候剩下来的区域往往就是自己需要的连通域了。从图像中可以获取很多的信息,比如长度、宽度、位置、大小、面积等等,这些都是可以通过转换测算出来的。

11、ocr、分类、预测

       随着深度学习的发展,传统的测量和定位已经越来越不能满足客户的需求了。所以,在分割好图像好之后,可以利用模版做进一步的匹配识别操作。此外,对于不规则的图像,可以通过训练模型的方法,进一步从图像中获取故障信息、ocr信息和异常信息等等,这些都是从前的传统图像算法做不了的。即使做,也是基于图像+传统的机器学习算法来做的,比如hog+svm等等,但是它在准确率和效率上面,和深度学习还是比不了的。

12、给机器人发送命令

       图像识别的目的,主要还是为了获取信息,根据信息生成命令通知给控制机构,或者直接一点就是机械手,进一步完成后面的动作,这样一个工业视觉软件算法才算是真正做完了

阅读量:142

点赞量:0

收藏量:0