可本地编译的嵌入式计算机视觉实验系统设计
2017-09-03徐志宇余有灵
彭 澎, 陈 耀, 徐志宇, 余有灵
(同济大学 电子与信息工程学院,上海 201804)
·计算机技术应用·
可本地编译的嵌入式计算机视觉实验系统设计
彭 澎, 陈 耀, 徐志宇, 余有灵
(同济大学 电子与信息工程学院,上海 201804)
开发了一套具有本地编译能力的低成本模块化嵌入式计算机视觉实验系统“CV-Innovator”。硬件上,该系统的嵌入式处理器采用全志A20双核ARM Cortex-A7 SoC(System on Chip,片上系统),通过彩色CMOS摄像头OV7670采集实时图像,18 cm TFT-LCD显示屏和USB键盘鼠标提供友好的人机交互。软件上,为“CV-Innovator”构建了嵌入式Linux操作系统,可在嵌入式Linux环境下开发和运行基于OpenCV和Qt的计算机视觉应用程序。进行了样机试制,并设计了一个人脸检测示例应用程序,其结果表明“CV-Innovator”能实现预期功能,可应用于我国高校计算机、电子信息及自动化等相关专业的本科实验教学。
嵌入式系统; 计算机视觉; 实验系统
0 引 言
嵌入式系统是为特定应用而设计的专用计算机系统,如今被广泛应用于电信、汽车电子、医疗、多媒体及航空等领域[1]。嵌入式系统作为一门软硬结合、实践性强的重要专业课程,被我国大多数高校的电子电信类专业纳入本科生培养计划,但是在嵌入式系统课程的教学中普遍存在以下不足之处[2-4]:
(1) 实验操作死板,学生参与度低。多为验证性实验,即让学生依照实验指导书的步骤,机械地将已有的实验代码烧写到芯片中运行并观察结果。导致缺乏探索性,学生为完成任务而实验,不利于工程能力和创新思维的培养。
(2) 实验设备陈旧,与行业主流脱节。传统的嵌入式系统试验箱体积庞大、价格昂贵,因此难以及时更新换代,以至于很多高校仍用较落后的ARM7或ARM9进行实验教学。该现象不利于学生了解行业前沿和主流的技术,实验中学到的技能难以在创新项目和学科竞赛中应用。
(3) 实验内容分散,未形成体系。CC++程序设计、微机原理、嵌入式系统及数字图像处理等专业课程的实验教学相对独立,缺乏综合性的实践环节。不利于学生对课程之间内在关联的理解和对于嵌入式系统相关技术的全局认知。
计算机视觉(Computer Vision, CV)作为一门综合性学科,在如今的信息时代已被广泛用于军事、工业和生活之中[5]。考虑到嵌入式系统的发展趋势,并针对上述的问题,将嵌入式系统与计算机视觉主题相结合,设计了一套低成本、模块化的嵌入式计算机视觉实验系统“CV-Innovator”。该系统以嵌入式处理器为核心,运行嵌入式Linux OS,用户在OS环境下借助OpenCV和Qt等开源函数库开发计算机视觉应用程序,处理CMOS摄像头采集的图像并将结果显示在TFT-LCD显示屏上。
1 硬件设计
“CV-Innovator”实验系统以模块化为指导思想进行硬件设计。如图1所示,嵌入式处理器模块是整个系统的核心部分,并负责系统电源管理及与外围模块的数据交换。嵌入式处理器模块具有多种接口:通过USB接口连接WiFi模块和键盘鼠标;通过I2C总线读写摄像头内部寄存器,同时通过CSI(CMOS Sensor Interface)接口接收图像像素数据;通过LVDS(Low-Voltage Differential Signaling)接口连接TFT-LCD模块。
图1 “CV-Innovator”的硬件结构示意图
1.1 嵌入式处理器模块
目前用于处理计算机视觉任务的主流嵌入式硬件平台有DSP[6]、FPGA[7]和ARM Cortex-A系列SoC[8]等。基于ARM Cortex-A系列SoC的硬件平台虽然计算速度不如前二者,但其开发门槛较低、通用性较好,且与嵌入式系统理论教学内容联系密切,因此有利于学生在短时间内掌握。
本文的嵌入式处理器模块采用市售的核心板和自主设计的扩展板相结合的模式。如图2所示,核心板由双核ARM Cortex-A7 SoC全志A20、1 GB DDR3内存、4 GB eMMC存储器、以太网MAC芯片和电源管理芯片等组成,通过两组100-pin排针引出了SoC的众多接口。经测试,该核心板的SoC最高可在1.104 GHz的主频下稳定运行。
1.2 摄像头模块
“CV-Innovator”主要针对计算机视觉应用开发而设计,摄像头的成像质量对计算机视觉处理的效果具有较大的影响。考虑到主要用于教学目的,摄像头的选取既要保证成像质量,又需要有成熟的内核驱动的支持及完善的文档说明。综合以上考虑,本文在全志A20的摄像头支持列表里选择了市面上最为常见的OV7670摄像头模块。OV7670是一款彩色CMOS图像传感器,拥有640x480有效像素,最高帧率30帧/s,经实测能满足本文的功能需求。
1.3 人机交互模块
本文设计的是能够进行本地开发的嵌入式系统,也就是让实验人员直接在嵌入式系统上编写和调试程序,为了使系统的使用体验接近PC,采用USB无线键盘鼠标作为输入设备。在系统的设计过程中,考虑了3种显示方案:① PC显示器;② VNC远程桌面;③ TFT-LCD。
其中,方案①通过HDMI接口连接普通PC显示器具有最好的显示效果,但该方案违背了低成本和使用便捷的设计初衷。方案②VNC远程桌面显示需要依赖另一台PC,且配置过程较为繁琐,不适合作为本科生教学实验系统使用。本文最终采用方案③,即采用18 cm TFT-LCD模块作为显示设备,该模块分辨率为1024x600,通过LVDS接口连接嵌入式处理器模块。
1.4 WiFi模块
为了使系统具有联网功能,加入了市售USB WiFi模块,该模块基于瑞昱RTL8188方案,带宽为150 Mb/s。由于该模块体积小巧,通过SMT工艺贴装在嵌入式处理器模块的扩展板上,由板上的线路连接到核心板的USB-HOST接口。通过该模块连接WiFi热点,使系统能够浏览网页、使用包管理器为Linux安装软件或开发TCP/IP网络应用等。
2 软件开发
嵌入式软件开发通常有交叉编译和本地编译两种方式,交叉编译步骤繁琐,但适用于各种硬件资源有限的场合。本地编译可采用命令行的文本编辑器和编译工具(如Vim+CMake),也可采用图形化IDE(如Eclipse, Qt Creator)。为了降低使用难度,避免学生对嵌入式系统产生畏惧心理,本系统的设计力求保留嵌入式系统核心特色的同时接近在PC上的开发体验,因此采用图形化IDE进行本地编译的开发方式。本系统的嵌入式处理器集成了Mali400 MP2 GPU,拥有1 GB内存容量,具备用图形化IDE进行本地编译的硬件条件。经测试,本系统在LXDE Ubuntu的环境下能够流畅地运行Qt Creator。
“CV-Innovator”的Linux用户空间软件构架如图3所示,基于本系统的实验内容即图中最顶层的应用程序开发。应用程序通过Qt构建图形用户界面程序框架,调用OpenCV提供的类和函数实现图像处理和计算机视觉算法,其他的功能(如串口通信、TCP/IP网络通信)需要直接调用相应的Linux API实现。
图3 “CV-Innovator”的用户空间软件构架
3 样机制作与软件开发
样机外观如图4所示,其主要参数见表1。
图4 “CV-Innovator”实验系统样机
项目型号/参数规格220mm×150mm×205mm净重0.9kg供电5V3A适配器嵌入式处理器模块市售开源核心板+自主设计的扩展板摄像头OV7670模块(不带FIFO)显示屏EJ070NA-01J7寸LVDS液晶屏
本文开发了一个符合图3所示构架的人脸检测示例应用程序,并成功在样机上运行和测试。该程序为C++语言编写,调用V4L2(Video for Linux 2) API从摄像头采集图像,并在GUI界面中显示;利用Viola-Jones检测器[9]对实时图像进行人脸检测,若检测到人脸,则打印图像中人脸区域的坐标。
人脸检测,即采用一定的策略对图像进行全局搜索,利用分类器确定其中是否含有人脸,如果有则返回人脸区域的坐标和大小等信息。本示例程序采用的 Viola-Jones检测器是一种类Haar特征boost筛选式级联分类器,这种算法不仅快速,而且也适用于大多数具有纹理的近似刚体[9]。Viola-Jones检测器在OpenCV 3.0中被封装为CascadeClassifier类,其成员函数load从xml文件中读取分类器数据,成员函数detectMultiScale对输入图像进行人脸检测。由于人脸检测要求以灰度图像作为输入,预处理阶段进行了RGB图像到灰度图像的颜色空间转换和针对灰度图像的直方图均衡化等操作。示例应用程序实现了基于Qt的图形界面,运行在“CV-Innovator”实验系统中如图5所示。
图5 示例应用程序的图形界面
改变目标的大小、姿态以及光照条件,分别对示例应用程序进行了人脸检测的鲁棒性测试,图6截取了部分成功检出人脸的运行结果。 该试验说明,Viola-Jones检测器对目标的光照条件变化具有较强的鲁棒性,却在目标旋转和部分遮挡条件下的检测性能稍差,一旦目标旋转和遮挡超过图6(c)~(f)所示的程度,就几乎不能成功检出。Viola-Jones检测器对目标具有缩放不变性,但为了提高检测速度,示例应用程序忽略了小于50×50像素人脸区域的搜索。
(a) 标准目标
(b) 目标较小
(c) 轻微旋转
(d) 轻微旋转
(e) 部分遮挡
(f) 部分遮挡
(g) 弱光照
(h) 强光照
(i) 光照不均匀
除了“CV-Innovator”实验系统,本文还将人脸检测示例应用程序移植到JZ2440开发板和树莓派3B卡片电脑中运行。表2上半部分简要列出了“CV-Innovator”、JZ2440开发板和树莓派3B的硬件配置,下半部分列出了示例应用程序中被调用OpenCV函数的平均运行耗时(图像分辨率均为352×288像素)。
由表2可得,执行一次完整的人脸检测过程,“CV-Innovator”需要136.38 ms,帧率可达7.3帧/s;树莓派3B仅需53.69 ms,帧率可达18.6帧/s;而采用典型ARM9 SoC的JZ2440开发板则超过2 s。因此,就性能而言,“CV-Innovator”的ARM Cortex-A7构架虽与更加先进的64 bit ARM Cortex-A53有一定差距,但相比ARM9具有较大优势。
表2 “CV-Innovator”同JZ2440及树莓派3B的对比
4 结 语
本文开发了一套可本地编译的嵌入式计算机视觉实验系统“CV-Innovator”。硬件以全志A20双核SoC和OV7670彩色CMOS摄像头为核心,以18 cm TFT-LCD、USB键盘鼠标等为人机交互。软件基于嵌入式Linux OS,借助Qt和OpenCV构建计算机视觉相关的应用程序。样机制作及人脸检测示例应用程序的测试证实了实验系统的有效性。
“CV-Innovator”解决了传统高校嵌入式系统教学模式中的一些不足:体积小巧、成本低廉、易于使用,兼顾课堂教学亦可用作快速方案验证与原型开发,与验证性实验相比具有趣味性和探索性;相较于ARM7、ARM9、ARM11,实验系统使用的双核ARM Cortex-A7构架更先进、性能更强大,且嵌入式平台实现的视觉反馈控制在机器人、无人机、智能安防监控等前沿领域有应用前景,具有新颖性和实用性;综合运用了嵌入式系统、数字图像处理、程序设计、自动控制、计算机网络等专业知识与技能,具有综合性和连贯性。
[1] 施乐平, 杨征宇,马宪民,等. ARM嵌入式系统综述[J]. 中国测试, 2012,38(z):14-16.
[2] 冯 源,刘晓虎,夏 立. 基于ARM平台的嵌入式技术综合设计实验教学[J]. 实验室研究与探索, 2014,33(9):205-235.
[3] 罗 勇,李高杰. 基于NFS的嵌入式系统ARM实验教学平台设计[J]. 实验室研究与探索, 2015,34(10):89-107.
[4] 鄢秋荣, 王玉皞, 王艳庆, 等. 面向软硬件协同设计的嵌入式系统教学改革与实践[J]. 实验室研究与探索, 2016,35(6):190-193.
[5] 陆志伟,王明革,赵瑞海. 计算机视觉技术的研究与应用[J]. 数字技术与应用, 2016(3):109.
[6] XU Fen, ZENG Jian-jun, ZHANG Yun-long. Design of a DSP-based CMOS imaging system for embedded computer vision[C]//2008 IEEE Conference of Cybernetics and Intelligent System, 2008:430-433.
[7] Luca Maggiani, Claudio Salvadori, Matteo Petracca,etal. Reconfigurable FPGA architecture for computer vision application in smart camera networks[C]//Seventh ACM/IEEE International Conference of Distributed Smart Cameras, 2013:1-6.
[8] 张 涛,王建魁,张国山,等. 基于Cortex-A8的嵌入式车牌识别系统设计[J]. 电子设计工程, 2015,23(9):167-170.
[9] Paul Viola, Michael Jones. Rapid object detection using a boosted cascade of simple features[C]//Computer Vision and Pattern Recognition, 2001:511-518.
[10] 郭 磊,王秋光. Adaboost人脸检测算法研究及OpenCV实现[J]. 哈尔滨理工大学学报, 2009, 14(5):123-126.
[11] 陈国荣,向 毅. “嵌入式软件和系统”专业教学改革思路探索[J]. 重庆科技学院学报(社会科学版),2009(12):203-204.
[12] 王宝珠,刘 伟. 基于ARM11的视频图像中运动物体检测跟踪系统[J]. 电子设计工程, 2012, 20(24):168-174.
[13] 方 华,郭 静,田敬北. 基于OpenCV的嵌入式图像处理平台的构建[J]. 无线互联科技, 2015(3):53-54.
[14] 汪 洋,李 垚,黄 鲁. 基于Qt和OpenCV的无线视频监控系统[J]. 微型机与应用,2015(10):67-69.
[15] 姚宇乐,陈 强,张九卫,等. 基于ARM920T的嵌入式图像处理平台搭建及应用[J].计算机系统应用, 2016(7):208-212.
Development of a Native Buildable Embedded Computer Vision Experimental System
PENG Peng, CHEN Yao, XU Zhiyu, YU Youling
(College of Electronics & Information Engineering, Tongji University, Shanghai 201804, China)
This paper develops a native buildable low-cost modular embedded computer vision experimental system named “CV-Innovator”. In the hardware aspect, this experimental system was composed as follows: an ARM Cortex-A7 dual-core SoC Allwinner A20 used as embedded processor; an OV7670 CMOS digital camera module collects real-time image; a 7-inch TFT-LCD monitor as well as a set of keyboard and mouse with USB port provide friendly human-machine interaction. In the software aspect, we build an embedded Linux OS for “CV-Innovator”, so the OpenCV and Qt based computer vision application program can be developed and run under the embedded Linux. When a prototype was made, we designed a face detection example application program. The example results validated the effectiveness of “CV-Innovator”, and system can be used in practice teaching of the computer science, electronic information, automation, etc.
embedded systems; computer vision; experimental system
2016-11-19
国家自然科学基金(71401125);上海市重点课程建设项目,同济大学第11期实验教改项目、第8期精品实验项目。
彭 澎(1994-),男,云南昆明人,硕士生,从事嵌入式系统开发、电子系统设计研究。
Tel.: 021-69589241;E-mail: 1631552pp@tongji.edu.cn
徐志宇(1982-),男,山西太原人,博士,高级工程师,硕导,从事智能自动化应用研究。
Tel.: 021-69584663;E-mail: xuzhiyu@tongji.edu.cn
TP 37
A
1006-7167(2017)08-0133-04