车牌定位与字符分割

Hello World, Hello dip

Posted by Resulte on June 25, 2020

vehicle-license-plate-recognition

简单的车牌定位和字符分割

基本原理

车牌字符分割的步骤:

流程图

最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确

定的方法,又叫大津法,简称OTSU。

它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。

开运算:先腐蚀后膨胀称为开运算,开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。

连通分量:对于S中的任意像素p,S中连通到该像素的像素集合叫做S的连通分量。

代码

 Icroporigin = imread('E:\image\plate.jpg');
subplot(2,3,1),imshow(Icroporigin);title('车牌');

%灰度图转换
gray = rgb2gray(Icroporigin);
subplot(2,3,2),imshow(gray);title('车牌灰度图');

%二值化Otus分割
%bw = im2bw(gray,0.9);
level = graythresh(gray);
bw = im2bw(gray, level);
subplot(2,3,3),imshow(bw);title('车牌二值图');

%形态学滤波开运算
se = strel('square',3);
BWCrop = imopen(bw, se);
%去掉连通分量面积小于50的目标
BWCrop = bwareaopen(BWCrop,50);
subplot(2,3,4),imshow(BWCrop);title('连通分量处理后的车牌二值图');
 
%分割定位
[IBW2, num] = bwlabel(BWCrop, 8);
subplot(2,3,5),imshow(BWCrop);title('车牌二值图的字符定位结果');
cc = bwconncomp(BWCrop);
stats = regionprops(cc, 'Area','Boundingbox');
hold on
for i=1:cc.NumObjects
      
       rectangle('position',stats(i).BoundingBox,'edgecolor','r');
        bb = stats(i).BoundingBox;
        %status(i).BoundingBox(1)
        %status(i).BoundingBox(2)
        xwidth=stats(i).BoundingBox(3);
        ywith=stats(i).BoundingBox(4);
         Icropletter=imcrop(IBW2,bb);
      
end

运行结果

结果

结果分析

首先将图片转成灰度图,再将灰度图基于阈值分割Otus法进行图像分割,得到二值图像,然后进行形态学处理,开运算除去孤立的小点,毛刺和小桥,随后提取出其中连通分量,去掉连通分量面积小于50的目标,得到连通分量处理后的车牌二值图。最后对每个连通分量进行加框显示得到最终结果。