作者/ 韦笠 陈锐 毛颖 王曰海 浙江大学 信息与电子工程学院(浙江 杭州 310027)
摘要:跟着嵌入式系统的开展,咱们现已越来越离不开它们。本文规划了一个依据Xilinx ZYNQ渠道硬件加快的体感游戏。首要,咱们完成了手势方向操控贪食蛇游戏,该游戏通过进行肤色检测、手势盯梢并剖析轨道,来操控贪食蛇的方位。然后,咱们完成了用verilog言语编写的运转在FPGA上的肤色学习和辨认算法。终究,软件游戏调用依据AXI总线的协议与硬件加快单元通讯,肤色辨认算法运转时刻减少了43.2713%,达到了加快的作用。
前语
嵌入式系统开展至今,已被广泛运用在手机、手环、平板电脑等设备上。可是,因为其中央处理器处理功用有限,异构处理越来越遭到重视。异构处理是将通用处理器(如ARM芯片)与数字信号处理器(DSP,Digital Signal Process)、现场可编程门阵列(FPGA,Field Programmable Gate Array)协同处理。有观念以为,跟着运用的改动、需求的增加以及技能的开展,异构多核必将成为未来多核的开展干流[1]。
Xillinx公司推出的Zynq-7000系列全可编程片上系统(SoC, System on Chip)便是这样的异构芯片。它集成ARM Cortex A9双核和FPGA芯片,为两者协同处理供给了或许。以图画处理为例,运用FPGA+ARM协同处理比单纯运用ARM处理器进行直方图均衡化、Sobel边际检测和3×3中值滤波别离进步了5.5倍、2.4倍和10.9倍[2]。可见,ARM+FPGA的处理架构在图画处理上有很大的潜力。本文以Zynq系列的Zybo开发板为渠道,规划了一个手势操控的贪食蛇游戏。
1 硬件部分
1.1 硬件架构
本项意图方针在于硬件加快,即让FPGA承当一部分图画处理的使命。为了让整个系统协同工作起来,就需求在Cortex-A9核和FPGA逻辑资源之间树立通讯的通道,这条通道便是AXI总线。终究咱们挑选了Xillybus公司的Xillybus Lite总线[3]。在架构上,它是坐落AXI总线[4]之下的一个通讯协议。系统架构如图1所示,硬件部分全体结构如图2所示。
从Linux系统到FPGA部分的全体结构图如图2,在Linux系统中别离编写了两个设备的驱动文件:xillybus_write_32 和xillybuf_read_32,用于与xillybus_lite总线进行通讯。Linux系统向xillybus_write_32设备中传入数据流,数据流位宽为32bit,通过AXI总线和xillybus_lite总线传入FIFO1,抵达肤色辨认IP核模块,由肤色辨认发生肤色判别成果,并将成果传入FIFO2,然后通过xillybus_lite总线协议和AXI总线协议,抵达xillybus_read_32设备文件,在Linux系统中能够从xillybus_read_32设备文件中读出。
1.2 肤色辨认算法
皮肤模型中有单高斯、混合高斯[5]、贝叶斯模型和椭圆模型等。通过前人学者很多的皮肤核算信息能够知道,假如将皮肤信息映射到YCrCb空间,这些皮肤像素点近似成一个椭圆散布[6]。因而,假如咱们得到了一个CrCb的椭圆,下次来一个坐标(Cr, Cb)咱们只需判别它是否在椭圆内(包含鸿沟),假如是,则能够判别其为皮肤,不然便对错皮肤像素点[7-8]。
因而,咱们采集了肤色的样本点,将其投影到此平面,投影后,进行了相应的非线性改换K-L[9]改换,从而构成核算椭圆模型如图3(a)所示。
因为在FPGA中完成乘除法器比较费事,且会引进较大的时延,因而,咱们用一幅图画来存储这个椭圆,而不是直接选用椭圆数学方程。该图画是二值图画,即椭圆区域内部为白色,其它地方为黑色。当其需求判别其它像素点时,只需将该像素点转化成Cr、Cb两个坐标,然后在上面的椭圆中找到该坐标的值,假如非0,则为皮肤,反之亦然。椭圆模型的二值图画如图3(a)所示。在FPGA中,咱们运用了一个位宽为1bit,深度为65536bit,地址线宽为16bit的ROM核来存储这张图片。如图4所示。
1.3 肤色辨认算法的完成
因为肤色辨认算法在YCrCb空间中可近似用椭圆模型进行模仿,因而,要先将RGB空间的像素点转化到YCrCb空间。 转化公式如下:
Y =(0.257 * R) + (0.504 * G) + (0.098 * B) + 16
Cr=(0.439 * R) – (0.368 * G) – (0.071 * B) + 128
Cb=-(0.148 * R) – (0.291 * G) + (0.439 * B) + 128
因为触及到了浮点数的乘法,现将系数整形化。即在上述公式中左右各乘以1024,即左移10位。
Y << 10 = (12’d263 * R) + (12’d516 * G) + (12’d100 * B) + 24’d16384
Cr << 10 = (12’d450 * R) – (12’d377 * G) – ( 12’d73 * B) + 24’d131072
Cb << 10 = -(12’d152 * R) – (12’d298 * G) + (12’d450 * B) + 24’d131072
因为这儿用到了9次12bit和8bit的乘法,所以就用了9个12bit和8bit的乘法器。
图5是RGB转YUV部分的仿真图,能够看到,转化基本是正确的,可是从RGB转到YUV有三个时钟的时延。从RGB转到YUV有三个时钟的时延,由YUV从ROM核中得到肤色判定成果有2个时钟的时延,所以从RGB值传入肤色判定IP核到得到肤色判定成果有5个时钟的时延。
图6是肤色检测模块实测的作用,除了背面的柜子因为比较挨近肤色,有必定的误判,能够以为作用还不错。
2 软件部分
咱们先在Zybo上装备从SD卡发动的嵌入式Xilinux系统,并编译了OpenCV2.4.10的源码,这样就能够运用OpenCV的视觉库函数了。
在软件代码部分,首要运用肤色模型切割手部,并追寻手部运动轨道,依据手部极点运动轨道判别出手势运动方向。过程如下:
1)关于每一帧输入的图画,首要进行中值滤波等预处理,然后运用肤色模型切割出手势部分。肤色模型首要是先将图画转化到YCrCb空间,然后依据肤色在YCrCb空间的椭圆散布来判别归于肤色的像素点,并构成肤色二值化图画。
2)通过一些图画去噪和形态学腐蚀胀大操作去掉一些较大的噪点。假定图画区域没有头部的搅扰,那么面积最大的概括即为手部,确认手部概括后,找到中心点和极点(即概括中纵坐标最小的点,即最靠上方的点)。
3)确认轨道和判别方向,将方向参数传递给游戏部分即可。方向参数的确认首要依据相邻两帧的极点坐标值。判别逻辑如图7所示。
游戏部分,如图8(a)所示,每次接收到判别出的手势方向后改动蛇的方向即可。贪食蛇的行进是运用rectangle函数一桢一帧画出来的,画果实运用了circle函数,随机生成果实运用了cvRandInt函数,充分运用了OpenCV的绘图功用。
3 试验成果
咱们运用C言语的time函数库来核算运转肤色辨认代码段的时刻。以处理480*640的五颜六色视频流为例,核算运算50帧的均匀耗时,并核算了10组,求终究均匀数。纯软件肤色辨认代码运转的均匀耗时为223982.611µs,有硬件加快的肤色辨认算法运转时刻是127062.454µs,耗时减少了43.2713%,达到了硬件加快的作用。
有研讨者在Zynq渠道上规划了一个依据肤色辨认的人脸检测算法,运用了硬件加快。仿真成果表明,运用硬件加快可进步80%的功率[10]。可见,规划达到了硬件加快的作用,也还有值得改善的空间。
4 结束语
本文规划了一个依据Zynq渠道硬件加快的体感游戏,内容包含软件程序编写、硬件算法规划和系统硬件加快。咱们对肤色辨认算法的硬件加快,使这部分运转时刻减少了43.2713%,提升了系统功率,达到了加快的意图。
依据FPGA的异构核算仍有很大的潜力,包含算法在硬件渠道上的移植、硬件软件部分的交互、系统功用的提升等。关于嵌入式系统的开展,异构核算有着久远而重要的含义。
参考文献:
[1]陈芳园,张冬松,王志英.异构多核处理器系统结构规划研讨[J].核算机工程与科学,2011,12:27-36.
[2]刘宏,符意德.依据Zynq芯片的图画处理系统渠道规划[J].核算机与现代化,2015,08:43-47.
[3]Lin Z, Chow P. Zcluster: A zynq-based hadoop cluster[C]//Field-Programmable Technology (FPT), 2013 International Conference on. IEEE, 2013: 450-453.
[4]高伟林,曹峰,佟川,等.依据Zynq的图形生成电路规划与完成[J].液晶与显现, 2014, 29(6): 944-949.
[5]Vezhnevets V, Sazonov V, and Andreeva A. A survey on pixel-based skin color detection techniques. In Graphicon, Moscow, Russia, 2003: 85–92.
[6]Bojic N and Pang K K. Adaptive skin segmentation for head and shoulder video sequences. Visual communications and Image Processing, SPIE, 2000, 4067: 704-711.
[7]Huynh-Thu Q, Meguro M, Kaneko M. Skin-color extraction in images with complex background and varying illumination[C]//Applications of Computer Vision, 2002.(WACV 2002). Proceedings. Sixth IEEE Workshop on. IEEE, 2002: 280-285.
[8]学习OpenCV——肤色检测:椭圆模型 (&最大连通区域). http://blog.csdn.net/yangtrees/article/details/8269984.2012-12-07/2016-05-01.
[9]章毓晋.图象工程(上)[M].北京:清华大学出版社.1999: 68-70.
[10]T. Han, G. W. Liu, H. Cai and B. Wang, "The face detection and location system based on Zynq," Fuzzy Systems and Knowledge Discovery (FSKD), 2014 11th International Conference on, Xiamen, 2014, pp. 835-839.
本文来源于我国科技期刊《电子产品世界》2016年第10期第50页,欢迎您写论文时引证,并注明出处。