前面虽然讲了一个案例,但那个案例仅用到了灰度直方图,想来想去,觉得一个案例没有太多的代表性,也体无法完全体现出机器视觉的工业应用场景。所以本篇还是再讲两个案例。同样的,也对案例中的技术做详细讲解。当然,暂时没有涉及到算法与代码,因为还没有讲图像灰度,图像变换,图像连续的算法等。
上面这个案例是一个茶包的检测,主要是通过检测黑边和计算包数。
再上一个案例。然后对这个案例中的图像处理关键技术进行一些讲解。
下面两张图是所有的算法(共用到十二个算法)。
然后再贴四张图一张通过的,三张失败的。分别针对讲解一下。
这张是通过的。
这张是被旋转处于打开状态,这个高度过高了。对比其它的图片就看得出。
这张图片是没有盖的。
这个是没有按压的。
技术上的处理主要还是灰度检测。
这里主要是左右的距离错误。
左边实际距离是22.41,而最大只允许15.超过了。所以报错。不通过。
没盖的这个,检测到直方图不合格。
没按压嘴的这个出错是:
再展示一个正常的。
这两个尖峰的距离明显宽一点。这个算法用到了边缘。以列为单位每一列左边减右边,那么全白和全黑的地方相减,因为值相同,所以为0,只有在两个有边边缘的地方才会有值。这两上尖峰就是表示这个地方的。
这个图就是无按压喷嘴的边缘处理后的效果。
其实工业上的一些项目场景为追求稳定,一般都是用比较简单的算法达到目的,当然不是说所有的算法都只用了这个有一些就会比较复杂。像车牌识别。
我稍稍简单的描述一下车牌识别的过程。
一般因为相机是固定的,而车进来时是不固定的,所以因为车头对应拍照后的效果都是不理想的。
第一步 拍到车头后然后去色先要通过去色
第二步 然后利用边缘把车牌所有的区域找出来,主要是车牌定位。
第三步 然后再把车牌的图像从整个图像加抠出来
第四步 然后再对整个车牌进行四边形校正。得到常规的车牌。
第五步 则是对车牌上的字符进行识别。车牌字符识别,更是一个难题。不比人,机器视觉只是机器,它没有智能功能,所有的识别全部依靠数学方式来完成的。对于OCR,这个领域更难。一般就是在特定的字符上进去匹配再计算百分比。这里一个细节,不知道有没有人注意到,就是所有的车牌中,没有0,没有1,因为0,和英文字母O(o)太相似,则1,和I(i)相似,机器识别起来太困难,所以从车牌生产上,就直接把这两个数字去掉了。
当然我上面说的五个步骤,其实都是基于理想状态的,因为正常状态下,我们还要考虑白天,晚上,傍晚,下雨雪天,泥泞天等各种不同的场景下车牌识别的稳定性,还有不角度,不同距离。这个时间,神经网络算法也就是AI,真正的人工智能就起作用了。有兴趣的朋友,可以自己百度了解车牌识别。
贴一个车牌识别的图片(下图来自网络)。(回头具体讲算法时再详解。)