符号识别系统设计及FPGA实现
2018-01-04山丹张晓旭丛国涛
山丹 张晓旭 丛国涛
摘要:为满足符号识别系统对实时性、低功耗和小型化的要求,该文设计了一种以FPGA为系统核心,辅以OV7670视频采集模块和VGA接口显示器,实现对基本图形、数字和英文字母进行识别及结果显示。其中,对图像的处理及符号识别部分由FPGA完成,包括IIC摄像头配置、缓存、灰度处理、中值滤波、根据特征识别基本图形和数字、根据字模匹配程度识别英文字母、VGA显示等,充分利用FPGA的高速并行处理的特点,结合片内RAM高速处理和片外SDRAM大容量特性,实现对视频数据的处理和存儲。同时,系统具有抗干扰性较强、小巧、通用性强等特点,可扩展为人工智能、车牌识别等系统使用。
关键词:FPGA;符号识别;图像处理;中值滤波
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)30-0252-03
Abstract: In order to satisfy the real-time, low-power and miniaturization requirements of symbol recognition system, a system is designed based on FPGA, supplemented by OV7670 video acquisition module and VGA interface displayer to realize the recognition of basic graphics, numbers and English letters. The image processing and symbol recognition part is completed by FPGA, including IIC camera configuration, buffer, gray processing, median filtering, recognition of basic graphics and numbers according to features, recognition of English letters according to the degree of font matching, VGA display and so on. The features of high-speed and parallel processing ability of FPGA are fully utilized in combination with high-speed RAM on chip and large capacity of off-chip SDRAM to achieve the processing and storage of video data. At the same time, the system has strong anti-interference, compact, versatility and other characteristics, which can be extended to artificial intelligence, number plate recognition systems.
Key words: FPGA; Symbol Recognition; Image Processing; Median Filtering
对图形、数字和英文字母等符号的识别,作为图像处理和机器视觉领域的重要分支,近年来成为广大学者研究的热点和难点。目前,此类系统在信息处理、人工智能、密码识别、车牌识别和交通管理等领域有着广泛的应用前景。而现有系统,绝大多数都是基于PC机[1] [2]设计的,其从实时性、功耗、成本和小型化等方面都难以满足不同应用的需求。鉴于此,基于嵌入式平台的符号识别系统成为研究热点,而FPGA拥有大量逻辑单元和布线资源,具有并行处理、速度快、功耗低、成本低的特点,其设计灵活,易于维护和升级,较传统PC机及其他以单片机为核心的嵌入式系统,有明显优势。因此,本文提出了一种基于FPGA硬件平台的符号识别方案。
对符号的识别方法目前有很多种,如提取特征的识别方法[3]、模板匹配方法[4]和人工神经网络法[5]等。其中,人工神经网络的方法虽较为流行,但其输入向量数据量大,训练时间长,网络结构复杂,实现难度大;基于特征的识别方法适用于一些简单符号,特征明显,易提取,如三角形等基本图形和数字的识别;模板匹配方法无须样本训练,也避免了提取复杂符号特征的困难,而是利用符号图像的整体特征,大大提高识别速度和准确率,适用于如英文字母的识别。
1系统总体设计方案及原理
本系统是由FPGA核心板、OV7670视频采集模块、VGA显示模块组成,如图1系统结构框图所示。
系统工作原理。 ① FPGA核心板采用Altera的CycloneIV系列 4CE6F17 FPGA作为控制和数据处理中心,接收由视频采集模块送来的图像帧信息,进而经过一系列处理并识别符号后,产生VGA接口控制时序,最终将识别结果显示出来。② 视频采集模块采用CMOS摄像头模块OV7670,通过IIC接口对其进行配置后,开始采集图像数据,并通过8位并行接口,每帧图像传输30万像素数据,给FPGA单元,供后续处理。③VGA显示模块用于接收来自FPGA的显示数据,经过D/A转换后,显示在显示器上。
2FPGA实现
2.1 FPGA内部电路结构
FPGA内部电路作为整个电路的核心,如图2所示,主要由IIC配置模块、并行视频数据缓存模块、预处理模块、基本图形识别模块、数字识别模块、英文字母识别模块、VGA接口模块和状态机模块组成。这里,为提高图像识别精度,节省FPGA内部资源,采用红色矩形方框作为识别框,将待识别符号置于识别框内,之后完成识别操作;有限状态机模块协调电路动作的整体步调,对电路动作的先后顺序进行控制。
2.2 图像采集及预处理模块
对于图像采集部分,首先,在FPGA内部实现IIC接口时序,并对OV7670图像数据采集模块寄存器进行设置,使其每帧图像以640*480的RGB565格式输出,由于并行接口位宽为8位,而每个像素点颜色为16位,分2次传输。其中,FPGA外部晶振输入为50MHz,而IIC接口的通信频率为10KHz,并行数据传输频率为25MHz,所以模块内部需对50MHz进行分频,产生相应时钟,供数据传输用。之后,对采集进来的图像信息进行缓存。考虑到FPGA内部存储器资源有限,而视频数据量较大,这里使用片外SDRAM进行缓存,以突發方式传输。由于其读写速度较快,在100MHz左右,与输入图像信息频率不一致,所以引入双端口FIFO解决异步时钟域的数据传输。
对于图像预处理部分,为节省逻辑资源和减小计算量,首先完成对彩色图像的灰度处理,每个像素点数据由原来的16比特减少为8比特,节省一半的存储空间。灰度处理公式如(1)所示。由于式中涉及浮点数的处理,在FPGA中将浮点数转为定点数后,方便电路实现。所以,将各系数同时扩大256倍,则公式(1)变成公式(2)的形式。
之后,对灰度图像进行中值滤波,用统计排序结果的中值来代替中心像素的值,滤除脉冲噪声。采用5ⅹ5滤波窗口,以滑窗形式,不断在图像上从左向右,从上向下流水线式滑动。对滤波窗口中25个值的中值获取,采用基于比特平面的中值滤波算法[6]来实现。
最后,对中值滤波后的图像进行二值化处理,每个像素点用1和0区分,供后续符号识别时用,使后续计算变得简单、稳定、易于电路实现。
2.3 基本图形识别模块
特征提取的目的是获取一组少而精的分类特征,即获取特征数目少且分类错误概率小的特征向量。由于三角形、矩形、圆形等基本图形基本特征比较明显,这里采用特征法来区分三角形、矩形和圆型。这里,如图3所示,用两条线对图形进行切割,对每个图形的切割交点记录横坐标,由于图形线条存在宽度差别,取最左侧交点作为X交点坐标,比较各个横坐标点X的大小从而判断图形所属类别。
如图3(a)所示,当用识别框中心点以下两条线切割三角形时,X1-X2>阈值,可作为三角形的特征。如图3(b)所示,当用识别框中心点以下两条线切割矩形时,|X1-X2|<阈值,可作为矩形的特征。如图3(c)所示,当用识别框中心点以下两条线切割圆型时,X2-X1>阈值,可作为圆形的特征。这里,识别框行坐标范围设为:100 2.4 数字识别模块 数字0~9的识别,同样采用特征点统计方式实现[3]。如图4所示,以对数字3的识别为例,用三条直线对数字进行切割,其中,行方向两条,列方向一条,统计数字在三条直线上的特征变化情况,从而达到图像号码的区分和识别。在号码的列方向上的2/5和2/3处的横线与号码的交点数量均为1个;号码行方向中间的1/2处作竖线,与号码竖直方向的交点数量为3个。同样规则下,对0~9所有统计数据进行归类总结,同时结合X1和X2交点在Y方向左右情况,作为识别数字的特征依据,保存于FPGA片内ROM中,供查询比较用。这里,根据识别框坐标,行方向两条直线的列坐标分别为180和230,列方向直线的行坐标为200。考虑到数字线条粗细差别,交点个数计算时,以灰度值由0到1变化一次计数一次。 2.5 英文字母识别模块 对于英文大写字母A~Z和小写字母a~z的识别,采用模板匹配方式实现,在FPGA片内ROM中分别存储26个大写字母和26个小写字母的印刷体模板,供查询比较用。未减少存储空间需求和减少比较复杂度,方便FPGA电路实现,这里只取9×9一共81个点作为模板,黑色区域为字母区域,用1表示,白色区域为非字母区域,用0表示。将识别框内英文字符与模板进行比较,结合不同字母的形状特征,区分字母类型。如图5所示,以字母“B“为例,坐标以左上角为(0,0),右下角坐标为(8,8),字母‘B的特征位置分别为四个区域:(0,2)、(0,3)、(0,4);(1,6)、(1,7)、(2,6)、(2,7);(5,6)、(5,7)、(6,6)、(6,7);(8,2)、(8,3)、(8,4)。这里,为增加与字母‘D的区分特征,这里增加了第五个特征区域(4,3)、(4,4)、(4,5)。每个特征区域内的点以“或“的形式存在,与被识别字母的二值化图像进行比较。 为减少比较点数量,缩小组合逻辑规模,提高比较效率,这里,对识别框内二值化后图像进行隔20行扫描一次,隔20列扫描一次,即取行110、130、150、170、190、210、230、250、270与列110、130、150、170、190、210、230、250、270的交点作为与9×9模板的比较点,实现与字母模板的一致性判别。 2.6 VGA接口模块 VGA接口模块用来产生VGA显示器所需要的接口时序,包括行同步、场同步和数据总线信号,并读取视频数据,以25MHz的频率以RGB565格式送到数据总线上。VGA显示器分辨率为640*480,刷新频率约为60Hz。 3 实验结果与分析 FPGA电路在黑金开发板AX-301上实现,并配以OV7670视频采集模块和VGA接口显示器,构建系统并验证基于FPGA的符号识别系统的实现效果。图6为基本图像识别前后对比。图7数字识别前后对比。图8英文字母识别前后对比。红色框中为识别框,将待识别字符置于识别框内;蓝色框为识别结果。 4 结语 本系统充分利用FPGA的高速并行处理能力,配以图像采集单元和VGA显示器,实现了基于FPGA的基本图像、数字和英文字母的识别。电路设计既便于FPGA电路实现,又注重算法效率和实时性要求。本设计具有低功耗、低成本等特点,可作为符号识别和信息处理的基础,方便实现功能扩展。 参考文献: [1] 王育卜, 白宝兴. 印刷体数字识别研究与实现[J].长春理工大学学报(自然科学版),2016,39(1):101-102. [2] 殷璇,王生.基于离散Hopfield神经网络的字母识别研究[J], 计算机与数字工程,2011,12(1):34-37. [3] 高振斌,赵盼,王霞,等.印刷体数字识别系统的FPGA实现[J].重庆邮电大学学报(自然科学版),2015,27(2):213-215. [4] 罗佳,刘大刚. 基于整体特征的快速英文字母识别方法[J]. 计算机与数学工程,2012,40(9):117. [5] 张翼成,陈欣,杨红军,等.基于组合特征的Bp神经网络数字识别方法[J].计算机系统应用,2013,22(3):113-116. [6] 王莹,高美凤.基于FPGA的视频图像目标检测系统[J].计算机系统应用,2017,26(6):98-102. 【通联编辑:梁书】