【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在图像处理中,有两部分比较重要,一个是区域分割,一个是区域提取。区域分割,比较好理解,就是把图像中重要的内容彼此分割开。这里面就涉及到色彩提取、边缘提取、二值化、膨胀、腐蚀等操作。甚至于说,如果软件算法不满足区域分割要求,还需要光源的配合。有了区域分割之后,接下来就是区域提取,这部分也比较重要。
所谓的区域提取,就是通过自定义一些过滤条件,把我们感兴趣的区域提取出来。目前opencv里面SimpleBlobDetector自带的提取条件比较少,主要包括了面积、灰度、圆度、惯性和凸度这五个维度。但是真正的商用软件halcon,这方面的过滤标准要多的多。大家在软件开发的时候,不妨多看看halcon上面提取的条件有哪些。
1、五个维度的高低标准
关于opencv提供的这五个维度,它的标准是什么样的。其实opencv官方已经提供了相应的测试范例,我们直接看这个测试范例就可以学习了。
如图所示,这5个标准,从上到下依次是面积、灰度阈值、圆度、惯性、凸度。面积比较好理解,就是从小到大的顺序。灰度也不难,就是从灰到黑的程度。圆度的话,就是从有棱有角到边缘光滑的过程。惯性有点复杂,简单看,可以认为是直线到圆的过程。凸度可以反过来看,凹进去部分越少,那么凸度就越高。
2、创建项目和创建流程
熟悉了上面的知识点,接下来就可以开始准备实验操作了。首先,还是要创建项目、创建流程。
3、引入区域提取插件
区域提取的插件位于【检测识别】-》【斑点分析】,直接用鼠标把它拖到流程下面即可。双击之后,不出意外我们就可以看到这样的窗口,
需要配置的内容主要就是输入图像、检测条件、具体条件的参数。检测条件可以单选,或者是多选 。具体条件的参数,大家根据自己的需求,灵活做出选择。在上面的tab页中,还有一个ROI配置,这部分也可以搭配着灵活使用。
4、整体流程的设计
区域选择还是比较简单的。我们在实际测试的时候,一般还要搭配上获取图像、图像显示,这样效果比较好一点。
另外,还想表达的一点,就是opencv自身提供的检测条件远远不能满足需求,很多时候需要我们自己手写代码筛选出合格的区域。这里的条件比如长度、宽度、长宽之比、周长、具体圆度的系数、颜色区间、区域的roi位置、区域占整幅图像的比例等等。所以,实际情况要比opencv提供的case要复杂得多,大家可以参考opencv的做法,对于特定的场景,自己去写代码筛选就可以了。本身opencv提供的方法,仅仅是起了一个抛砖引玉的作用。