基于Verilog的车牌精确定位
一、概要
针对车牌识别项目,车牌定位的准确与否直接影响到车牌字符的识别和提取。目前关于车牌定位的算法有很多种,其中比较成熟的有基于车牌边缘特征提取车牌的算法、基于彩色分割提取车牌的算法以及基于小波变换和数学形态等方法来识别车牌的位置。
本文提出了一种新的基于色彩分量的灰度化方法,该方法不仅可以消除小型民用车
车牌图片的背景和车身信息,还可以较好的保留车牌区域信息,从而降低定位难度,简化定位步骤,提高小型民用车车牌定位的效率。
2.1 车牌区域粗定位
话不多说,上matlab代码,这里经过大量的
仿真测试发现,会发现一幅车牌图像,其RGB各通道的颜色分量有一定的关系,将
图像的绿色分量与图像的蓝色分量做减法,得到灰度图像基本上可以定位出车牌区域,如下图1,图2所示:clear all;
clc;
src=imread('C:UserslenovoDesktopchepi_testmatlab est640480 est2.jpg');
gray=rgb2gray(src);
[h w] =size(gray);
new=uint8(zeros(h,w));
bw=uint8(zeros(h,w));
R = src(:,:,1);%
G = src(:,:,2);%
B = src(:,:,3);%
new=B-G;
for i=1:h
for j=1:w
if new(i,j) >70
bw(i,j) =255;
else
bw(i,j) = 0;
end
end
end
subplot(221),imshow(src),
title('src');
subplot(222),imshow(gray),title('gray');
subplot(223),imshow(new),title('new');
subplot(224),imshow(bw),title('bw');
图1 车牌区域提取
图2 车牌区域提取
2.2 水平垂直投影实现定位
上之前的文章中已经进行了水平投影处理的详细解读,本节在此基础上实现垂直投影,最终完成二值化图像的水平垂直投影,获取目标的区域位置。目标可以是多个,只需裁剪代码即可。具体参见上一篇文章。
图3 水平垂直投影
三、Verilog算法的实现
3.1 实现原理
如下4图所示,待处理的原始图像经过颜色分量的处理并得到二值化图像之后,进入水平和垂直投影的算法模块,两个模块各自使用了行列缓存fifo,获取像素跳变的位置并记录下来,其中位置信息来自行列计数模块,最后将定位的颜色图像显示出来。
图4 车牌定位实现框图
如下代码寻找像素的跳变位置:
如下代码是根据水平和垂直投影得到上下左右位置进行标记:
3.2 实验效果
如下图5图6所示,本节选取了两张车牌图像作为处理,得到不错的处理结果,像前面所说的,这个处理只适合部分车牌,如果经过颜色分量以及二值化处理之后会有大量干扰区域,这个直接进行水平和垂直的处理就不太适用。因此,还需要根据车牌的特征来去除干扰因素的影响。在下一小节,作者将会进行这个方式的处理,欢迎持续关注。
`