文档详情

Matlab在图像处理与目标识别方面实验-汽车牌照定位与字符识别.doc

发布:2018-05-25约2.63千字共6页下载文档
文本预览下载声明
Matlab在图像处理与目标识别方面的应用实验 —— 二、汽车牌照定位与字符识别 收藏 Matlab在图像处理与目标识别方面的应用实验 —— 二、汽车牌照定位与字符识别 作者:林健(北京理工大学计算机科学技术学院) 指导教师:尚斐(北京理工大学医学图像实验室) 对于汽车牌照定位和数字识别,通过高通滤波,得到所有的边缘;对边缘细化,找出所有封闭的边缘;对封闭边缘求多边形逼近,在逼近后的所有四边形中,找出尺寸与牌照大小相同的,牌照被定位。对牌照区域中细化后的图形对象计算傅立叶描述子,用预先定义好的决策函数,对描述子进行计算,判断数字是几。 注意,由于BLOG功能的原因,这里无法显示图片。您可以下载Word原文档(包含m源文件和相关图片)。下载地址: 二、汽车牌照定位与字符识别 待处理的图像如下所示。图像整体比较清晰干净,车牌方向端正,字体清楚,与周围颜色的反差较大。 要定位汽车牌照并识别其中的字符,我们采用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、将车牌图像反白处
显示全部
相似文档