1 介绍基于模板匹配的车牌识别
1.1 依旧先对图像进行读入、灰度化、直方图均衡化,使用canny检测边缘、腐蚀定位。
对图像进行精定位,水平矫正滤波。
在模板匹配过程中,一套模板的准确率较低,可以考虑使用多套模板进行识别,牺牲速度换取精度。
多模板匹配的关键在于建立多套模板并且互不干涉。
文件:590m.com/f/25127180-489661017-f97ec8(访问密码:551685)
附模板匹配部分代码
%%%%%%%%%%%%%%%%%%%%%%%%%
%% 开始识别
%%%%%%%%%%%%%%%%%%%%%%%%%
liccode=char([‘0’:‘9’ ‘A’:‘H’ ‘J’:‘N’ ‘P’:‘Z’ ‘京津冀湘’ ‘u’]); %建立自动识别字符代码表
plate = char([‘京’ ‘A’:‘F’]);
for num=1:7
t=plate_word(:,:,num);
SegBw2=imresize(t,[40 20],‘nearest’); %实用最近邻插值法放大图像
if num1 %第一位汉字识别
kmin=35;
kmax=38;
elseif num2 %第二位 A~Z 字母识别
kmin=11;
kmax=34;
else num>=3; %第三位以后是字母或数字识别
kmin=1;
kmax=34;
end
Error = 1000001:1000039;
for i=1:500
Error(i)=666666;
end
for k2=kmin:kmax fname=strcat('模板\1\',liccode(k2),'.bmp'); SamBw2 = imread(fname); SamBw2=imresize(SamBw2,[40 20],'nearest'); %实用最近邻插值法放大图像 SubBw2 = zeros(40,20); SegBw2 = double(SegBw2); SamBw2 = double(SamBw2); 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 ) Dmax=Dmax+1; end end end Error(k2)=Dmax; end for k2=kmin:kmax fname=strcat('模板\2\',liccode(k2),'.bmp'); SamBw2 = imread(fname); SamBw2=imresize(SamBw2,[40 20],'nearest'); %实用最近邻插值法放大图像 SubBw2 = zeros(40,20); SegBw2 = double(SegBw2); SamBw2 = double(SamBw2); 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 ) Dmax=Dmax+1; end end end Error(k2+100)=Dmax; end [~,index]=min(Error); if(index>200) index = index -200; elseif(index>100) index = index -100; end plate(num) = liccode(index); end
以下内容无关:
-------------------------------------------分割线---------------------------------------------
LIS3DH是ST公司生产的MEMS三轴加速度计芯片,实现运动传感的功能。主要特性有:
宽工作电压范围:1.71 ~ 3.6V
功耗:低功耗模式2μA;正常工作模式、ODR = 50Hz时功耗11μA(要求SDO/SA0脚浮空或上拉)
测量范围:+/-2g ~ +/-16g
接口:I2C、三线制/四线制SPI
16 bit数据输出
两个可编程中断输出脚,用于自由落体和动作检测
6D/4D方向检测
内置AD支持3路外部信号输入
内置温度传感器
内置32-slot的10-bit FIFO存储器
自检测功能
封装:3 x 3 x 1 mm LGA-16
管脚定义
VCC:电源
Vdd_IO:数字接口供电电源
GND:地
RES:连接到地
NC:不连接
CS:I2C接口选择(CS=1);或SPI接口片选脚(CS=0)
SCL/SPC:I2C接口或SPI接口的时钟线
SDA/SDI/SDO:I2C接口或SPI接口数据线
SDO/SA0:I2C地址选择脚;或四线制SPI接口输出脚。浮空时为1。
INT1:中断信号输出,触发条件可中断
INT2:同上
ADC1、ADC2、ADC3:数模转换的模拟信号输入脚
与Arduino的连接
用工作于3.3V/8MHz版本的Arduino Pro Mini进行调试,可避免用UNO时接口电平转换的麻烦。采用I2C接口进行通讯。未利用INT1、INT2和FIFO的功能。
LIS3DH Pro Mini 3.3V/8MHz
VDD <------> 3.3V
GND <------> GND
SCL <------> A5 (SCL)
SDA <------> A4 (SDA)
功能调试
根据应用手册,LIS3DH用于倾斜检测时,最好将测量范围设置为+/-2g。
设备上电后,需要约5ms的启动时间,之后自动进入低功耗模式。之后不同的模式间切换也需要少许的时间,与ODR有关。
存储结果的寄存器的值为有符号数(二补码)。应用笔记中“Example of acceleration data”中的示例表格,1g对应的高位寄存器值应为40h,资料应该是误写成了04h。
手册中的功耗数据只适用于SDO/SA0脚接电源、或者空接的情况。若该管脚接地,功耗会增加150μA;若通过下拉电阻接地,功耗则会更大。
测试代码
View Code
ODR更新频率设置为1Hz,通过串口打印三轴加速度测量结果,单位mg。