基于FPGA的数字识别方案

数字识别方案

基于FPGA的数字识别的实现

原理介绍基于FPGA的数字识别方案

数字特征信息的提取基于打印体,如上图1,以图1数字5举例,红框是数字5的水平和竖直的上下左右边界。X1在竖直方向的2/5处的水平线,x2在竖直方向的2/3处的水平线,y在水平方的1/2处的水直线。我们以此特征来统计x1,x2,y与数字5的交叉点。

以交叉统计法来区分0-9数字的特征如下表1:

表1 0-9数字特征统计表
数字 与y交叉点个数 与x1交叉点个数 与x2交叉点个数 分类
0 2 2 2 A
1 1 1 1 B
2 3 1 1 C
3 3 1 1 C
4 2 2 1 D
5 3 1 1 C
6 3 1 2 E
7 2 1 1 F
8 3 2 2 G
9 3 2 1 H

由于2,3,5的数字特征统计表一样,无法区分所以我们继续增加数字特征以区分2,3,5。如表2:

表2 2,3,5 数字特征统计
数字 与x1的交叉点位置(左,右) 与x2的交叉点位置(左,右) 分类
2
3
5

这样通过数字统计完全区分开数字0-9。然后利用FPGA系统搭建实时数字识别系统。

FPGA原理

图像采集使用 ov5640 cmos 500W像素摄像头,将采集到的彩色RGB图像首先存入SDRAM中,然后由TFT显示控制端读出图像数据,读出RGB图像数据后,我们首先进行RGB转Ycbcr算法操作,然后对灰度图像进行阈值分割,形成二值图像,对二值数字图像进行边界追踪的基础上进行数字识别,最终将边界显示在TFT5寸屏幕上,将识别的数字信息显示在数码管上。

数字识别核心代码

基于FPGA的数字识别方案

模块图

基于FPGA的数字识别方案

ps: 字母和汉字识别

将字符或汉字分成N*M等份,这样针对同一字符,不同大小得到的特征值相差不是很大。相当于对字符进行降维统计,因此N和M值应相对合适,否则特征值过多或过小。N*M越大,模板越大,特征越大,区分字符的能力就越大,但同时计算量越大,失去了降维的意义。N*M过小,则对比结果不准确。

根据经验样品数与特征数之比应足够大,通常样本数是特征数的5~10倍左右。根据车牌字符的特殊形状,取5*8

如图,统计每一份内的像素个数,与每一份所有像素点个数进行对比。若大于二分之一则记这一份为1。
基于FPGA的数字识别方案