【图像识别】基于模板匹配算法求解车牌识别问题matlab代码含GUI界面

1 简介

随着经济社会的迅速发展,人民对生活水平的要求也不断提高,从而引起汽车的数量的增加.给出行带来便捷的同时,车辆的管理问题也日益显著.车牌识别系统是指能将监控中运动的车辆的汽车牌照信息从复杂背景中提取并识别的技术,主要包括图像提取,图像预处理,字符识别,车牌定位,字符分割五个主要核心部分.由于计算机技术的飞速发展和信息处理水平的逐渐成熟,先进的计算机技术可以将人力从复杂的人工观察检测中解放出来并提高精确度,智能交通系统成为交通领域研究的重要课题.在这样的背景下车牌识别成为了现代智能交通系统的重要部分之一,车牌识别系统使车辆的管理更加智能化,有效的提升了交通管理的效率.车牌识别系统对于维护交通安全和城市治安,防止交通堵塞,提高人们出行质量,实现现代化交通管理和智能化具有重要的现实意义.

2 部分代码

function words = Main_Process(bw, filename)

% if nargin < 2
flag_display = 1;
% end
[m, n] = size(bw);
k1 = 1;
k2 = 1;
s = sum(bw);
j = 1;
while j ~= n
   while s(j) == 0 && j <= n-1
       j = j + 1;
   end
   k1 = j-1;
   while s(j) ~= 0 && j <= n-1
       j = j + 1;
   end
   k2 = j-1;
   Tol = round(n/6.5);
   if k2-k1 > Tol
      [val, num] = min(sum(bw(:, [k1+5:k2-5])));
       bw(:, k1+num+5)=0;
   end
end

bw = Segmation(bw);
[m, n] = size(bw);
wideTol = round(n/20);
rateTol = 0.25;
flag = 0;
word1 = [];
while flag == 0
  [m, n] = size(bw);
   left = 1;
   wide = 0;
   while sum(bw(:,wide+1)) ~= 0
       wide = wide+1;
   end
   if wide < wideTol
       bw(:, 1:wide) = 0;
       bw = Segmation(bw);
   else
       temp = Segmation(imcrop(bw, [1 1 wide m]));
      [m, n] = size(temp);
       tall = sum(temp(:));
       two_thirds = sum(sum( temp(round(m/3):2*round(m/3), :) ));
       rate = two_thirds/tall;
       if rate > rateTol
           flag = 1;
           word1 = temp;
       end
       bw(:, 1:wide) = 0;
       bw = Segmation(bw);
   end
end
[word2, bw] = Word_Segmation(bw);
[word3, bw] = Word_Segmation(bw);
[word4, bw] = Word_Segmation(bw);
[word5, bw] = Word_Segmation(bw);
[word6, bw] = Word_Segmation(bw);
[word7, bw] = Word_Segmation(bw);
wid = [size(word1, 2) size(word2, 2) size(word3, 2) ...
   size(word4, 2) size(word5, 2) size(word6, 2) size(word7, 2)];
[maxwid, indmax] = max(wid);
maxwid = maxwid + 10;
wordi = word1;
wordi = [zeros(size(wordi, 1), round((maxwid-size(word1, 2))/2)) wordi zeros(size(wordi, 1), round((maxwid-size(word1, 2))/2))];
word1 = wordi;

wordi = word2;
wordi = [zeros(size(wordi, 1), round((maxwid-size(word2, 2))/2)) wordi zeros(size(wordi, 1), round((maxwid-size(word2, 2))/2))];
word2 = wordi;

wordi = word3;
wordi = [zeros(size(wordi, 1), round((maxwid-size(word3, 2))/2)) wordi zeros(size(wordi, 1), round((maxwid-size(word3, 2))/2))];
word3 = wordi;

wordi = word4;
wordi = [zeros(size(wordi, 1), round((maxwid-size(word4, 2))/2)) wordi zeros(size(wordi, 1), round((maxwid-size(word4, 2))/2))];
word4 = wordi;

wordi = word5;
wordi = [zeros(size(wordi, 1), round((maxwid-size(word5, 2))/2)) wordi zeros(size(wordi, 1), round((maxwid-size(word5, 2))/2))];
word5 = wordi;

