资源简介
车牌预处理过程的好坏直接影响到车牌图像进行后期处理过程,比如车牌字符分割等。车牌预处理也是尽可能的消除噪声,减少后期处理带来的不必要的麻烦。
输入的车牌是24Bit的BMP真彩色图像,车牌照有黄底黑字,蓝底白字等颜色,为了将这些车牌图像一并处理,就要先将车牌进行灰度化处理,然后进行二值化(黑白)处理。
代码片段和文件信息
% 读取待处理的图像,将其转化为二值图像
I = imread(‘car.jpg‘);
I2 = rgb2gray(I);
I4 = im2bw(I2 0.2);
% 去除图像中面积过小的、可以肯定不是车牌的区域
bw = bwareaopen(I4 500);
% 为定位车牌,将白色区域膨胀,腐蚀去无关的小物件
se = strel(‘disk‘15);
bw = imclose(bwse);
bw = imfill(bw[1 1]);
% 查找连通域边界
[BL] = bwboundaries(bw4);
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
% 找到每个连通域的质心
stats = regionprops(L‘Area‘‘Centroid‘);
% 循环历遍每个连通域的边界
for k = 1:length(B)
% 获取一条边界上的所有点
boundary = B{k};
% 计算边界周长
delta_sq = diff(boundary).^2;
perimeter = sum(sqrt(sum(delta_sq2)));
% 获取边界所围面积
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(12)-35boundary(11)+13...
metric_string‘Color‘‘g‘...
‘FontSize‘14‘FontWeight‘‘bold‘);
end
goal = ~goal;
goal(256256) = 0;
figure;
imshow(goal);
w = imread(‘P.bmp‘);
w = ~w;
C=real(ifft2(fft2(goal).*fft2(rot90(w2)256256)));
thresh = 240;
figure;
imshow(C > thresh);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 206 2005-11-05 17:13 3.12 基于图像的车牌自动识别技术\P.bmp
文件 61837 2005-10-28 22:59 3.12 基于图像的车牌自动识别技术\car.jpg
文件 1649 2012-02-14 22:08 3.12 基于图像的车牌自动识别技术\ex1.m
文件 24064 2011-09-26 20:01 3.12 基于图像的车牌自动识别技术\程序运行说明.doc
目录 0 2017-11-28 12:05 3.12 基于图像的车牌自动识别技术\
- 上一篇:Schools.rar
- 下一篇:101_104简单的仿真主站
评论
共有 条评论