基于树莓派开发板的车辆识别系统设计*

2017-04-25 06:04蔡晓宇
单片机与嵌入式系统应用 2017年4期
关键词:台式机开发板树莓

蔡晓宇

(安徽师范大学皖江学院,芜湖241000)

基于树莓派开发板的车辆识别系统设计*

蔡晓宇

(安徽师范大学皖江学院,芜湖241000)

本设计着手于具有较大实用价值的“车牌识别”,用小巧的嵌入式开发板接入互联网,实现物联网技术下的车辆识别。该系统主要由嵌入式开发板、摄像头、台式机组成。嵌入式开发板采用当下流行的树莓派开发板,负责调用外置的摄像头模块采集车牌照片,配合在云端的台式机,将采集好的相片通过互联网上传至台式机,台式机处理传送来的车牌照片,并返回识别结果,从而完成整个识别过程。

物联网技术;嵌入式;车牌识别

引 言

随着社会城镇化建设的不断推进,不但城市人口的数量变得日益庞大,而且城市中最重要的交通工具汽车的数量急剧增加,与日俱增的车辆时刻考验着城市交通管理的能力。高效、可靠地管理车辆已成为每个城市迫切需求。

随着信息化的高速发展,交通管理的自动化、智能化受到了越来越多的关注。车牌识别系统(License Plate Recognition,LPR)作为智能交通管理系统(Intelligent Traffic System,ITS)的重要组成部分,越来越被重视。车牌识别技术的探索,促进交通管理的智能化和网络化,对于日益趋多的车辆管理的工作有较大帮助。本文提出基于树莓派开发板的车牌识别系统,实现物联网技术下的车牌识别。

1 总体结构

该车辆识别系统主要由台式机、嵌入式开发板、摄像头模块三个部分组成设计图如图1所示。

图1 车辆识别设计图

该车辆识别系统包括嵌入式开发板、电源模块、摄像头模块、台式机模块、通信模块。台式机作为服务器,控制与之连接的树莓派开发板对车牌进行拍照;通信模块采用Java语言编写,它们之间的通信通过TCP/IP协议,实现数据的交换和传输。 嵌入式开发板接入互联网,配合摄像头模块可实现在停车场、小区门禁等需要进行车辆身份验证的类似场景,快速识别车牌信息。

2 组件分析

2.1 台式机

台式机部分在Windows环境下,搭载了由VC2010开发,OpenCV软件辅助的识别系统。台式机不断接收来自嵌入式开发板的图像数据,图像被处理识别后再由无线传输,将识别结果返回至嵌入式开发板。

开发环境如下:Visual Studio是由微软公司推出的开发环境。它是目前最流行的Windows平台应用程序开发环境之一。Microsoft Visual Studio 2010版本还支持支持微软云计算架构(Windows Azure)、移动与嵌入式装置开发以及当前最热门的敏捷软件开发模型,OpenCV(Open Source Computer Vision Library)于1999年由Intel公司建立,现如今为其提供支持的是Willow Garage。OpenCV是一个计算机视觉函数库,它是基于开源和跨平台发行的。

图2 TCP方式传递图片

OpenCV作为一个外部函数库,可以通过在Windows、Linux环境下的IDE下配置连接,在编程开发时直接调用函数库中各种算法对应的函数就可以实现所需的操作,可以有效地加快开发速度。由于OpenCV专门针对Intel的处理器做了优化,因此在Intel平台下则表现出更快的速度。

Tesseract是由Ray Smith于1985~1995年间在惠普布里斯托实验室开发出来的一个光学字符识别(Optical Character Recognition,OCR)引擎,曾经在1995年UNLV精确度测试中名列前茅,但1996年后就停止了开发。2006年,Google邀请Smith加盟,重新启动了该项目。该项目目前可以支持Windows、Linux和Mac OS等主流平台。Tesseract-OCR 3.0.1以后发布的版本中加入了中文字符识别库,可以实现对tif、bmp格式中含中文字符的图像的识别。为了提高识别率,Tesseract-OCR还提供了样本训练功能,用户可以通过收集大量的样本素材来训练自己的识别库,从而可以提高用户对某些特定性的字符的识别率。在Microsoft Visual Studio 2010平台下用户可以通过调用Tesseract-OCR提供的API接口,将自己训练的识别库放入安装目录的tessdata中,配置环境变量后,对待识别的字符图像进行识别。

2.2 嵌入式开发板

嵌入式开发板采用了当下较为流行的树莓派开发板。Raspberry,是世界上最小的台式机,又称卡片式电脑,外形只有信用卡大小,却具有电脑的所有基本功能。它是一款基于ARM的微型电脑主板,以SD/Micro SD卡为内存硬盘,可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。

本次使用的是树莓派3B,相较于上代树莓派,3B的性能更加强大,搭载1.2 GHz 的64位四核处理器,增加802.11 b/g/n无线网卡和低功耗的蓝牙4.1,功耗也有小幅度的增加。

3 无线通信传输

