【图像识别】基于模板匹配算法实现车辆出入库计时matlab系统
【图像识别】基于模板匹配算法实现车辆出入库计时matlab系统
TT_Matlab
每天分享一点Matlab资料,一起成长进步。需要定制程序添加qq1575304183
1 简介
车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像 输入到计算机中进行预处理,再由检索模块对车牌进行搜索、检测、定位,并分割出包含车牌 字符的矩形区域, 然后对车牌字符进行二值化并将其分割为单个字符, 然后输入 JPEG 或 BMP 格 式的数字,输出则为车牌号码的数字。车牌自动识别是一项利用车辆的动态视频或静态图像进 行车牌号码、车牌颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、 照明设备、图像采集设备、识别车牌号码的处理机等,其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。一个完整的车牌识别系统应包括车辆检测、图像采集、车牌识别等几部分。车牌识别单元对图像进行处理,定位出车牌位置,再将车牌中的字符分割出来进行识别,然后组成 车牌号码输出 ,再获得当前时间。通过出停车场时对车辆再次进行处理,获得停车时间。
2 部分代码
%-----------------------------出停车场--------------------------- clc ; clear all ; [ filename , filepath ]= uigetfile ( ’.jpg’ , ’输入一个需要识别的车牌图像’ ); % 直接自动读入% fil = strcat ( filepath , filename ); %strcat函数:连接字符串;把filepath的字符串与filename的连接,即路径/文件名 I = imread ( fil ); I1 = rgb2gray ( I ); I2 = edge ( I1 , ’roberts’ , 0.15 , ’both’ ); se =[ 1 ; 1 ; 1 ]; I3 = imerode ( I2 , se ); se = strel ( ’rectangle’ ,[ 25 , 25 ]); I4 = imclose ( I3 , se ); I5 = bwareaopen ( I4 , 2000 ); [ y , x , z ]= size ( I5 ); myI = double ( I5 ); t % 滤波 h = fspecial ( ’average’ , 3 ); d = im2bw ( round ( filter2 ( h , d ))); end % 分割出第二个字符 [ word2 , d ]= getword ( d ); % 分割出第三个字符 [ word3 , d ]= getword ( d ); % 分割出第四个字符 [ word4 , d ]= getword ( d ); % 分割出第五个字符 [ word5 , d ]= getword ( d ); % 分割出第六个字符 [ word6 , d ]= getword ( d ); % 分割出第七个字符 [ word7 , d ]= getword ( d ); [ m , n ]= size ( word1 ); %归一化大小为40*20 word1 = imresize ( word1 ,[ 40 20 ]); word2 = imresize ( word2 ,[ 40 20 ]); word3 = imresize ( word3 ,[ 40 20 ]); word4 = imresize ( word4 ,[ 40 20 ]); word5 = imresize ( word5 ,[ 40 20 ]); word6 = imresize ( word6 ,[ 40 20 ]); word7 = imresize ( word7 ,[ 40 20 ]); imwrite ( word1 , ’1.jpg’ ); imwrite ( word2 , ’2.jpg’ ); imwrite ( word3 , ’3.jpg’ ); imwrite ( word4 , ’4.jpg’ ); imwrite ( word5 , ’5.jpg’ ); imwrite ( word6 , ’6.jpg’ ); imwrite ( word7 , ’7.jpg’ ); liccode = char ([ ’0’ : ’9’ ’A’ : ’Z’ ’鄂津京辽鲁陕苏豫浙粤’ ]); SubBw2 = zeros ( 40 , 20 ); l = 1 ; for I = 1 : 7 ; ii = int2str ( I ); t = imread ([ ii , ’.jpg’ ]); SegBw2 = imresize ( t ,[ 40 20 ], ’nearest’ ); SegBw2 = double ( SegBw2 ) > 20 ; if l == 1 %第一位汉字识别 kmin = 37 ; kmax = 43 ; elseif l == 2 %第二位字母识别 kmin = 11 ; kmax = 36 ; else l > = 3 %第三位后字母或数字识别 kmin = 1 ; kmax = 36 ; end for k2 = kmin : kmax fname = strcat ( ’字符模板’ , liccode ( k2 ), ’.jpg’ ); SamBw2 = imread ( fname ); SamBw2 = double ( SamBw2 ) > 1 ; for i = 1 : 40 for j = 1 : 20 SubBw2 ( i , j )= SegBw2 ( i , j ) - SamBw2 ( i , j ); end end %相当于两幅图相减得第三幅图 Dmax = 0 ; for k1 = 1 : 40 ; for l1 = 1 : 20 if ( SubBw2 ( k1 , l1 ) > 0 || SubBw2 ( k1 , l1 ) < 0 ) Dmax = Dmax +1 ; end end end Error ( k2 )= Dmax ; end Error1 = Error ( kmin : kmax ); MinError = min ( Error1 ); findc = find ( Error1 == MinError ); Code ( l * 2-1 )= liccode ( findc + kmin -1 ); Code ( l * 2 )= ’ ’ ; l = l +1 ; end t = toc ; %与文本文件数据对比 file = fopen ( ’Data.txt’ ); while feof ( file ) ~ = 1 fid = fgetl ( file ); if ( strcmp ( fid , Code ) == 1 ) fic = fgetl ( file ); end end fclose ( file ); fib = datestr ( now ); fie = datevec ( fic ); fid = datevec ( fib ); ts = etime ( fid , fie ); aa ={ Code ; num2str ( ts ); ’单位为秒’ }; msgbox ( aa , ’车牌及停车时间’ ); %弹出框
3 仿真结果
4 参考文献
[1]赖特. "基于模板匹配及人工神经网络算法的图像识别应用——MATLAB实现机动车牌号码辨识." 智能建筑与智慧城市 11(2017):5.
部分理论引用网络文献,若有侵权联系博主删除。
微信扫一扫赞赏作者
赞赏
发送给作者
人赞赏
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
-
Origin(Pro):学习版的窗口限制【数据绘图】 2020-08-07
-
如何卸载Aspen Plus并再重新安装,这篇文章告诉你! 2020-05-29
-
AutoCAD 保存时出现错误:“此图形中的一个或多个对象无法保存为指定格式”怎么办? 2020-08-03
-
OriginPro:学习版申请及过期激活方法【数据绘图】 2020-08-06
-
CAD视口的边框线看不到也选不中是怎么回事,怎么解决? 2020-06-04
-
教程 | Origin从DSC计算焓和比热容 2020-08-31
-
如何评价拟合效果-Origin(Pro)数据拟合系列教程【数据绘图】 2020-08-06
-
Aspen Plus安装过程中RMS License证书安装失败的解决方法,亲测有效! 2021-10-15
-
CAD外部参照无法绑定怎么办? 2020-06-03
-
CAD中如何将布局连带视口中的内容复制到另一张图中? 2020-07-03