毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

matlab车牌识别系统算法源码

更新时间:2010-4-19:  来源:毕业论文
matlab车牌识别系统算法源码
待处理的图像如下所示。图像整体比较清晰干净,车牌方向端正,字体清楚,与周围颜色的反差较大。
 要定位汽车牌照并识别其中的字符,我们采用Matlab平台提供的一些图像处理函数,以傅立叶变换通过字符模板与待处理的图像匹配为核心思想。基本方法如下:
1、读取待处理的图像,将其转化为二值图像。经试验,采用门限值为0.2附近时车牌字符最为清楚,杂点最少(如下左图)。
I = imread('car.jpg');
I2 = rgb2gray(I);
I4 = im2bw(I2, 0.2);
2、去除图像中面积过小的,可以肯定不是车牌的区域。
bw = bwareaopen(I4, 500);
3、为定位车牌,将白色区域膨胀,腐蚀去无关的小物件,包括车牌字符(如下右图)。
se = strel('disk',15);
bw = imclose(bw,se); 
4、此时车牌所在白色连通域已清晰可见,但在黑色区域以外,是一个更大的白色连通域,将车牌所在连通域包围了。有必要将其填充。
bw = imfill(bw,[1 1]);
5、查找连通域边界。同时保留此图形,以备后面在它上面做标记。
[B,L] = bwboundaries(bw,4);
imshow(label2rgb(L, @jet, [.5 .5 .5]))
hold on
for k = 1:length(B)
 boundary = B{k};
 plot(boundary(:,2),boundary(:,1),'w','LineWidth',2)
end
6、找出所有连通域中最可能是车牌的那一个。判断的标准是:测得该车牌的长宽比约为4.5:1,其面积和周长存在关系:(4.5×L×L)/(2×(4.5+1)×L)2≈1/27,以此为特征,取metric=27*area/perimeter^2作为连通域的匹配度,它越接近1,说明对应的连通域越有可能是4.5:1的矩形。
% 找到每个连通域的质心
stats = regionprops(L,'Area','Centroid');
% 循环历遍每个连通域的边界
for k = 1:length(B)
  % 获取一条边界上的所有点
  boundary = B{k};
  % 计算边界周长
  delta_sq = diff(boundary).^2;   
  perimeter = sum(sqrt(sum(delta_sq,2)));
  % 获取边界所围面积
  area = stats(k).Area;
  % 计算匹配度
  metric = 27*area/perimeter^2;
  % 要显示的匹配度字串
  metric_string = sprintf('%2.2f',metric);
  % 标记出匹配度接近1的连通域
  if metric >= 0.9 && metric <= 1.1
    centroid = stats(k).Centroid;
    plot(centroid(1),centroid(2),'ko');
    % 提取该连通域所对应在二值图像中的矩形区域
    goalboundary = boundary;
    s = min(goalboundary, [], 1);
    e = max(goalboundary, [], 1);
  goal = imcrop(I4,[s(2) s(1) e(2)-s(2) e(1)-s(1)]);
  end
  % 显示匹配度字串
  text(boundary(1,2)-35,boundary(1,1)+13,...
    metric_string,'Color','g',...
'FontSize',14,'FontWeight','bold');
end
图示为找到的各个连通区域,中部被标记“○”的矩形匹配度为0.99,是最可能的区域。下边是由它确定的二值图像中的车牌区域:
  7、将车牌图像反白处理,并扩充为256×256的方阵(如下左图),以便下面傅立叶变换中矩阵旋转运算的进行。
goal = ~goal;
goal(256,256) = 0;
figure;
imshow(goal);
8、从文件读取一个字符模板(以“P”为例,模板图像 直接从上述二值图像中截取得到)。对图像计算傅立叶描述子,用预先定义好的决策函数对描述子进行计算。变换后的图像中,亮度的高低指示相应区域与模板的匹配程度(如下中图)。
w = imread('P.bmp');
w = ~w;
C=real(ifft2(fft2(goal).*fft2(rot90(w,2),256,256)));
9、通过检查C的最大值,试验确定一个合适的门限(这里240比较合适),显示亮度大于该门限的点,也就是与模板的匹配程度最高的位置(如下右图)。
thresh = 240;
figure;
imshow(C > thresh);  
对照左右两图,可以说明字符“P”被识别和定位了。同样的方法,可以识别和定位其它字符。
这种方法总体上比较容易理解,Matlab的函数隐藏了傅立叶变换等复杂的计算。缺点:在定位车牌方面,程序专门按本题给定图像的特点设计,没有普适性。字符识别方面,仅能识别与给定模板基本一致的字符。车牌大小、角度、光线、完整性、清晰度发生变化后,就无法识别了。同时对于“8”与“B”这样相似的字符,识别时常常混淆。
* 参考文献:
1、Applications of the Fourier Transform, Matlab 7.0 Help Documents, The MathWorks.
2、Identifying Round Objects, Matlab 7.0 Demos, The MathWorks.1024
matlab车牌识别系统算法源码下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。