由于台式机接收到的图像质量好坏会直接影响到最终识别的准确,因此如何将摄像头拍摄的图像准确性、快速地传递给台式机成了重中之重。

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,在正式收发数据前,必须和对方建立可靠的连接。由于TCP连接方式的可靠性,如图2所示,使得图片在传输过程中,数据的完整性得到保障。

树莓派官方预搭载的编程开发环境包含了Java语言。Java语言是一种面向对象的语言,它提供了基本的封装方法来完成指定的任务,只需要传入必要参数,即可调用相应方法,得到想要的结果。Java也适用于小型机,它的基本解释器及类的支持只有40 KB左右。此外,Java是面向网络的语言,通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便地访问其他对象。本次设计就使用了Java语言的TCP/IP封装的方法。

① MAC地址是上网设备的“身份证号码”,具有全球唯一性。所以使用路由器绑定台式机的MAC地址以及多台树莓派的MAC地址,指定其内部网络IP地址,可以方便管理。

② 台式机作为本次方案的服务器端,使用了Java多线程技术,监听来自不同IP地址的数据,并将数据保存在指定文件目录下。

③ 树莓派作为本次方案的客户端,通过Java封装好的方法,实例化Socket流,连接指定IP地址的服务器端。在其拍照结束并检查文件的合法性,确认文件无异常后,通过字节流将文件发送给服务器。

图3 IP地址分配图

④ 待文件确认传输完毕后,释放所有资源,等待下次命令的开启。图片通过网络,在发送端利用TCP/IP协议传递给台式机,若成功识别,会在指定目录下生成txt文档,保存车牌号。

台式机服务器端多线程部分:

final ServerSocket server = new ServerSocket(PORT);

new Thread(new Runnable() {

public void run() {

while (true) {

try {

System.out.println("开始监听...");

Socket socket = server.accept();

System.out.println("有链接");

receiveFile(socket);

}

catch (Exception e) {

System.out.println("服务器异常");

e.printStackTrace();

}

}

}

}).start();

树莓派客户端发送数据部分:

while ((length = fis.read(sendBytes, 0, sendBytes.length)) > 0) {

sumL += length;

if(flag != (int)((sumL/l)*100)){

flag = (int)((sumL/l)*100);

System.out.println("已传输:"+flag+"%");

}

dos.write(sendBytes, 0, length);

dos.flush();

}

4 车辆识别过程

基于树莓派的云端识别车牌方法,准备过程如下:

① 开启云端的电脑,接入互联网。

② 打开电脑和树莓派之间相应的通信软件和识别车辆的软件,等待树莓派连接,每连接一个树莓派,开启一条线程处理。

③ 树莓派连接电源模块,接通电源,为方便管理,为每一台树莓派设置好静态固定的IP地址,通过无线网卡连接路由器。

④ 摄像头正确连接树莓派,装入树莓派保护盒内,保证工作状态下减少外界干扰。并将树莓派盒子内摄像头正对道路口, 摆在需要车牌识别的地方。

⑤ 通过SSH方式开启树莓派通信模块,驱动摄像头,开始工作。

捕捉车辆过程如下:

① 树莓派开启后,拍摄图片,并启用上传程序,发送给云端台式机。

② 云端台式机收到连接请求,同意连接,并接受树莓派发来的数据,保存在指定目录下,启动识别车牌程序进行车牌的识别。

③ 若识别程序成功定位到车牌,进行识别车牌中的字符,并将结果保存在指定目录。

若识别程序未定位到车牌,将舍弃此次数据,等待下次树莓派数据的传输。云端识别流程图如图4所示。

识别程序工作过程如下:

本系统基于开源发行的OpenCV跨平台计算机视觉函数库进行设计和实现,采用Microsoft Visual Studio 2010开发平台,运用MFC框架设计界面,使用C++语言编程,调用Tesseract-OCR对提取出的车牌字符进行识别,主要分三步来实现车牌识别技术:即车牌定位、字符分割、字符识别。车牌识别系统的工作的总流程如图5所示。

图4 云端识别流程图

图5 车牌识别流程图

① 图像的输入。本系统处理的图像都统一调整为像素为2 592×1 456,经过大量实验,当判定条件的面积选择为大于10 000时,能够有效地去除掉微小噪点

Vehicle Identification System Based on Raspberry Pi

Cai Xiaoyu

(Wanjiang College of Anhui Normal University,Wuhu 241000,China)

In the paper,license plate recognition is concerned.With a small development board connecting to the Internet,the license plate recognition is achieved.The system mainly consists of the embedded development board,the camera,the desktop components.The embedded development board uses the current popular Raspberry development board tocall the external camera module acquisition license plate photos.Then the collected photos are uploaded to the desktop through the Internet.The desktop machine processes the transmitted license plate photos and returns the recognition results.

internet of things technology;embedded system;license plate recognition

2016国家级大学生创新创业训练计划项目(项目编号:201613617002)。

TP27

A

猜你喜欢
台式机开发板树莓
台式机还是笔记本了解这些选择就不难
云淡风轻,品牌台式机深耕商用市场
基于树莓派的骑行智能头盔设计
基于树莓派的远程家居控制系统的设计
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
响应面法优化红树莓酒发酵工艺
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
欧盟:速冻树莓比鲜食树莓市场更好