先附上一段代码,带大家看下具体车牌是如何进行精准定位的,以通俗易懂之语言,抽丝剥茧,配图带大家走一遍。
以下代码为车牌定位的代码段落:
function [e] = qiege(d)% 切割出车牌区域的最小范围,进一步定位字符区域
[m,n]=size(d);
top=1;bottom=m;
while sum(d(top,:))==0&&top<=m
top=top+1;
end
while sum(d(bottom,:))==0&&bottom>=1
bottom=bottom-1;
end
left=1;right=n;
while sum(d(:,left))==0&&left<=n
left=left+1;
end
while sum(d(:,right))==0&&right>=1
right=right-1;
end
dd=right-left;
hh=bottom-top;
e=imcrop(d,[left top dd hh]);
% I2=imcrop(I,[a b c d]);
%利用裁剪函数裁剪图像,其中,(a,b)表示裁剪后左上角像素在原图像中的位置;
%c表示裁剪后图像的宽,d表示裁剪后图像的高
%%%%%%%%以下为图文讲解,讲得好的话,大家可以私聊我鼓励,并且转发,点赞
4.七个小矮人在哪里——字符分割
4.1 永远的开胃菜——灰度化和二值图
对上图得到的彩色矩【需要车牌识别源码及直播详细语音讲解可私xin我】形车牌进行灰度化,二值图像处理,这两步很简单,用库函数即可,得到的二值图结果如下图所示:
4.2 精雕细琢——去除杂质
4.2.1 门槛——bwareaopen让小的白色块消失去吧
从上图我们可以清晰地发现,譬如左上角还是有干扰白色块,以及有过多非字符区域的黑色区域,这些都是干扰区域,应该去除掉才能提高准确率或者不至于出现误匹配。
这里,需要做2步,其一是利用bwareaopen函数去除面积小于一定值的白色块,如上图的红色圈圈部分的点。
4.2.2 无限逼近——上下、左右游标动起来
其二,将除了7个白色字符最外接矩形以外的黑色区域去除,如上图的红色矩形框部分。
这里自定义qiege子函数,以上下,左右游标无限逼近的方法来精准定位字符区域。贴上代码。
先设置第top=1行游标,最后一行buttom=m游标,统计这两行各自上面的行向的像素值,如果像素总和是0,也就是全黑,还没有遇到白色像素点的时候,上游标不断加1,也就是不断往下移动,下游标不断减一,也及时不断往上移动,一直到碰到白色像素点为止。用更形象生动的示意图来表示就是:
同理,以同样方式标记下左右游标位置。如下图2和4的位置。
记录下最外接矩形位置,再利用MATLAB库函数imcrop进行裁剪,得到精准定位的车牌区域。如下图:
%%%%%%%%%创作不易,请点赞收藏,整个专辑可以发给同学参考%%%%