图像处理早已被广泛应用于机器视觉、深度学习等热门领域,奈何由于某些局限性,导致我们对于图像处理的相关算法知道得少之又少。
今天给大家分享的车牌识别案例,其实在我们生活中已经很常见了。各大停车场早就配备了这种车牌自动识别的设备。
车牌识别,其中基本上已经包含了图像处理中基本的常用算法。像边缘检测,腐蚀膨胀等。
所以,分享车牌识别中的相关算法,是可以帮助到我们对于这种数字图像处理的过程有一个比较全面的认识。
下面我将结合Matlab代码给大家进行讲解:
第一步:RGB转灰度
这一步,基本是大多数图像处理系统的必经之路。
对于Matlab来讲,RGB转灰度,可以直接调用rgb2gray函数,非常简单,如果要用FPGA进行RGB转灰度,该怎么处理呢?
哈哈,原理很简单。
Gray = R*0.299 + G*0.587 + B*0.114
不过,用FPGA实现起来还是要几句代码的。
第二步:边缘检测
边缘检测,使用的是sobel算法。
Sobel,是的,就是Sobel,就是我们即将推出的Sobel教程的这个Sobel。
上图是Sobel算子在X方向和Y方向两个分量的计算方法。
这里算出来的G的值,才是Sobel算子的值。
第三步:图像填充
对了,在图像填充之前还图像腐蚀这个操作,其实腐蚀和填充这两步的目的,就是扩大边缘检测的战果。
第四步:形态学滤波
形态学滤波这步的目的,是为了滤除掉不相干的图像,其实说白了就是去除噪声。
也就是只找到车牌的那个区域。
第五步:车牌提取
其实车牌提取这一步相对而言,要简单一些。在第四步中,相当于已经确定了车牌的大致区域,车牌提取就是在把车牌从这个区域拿出来。
第六步:字符分割与识别
车牌已经提取出来了,那剩下的肯定就是把整个车牌的汉字、字母一个一个的分割出来,分割出来后,与车牌的字符库进行比较,怎么比较呢?
比较提取出来的车牌字符与车牌字符库的两个特征值,进行配对。
这,就是车牌识别的整个流程了。