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.
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页