wordi = word6;
wordi = [zeros(size(wordi, 1), round((maxwid-size(word6, 2))/2)) wordi zeros(size(wordi, 1), round((maxwid-size(word6, 2))/2))];
word6 = wordi;

wordi = word7;
wordi = [zeros(size(wordi, 1), round((maxwid-size(word7, 2))/2)) wordi zeros(size(wordi, 1), round((maxwid-size(word7, 2))/2))];
word7 = wordi;

word11 = imresize(word1, [40 20]);
word21 = imresize(word2, [40 20]);
word31 = imresize(word3, [40 20]);
word41 = imresize(word4, [40 20]);
word51 = imresize(word5, [40 20]);
word61 = imresize(word6, [40 20]);
word71 = imresize(word7, [40 20]);

words.word1 = word11;
words.word2 = word21;
words.word3 = word31;
words.word4 = word41;
words.word5 = word51;
words.word6 = word61;
words.word7 = word71;

if flag_display
   figure(2);
   subplot(2, 7, 1); imshow(word1); title('字符1', 'FontWeight', 'Bold');
   subplot(2, 7, 2); imshow(word2); title('字符2', 'FontWeight', 'Bold');
   subplot(2, 7, 3); imshow(word3); title('字符3', 'FontWeight', 'Bold');
   subplot(2, 7, 4); imshow(word4); title('字符4', 'FontWeight', 'Bold');
   subplot(2, 7, 5); imshow(word5); title('字符5', 'FontWeight', 'Bold');
   subplot(2, 7, 6); imshow(word6); title('字符6', 'FontWeight', 'Bold');
   subplot(2, 7, 7); imshow(word7); title('字符7', 'FontWeight', 'Bold');
   if strcmp(filename,'car4.jpg')
   subplot(2, 7, 8); imshow(word11); title('字符1', 'FontWeight', 'Bold');
   imwrite(word11,'./2/冀.bmp')
   subplot(2, 7, 9); imshow(word21); title('字符2', 'FontWeight', 'Bold');
   imwrite(word21,'./2/A.bmp')
   subplot(2, 7, 10); imshow(word31); title('字符3', 'FontWeight', 'Bold');
   imwrite(word31,'./2/7.bmp')
   subplot(2, 7, 11); imshow(word41); title('字符4', 'FontWeight', 'Bold');
   imwrite(word41,'./2/0.bmp')
   subplot(2, 7, 12); imshow(word51); title('字符5', 'FontWeight', 'Bold');
   imwrite(word51,'./2/3.bmp')
   subplot(2, 7, 13); imshow(word61); title('字符6', 'FontWeight', 'Bold');
   imwrite(word61,'./2/N.bmp')
   subplot(2, 7, 14); imshow(word71); title('字符7', 'FontWeight', 'Bold');
   imwrite(word71,'./2/2.bmp')
   else strcmp(filename,'car5.jpg')
         subplot(2, 7, 8); imshow(word11); title('字符1', 'FontWeight', 'Bold');
   imwrite(word11,'./3/云.bmp')
   subplot(2, 7, 9); imshow(word21); title('字符2', 'FontWeight', 'Bold');
   imwrite(word21,'./3/A.bmp')
   subplot(2, 7, 10); imshow(word31); title('字符3', 'FontWeight', 'Bold');
   imwrite(word31,'./3/5.bmp')
   subplot(2, 7, 11); imshow(word41); title('字符4', 'FontWeight', 'Bold');
   imwrite(word41,'./3/2.bmp')
   subplot(2, 7, 12); imshow(word51); title('字符5', 'FontWeight', 'Bold');
   imwrite(word51,'./3/6.bmp')
   subplot(2, 7, 13); imshow(word61); title('字符6', 'FontWeight', 'Bold');
   imwrite(word61,'./3/E.bmp')
   subplot(2, 7, 14); imshow(word71); title('字符7', 'FontWeight', 'Bold');
   imwrite(word71,'./3/G.bmp')
   end
end

3 仿真结果

​4 参考文献

[1]龚凯丽, and 崔馨月. "基于改进模板匹配对车牌识别问题的研究." 工程技术与发展 1.5:2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值