MATLAB_GUI项目 自然场景下限速标志识别

**实验要求:**基于数字图像处理,设计实现一个自然场景下公路交通限速标志分割和识别的程序。要求系统具有界面,并实现以下功能:
1)读入自然场景下包含交通标志的图像
2)对图像进行预处理
3)交通标志区域的定位
4)限速交通标志的分割
5)对限速标志中的数字进行分离和识别

选取的实验图像:
MATLAB_GUI项目 自然场景下限速标志识别_第1张图片
图像预处理:这里为了满足实验要求添加了一个预处理环节,主要方法采用CLAHE方法,具体解释可以参考链接

采用该方法,可以直接在灰度图进行限制对比度自适应直方图均衡,也可以将彩色RGB图转化到LAB空间对L分量进行处理,也可以转化到HSV空间对H分量进行处理,这里附上转换至LAB空间进行CLAHE处理后的图像,其它方法读者可自行验证实验。
MATLAB_GUI项目 自然场景下限速标志识别_第2张图片

RGB = imread('traffic_sign.jpg');
LAB = rgb2lab(RGB);
L = LAB(:,:,1)/100;
L = adapthisteq(L,'NumTiles',[8 8],'ClipLimit',0.005);
LAB(:,:,1) = L*100;
J = lab2rgb(LAB);
figure
imshowpair(RGB,J,'montage')
title('原图(左)和经CLAHE增强后图(右) ')

**交通标志定位:**通过先验知识可以得知限速标志大都是红色外框的圆形标志,内含有限速数字,因此我们的定位方法为将图片转换到HSV空间,在HSV模型,H表示色调,S表示饱和度,V表示数值(对应图像亮度),提取出红色分量的像素区域
MATLAB_GUI项目 自然场景下限速标志识别_第3张图片

hsv=rgb2hsv(J);%转换到HSV空间
h1=hsv(:,:,1);%H分量
s1=hsv(:,:,2);%S分量
v1=hsv(:,:,3);%V分量
%提取红色分量   
hsvR=((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(hsvR);title('原图hsv检测图像');

然后再使用二值化分析中的面积和离心率参数分离出图像中的面积较大(去除噪声红色)且呈圆形的区域,并定位加框。
MATLAB_GUI项目 自然场景下限速标志识别_第4张图片
**限速标志识别:**将定位区域的图像切下,循环处理进行识别,识别器的选择可以自己设计分类器,也可以直接调用MATLAB中的OCR函数进行识别,修改参数后可以进行识别,识别效果还可以接受。
ps:实验图中去除了全线禁停标志的最后加框,是识别后其识别结果为空,加了个条件限制自然就可以去掉了。
MATLAB_GUI项目 自然场景下限速标志识别_第5张图片

你可能感兴趣的:(机器学习,计算机视觉,matlab)