1项目概述
在图画搜集与处理的进程中,一般来说前端的数据处理相对后端来说数据量大可是操作相对简略,假如运用CPU等串行结构的处理器来进行运算的话会大大占用其资源,大大影响了整个图画搜集与处理的时间;而FPGA则与CPU相反,其并行的结构会使图画处理算法简略的部分变得十分高效,因而,在图画搜集与预处理进程中涉及到的一些简略的算法假如运用FPGA来完成的话将会使整个图画搜集与处理的时间大大削减。
轿车车牌的定位辨认需求对摄像机拍照的含有轿车车牌的图片中的车牌的方位信息进行检测,并将检测成果输出,通过这样的预处理后,图画中车牌数据的获取就会变得适当省时省力了,处理时间的大大缩短关于对图画处理时间有严格要求的收费卡口以及交通路口来说是求之不得的。
2项目使命
本项意图首要使命是运用摄像机以及FPGA开发板,规划一个能够在交通路口和收费卡口对交游车辆的车牌进行预处理的体系,完成对车辆进行图画拍照,并对图画中的车牌进行辨认,输出车牌在图片中的方位坐标等信息。
3 方案规划
3.1 体系框图
本项意图体系框图如图1所示。电源及FPGA的Flash存储器等未画出来。
CMOS相机通过接口与FPGA内部的CMOS传感器数据获取模块相连,由数据获取模块装备相机并发送操控信号来操控相机采图。采得的图是Bayer格局的图画,为便利图画的存储与处理先将其转化为RGB格局的图画,然后将转化完后的RGB数据通过SDRAM操控器存储到SDRAM中。
图1 体系框图
一起,通过VGA操控器将存储在SDRAM中的数据运用DAC转化为契合VGA格局的模拟信号,然后通过显现器显现,这样就完成了图画的搜集与显现。通过显现器显现是为便于实时了解图画处理的成果,易于算法规划者进行算法的规划与改善。
车牌定位是通过 Image Process模块完成的,处理完之后将提取的车牌坐标信息输出,能够通过USB传输到PC,也能够传输到DSP以进行后续处理。
3.2硬件渠道各部分阐明
3.2.1 FPGA开发板
本项目依据Nexys™3 Spartan-6 FPGA 开发板,中心处理器为Xilinx公司的 Spartan-6 FPGA。该项目会用到的板上首要资源为:
● Xilinx Spartan6 XC6LX16-CS324
● 16Mbyte Micron Cellular RAM
● 16Mbyte Micron Parallel PCM
● Digilent Adept USB2 port
● VHDC expansion connector
● 8-bit VGA
XC6LX16-CS324是Xilinx公司Spartan-6系列的FPGA,具有丰厚的逻辑资源和存储资源,十分适宜进行一些简略算法的完成。FPGA用于装备与操控Camera,通过Camera搜集图画,获取Camera输出图画数据并将其存储到Cellular RAM,然后对图画数据进行处理。一切图画处理算法均在FPGA上完成。
Cellular RAM是一种PSRAM 设备,具有相似 SRAM 的架构、躲藏的改写操作和 SRAM 管脚兼容性等特色。此混合内存集 SRAM 和 DRAM 的长处于一身,兼具低功耗与高速读写功用。因为FPGA内部存储空间有限,因而本项目用Cellular RAM缓存图画,这样就省去了人工改写RAM的进程,大大降低了数据存取的杂乱度。
Digilent USB2 port用于为板卡供给电源,对FPGA进行编程和将车牌坐标信息传输到PC显现。
VHDC connector是为扩展板卡功用而预留的IO口,该项目用此接口衔接Camera。
8-bit VGA接口用于将处理后的图画输出到显现器,以便直观的调查图画处理的作用。
3.2.2 CMOS相机
图画搜集部分选用Terasic公司的TRDB-D5M系列五颜六色摄像头,该系列摄像头具有500万像素,具有2752×2004个总像素,其间有用像素为2592×1944个像素,剩余的像素能够防止在进行图画处理时因为边际梯度太大而或许导致的边际效应。该系列相机的接口为数字接口,能够通过这些接口对相机的寄存器进行设置,然后调整相机的拍照形式、焦距以及曝光时间等,能够与FPGA很好的合作,且操作便利、速度较快,适当适宜做FPGA图画处理的图画获取设备。
3.3 图画结构及相机接口
因为选用的是是Terasic的CMOS相机,该款相机选用的是Micron的MT9P001系列CMOS图画传感器,图2所示为该相机所运用的传感器的像素散布图。图3为相机模块的输出接口引脚界说。
图2 CMOS传感器像素结构
在上图所示的Rigion II为有用的像素区域,Rigion I为为边际区域,其有用宽度为100 pixels,有用防止了在进行图画处理时或许构成的边际效应。
图3 相机模块的输出接口引脚界说
该相机是专门为FPGA开发人员规划的,因而其输出为数字信号,且操控线、数据线等时序都较为明晰,且供给了许多有用的功用。这大大降低了对图画搜集的规划难度。
4.图画算法
车牌定位办法的一个一起起点是通过车牌区域的特征来判别车牌。可运用的车牌特征能够归纳如下:
(1)车牌区域内的边际灰度直方图计算特征:有两个显着且别离的散布中心。
(2)车牌的几许特征:车牌的宽、高份额在必定范围内。
(3)车牌区域的灰度散布特征:穿过车牌的水平直线其灰度出现接连的峰、谷、峰的散布。
(4)车牌区域水平或笔直投影特征:车牌区域水平或笔直投影出现接连的峰、谷、峰的散布。
(5)车牌形状特征和字符捧列格局特征:车牌有矩形边框,字符坐落矩形框中且有距离。
(6)频谱特征:对图形作行或列的DFT改换,其频谱图中包括车牌方位信息。除此之外,车牌字符的纹路特征、字符与布景之间的灰度特征、车牌的字符色彩与底色的固定调配、车牌的结构特征等越来越多地的车牌特征也正被发掘出来作为车牌定位算法的依据。
依据车牌的不同特征,能够选用不同的定位办法。现在车牌定位的办法许多,最常见的定位技能首要有依据边际检测的办法、依据五颜六色切割的办法、依据小波改换的办法、依据遗传算法的办法、依据数学形状学的车牌定位和依据灰度图画纹路特征剖析的办法等,车牌定位算法在车牌辨认技能中占有很重要方位,一个车牌辨认体系的辨认率往往取决于车牌定位的成功率及准确度,考虑到FPGA适宜做数据量大且运算简略重复的特色,咱们将选用依据数学形状学的办法来进行定位。
对搜集存储在Cellular RAM中的图画进行处理的进程分为两大步:预处理和车牌定位。其详细流程如下:
图4 图画处理流程
● 灰度化
通过CMOS摄像机或数码相机等设备拍照的轿车图画以二进制格局存放在FPGA中,在预处理前的图画都是五颜六色图画。五颜六色图画又称RGB图画,它是运用R、G、B 3个重量表明一个像素的色彩,R、G、B别离代表红、绿、蓝3种不同的色彩。通过三基色能够组成出任一色彩。所以关于一个尺度为m×n的五颜六色图画来说,存储为一个m×n×3的多维数组 因为五颜六色图画中所含的信息比较涣散,并且数据处理量很大,因而咱们需求首要对车流五颜六色图画进行预处理,本项意图算法是依据灰度图画,因而首要将RGB图画转化为灰度图。
FPGA完成:直接提取G通道的数据即可。
● 直方图均衡
直方图均衡化是一种图画对比度增强的办法,它的本质是通过削减图画的灰度级以交换对比度的增大。
● 图画去噪
搜集的图画因为各种原因难免会引入噪声,因而有必要对噪声进行消除或减小,以便于后续处理。本项目开端挑选中值滤波来减小噪声,中值滤波是一种非线性的图画滑润法,它对脉冲搅扰级椒盐噪声的按捺作用好,在按捺随机噪声的一起能有用维护边际少受含糊。
● 二值化
为了更好的运用车牌的某些特征将车牌从图画中突显出来,为车牌定位打好根底,再将预处理的图画转化为二值图画。二值化算法又称为阈值算法,常见的二值化办法有动态阈值法、部分阈值法及大局阈值法,典型的大局阈值法有Otsu、迭代法等,其意图便是要找出一个适宜的阈值,将待处理的区域划分为远景和布景两个部分。咱们以为车牌区域是车流图画的远景区,其他的部分都看成是布景区.因而简略来说,关于梯度图画的二值化实际上便是确认一个最佳的切割阙值,可依据详细的试验成果选取适宜的办法。
● 边际提取
边际是图画最根本的特征之一,是图画切割、纹路剖析及图画辨认所依靠的重要依据。在轿车图画中,车牌区域内含有丰厚的边际包括水平边际、笔直边际和斜向边际,而其它区域则很少具有这个特色,故可通过边际检测技能来寻觅存在较多边际的区域,来很好的突现车牌区域的水平梯度特征,然后使其与布景图画有用的分隔。边际提取能够依据灰度图画,也能够依据五颜六色图画,因为五颜六色图画的布景杂乱且数据量大,因而挑选选用二值图画进行边际提取。
FPGA完成:本项目选用开端选用sobel边际检测算法,如图5所示。
Gx与Gy是x与y方向的模板,处理时需求将图画像素与模板做卷积。在用C言语完成该算法时很简略,因为图画像素都存储在二维数据内,依据数组的下标即可获取像素的值,但Verilog不能做到这点,因而需选用其他办法,下面以Gx与图画卷积为例来阐明用Verilog的完成办法。
图5 Sobel边际检测模板
检测进程中需求完成下面的运算:
X1 * P1 + X2 * P2 + X3 * P3 + X4 * P4 + X5 * P5 + X6 * P6 + X7 * P7 + X8 * P8 + X9 * P9
关于x1-x9的获取很简略,可用parameter直接界说,而关于p1-p9的获取就成为关键问题,因为p1-p9是顺次传入的,没有C言语的位址概念,也没有二维数组的概念,因而可规划3条line buffer做以上运算,Line buffer的结构如下。
图6 line buffer结构
如上图所示的电路,Data是图画数据,从榜首行开端,顺次传输给Line0的输入端。Line0、Line1、Line2为移位寄存器,每个移位寄存器的深度为图画的行宽。因为图画中相邻两行中上下相邻的数据从一维的视点来看恰好是一个行宽,因而能够发现每次Line0、Line1、Line2所输出的数据均是相邻三行中同一方位的数据,一起,相邻时间同一移位寄存器输出的数据在当前行上是相邻的,所以能够发现,每一时间P1~P9共9个数据便是进行边际检测所需求的矩阵,取得数据矩阵后运用乘法器将每个数据与边际检测模板对应方位上的数据相乘,然后通过并行加法器将其相乘即可取得边际检测后图画上每个点的值。
● 形状学处理
数学形状学是由一组形状学的代数运算子组成的,它的根本运算有4个: 胀大(或扩张)、腐蚀(或腐蚀)、敞开和闭合, 它们在二值图画和灰度图画中各有特色。数学形状学办法运用一个称作结构元素的“探针”搜集图画的信息,当探针在图画中不断移动时, 便可调查图画各个部分之间的相互关系,然后了解图画的结构特征。数学形状学依据勘探的思维,与人的FOA(Focus Of Attention)的视觉特色有相似之处。作为探针的结构元素,可直接带着常识(形状、巨细、乃至参加灰度和色度信息)来勘探、研讨图画的结构特色。在车牌辨认中引入形状学算法能够简化FPGA中完成办法的杂乱度,充分运用FPGA拿手简略、数据量大的算法的特色,使算法的准确度与速度都有了很大的提高。
在本项目中,可先选用结构元素对二值轿车图画作腐蚀运算以去除一些噪声,在去噪根底上,运用结构元素作闭运算,使车牌区域构成连通的区域。通过形状学运算,车牌区域已构成闭合的连通区域,然后对连通区域作符号。
FPGA完成:结构元素能够用parameter直接界说,难点仍然在于图画像素的获取。这儿相同能够采纳边际检测中说到的line buffer,仅仅所做的运算不同。
● 准确认位
形状学处理后的图画或许包括搅扰区域,因而,在连通区域符号的根底上,计算出每个连通区域的外接矩形框,并运用车牌的先验常识确认车牌区域的方位。该办法能够较好地确认图画中车牌区域的方位,且算法简略、实时性较强。
在以上各进程中,灰度化、去噪、二值化、边际提取形状学处理等算法可用Verilog HDL完成,准确认位算法涉及到连通区域剖析,相对杂乱,可考虑运用Microblaze完成。