当前位置 : 主页 > 编程语言 > python >

【交通标志识别】基于模板匹配算法实现限速交通标志识别附matlab代码

来源:互联网 收集:自由互联 发布时间:2022-06-15
1 简介 为实现限速交通标志的快速准确识别,采用模板匹配对限速交通标志进行识别.首先图像进行倾斜校正,并在HSV颜色空间进行分割,提取感兴趣区域(ROI),然后利用垂直投影分割字符,最

1 简介

为实现限速交通标志的快速准确识别,采用模板匹配对限速交通标志进行识别.首先图像进行倾斜校正,并在HSV颜色空间进行分割,提取感兴趣区域(ROI),然后利用垂直投影分割字符,最后通过和模板字符进行匹配,比较两者相似度来识别字符.实验结果表明,该方法能够有效分割出限速交通标志的字符,并能准确的识别出标志.

2 部分代码

function [number,rect,hsvReg1,B,L,BW]=Mat5_2rec(Image)
grayImg=rgb2gray(Image);%原图转换为灰度图片
%%%%%%%%%%% HSV颜色分割图像 %%%%%%%%%%%%%%%%%%%%%%%%%
hsvImg=rgb2hsv(Image);%转换到HSV空间
h1=hsvImg(:,:,1);%H分量
s1=hsvImg(:,:,2);%S分量
v1=hsvImg(:,:,3);%V分量
hsvReg1=((h1<=0.056&h1>=0)|(h1>=0.740&h1<=1.0))&s1>=0.169&s1<=1.0&v1>=0.180&v1<=1.0;%提取红色分量
% figure;imshow(hsvReg1);title('原图hsv检测图像');
%%=======================去噪==================================
hsvReg1=bwareaopen(hsvReg1,100);%1000为去除像素点阙值
%figure;imshow(hsvReg1);
%%=======================填充==================================
se=strel('disk',2);
hsvReg1=imclose(hsvReg1,se);
hsvReg1=imfill(hsvReg1,'holes');
%figure;imshow(hsvReg1);
%%======================区域选定==============================
[B,L]=bwboundaries(hsvReg1,'noholes');
% figure;imshow(label2rgb(L,@jet,[.5 .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');
threshold=0.80;
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=4*pi*area/perimeter^2;
metric_string=sprintf('%2.2f',metric);
if metric>threshold
c=stats(k).Centroid;
% plot(c(1),c(2),'ko');
r=perimeter/(2*pi);
rect=[c(1)-r*sqrt(2)/2.5 c(2)-r*sqrt(2)/2.5 r*sqrt(2)/1.25 r*sqrt(2)/1.25];
end
% rectangle('Position',rect,'LineWidth',4,'EdgeColor','g');
% text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color','y','FontSize',14,'FontWeight','bold');
end
% title(['位置框定']);
%%==============================图像剪裁=========================================
result=imcrop(grayImg,rect);
% figure;imshow(result);
%%=============================二值化加强=======================================
n = graythresh(result);
BW = imbinarize(result,n);
% figure;imshow(BW);
%%==============================数字读取=========================================
ocrResults=ocr(BW,'CharacterSet','0 1 2 3 4 5 6 7 8 9 60');
number = cell2mat(ocrResults.Words);
end

3 仿真结果

【交通标志识别】基于模板匹配算法实现限速交通标志识别附matlab代码_模板匹配

4 参考文献

[1]郝芳芳, 王震洲. 模板匹配下的限速交通标志识别算法研究[J]. 科技风, 2018(21):2.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【交通标志识别】基于模板匹配算法实现限速交通标志识别附matlab代码_模板匹配_02


网友评论