APP下载

嵌入式灾区救援搜寻系统设计与实现

2017-11-02胡嘉航

软件导刊 2017年10期
关键词:图像识别嵌入式

胡嘉航

摘要:灾区现场环境复杂,救援工作具有极大难度,特别在火场、震区等情况下,人工搜寻极其不便。设计了一种基于ARM的嵌入式救援搜寻系统,搭配小型飞行器等救援机器人,利用COFDM调制技术,实现系统与上位机的通信,实时传输视频图像数据,并采用红外感应及人脸识别等功能,协助进行搜寻工作。实际测试结果表明,救援搜寻系统具有一定实用价值,在复杂环境中能够有效地进行搜救工作。

关键词:救援搜寻;嵌入式;COFDM;红外感应;图像识别

DOIDOI:10.11907/rjdk.171612

中图分类号:TP319文献标识码:A文章编号:16727800(2017)010012303

0引言

在火场、震区等灾区中,救援搜寻工作具有较大难度,如何在保证救援人员安全的情况下进行快速的救援搜寻成为一个亟需解决的问题。在这种情况下,使用救援机器人协助进行搜救已经成为一个趋势,它能够进入人体无法穿越的狭小区域进行快速搜寻,并借助搭载的摄像头实时传输视频图像。本文提出了一种基于ARM高级精简指令集计算机的救援搜寻系统,同时配备红外感应和人脸识别功能,以便于在黑暗中采集视频图像协助进行搜救工作,搭载的无线传输模块能够在较复杂的环境中顺利进行数据传输。

1系统整体框架

救援搜寻系统主要完成在目标环境中现场视频图像的传输、存储及识别,由无线传输模块、视频图像采集模块、64位四核ARM处理器Cortex-A53以及上位机软件组成,系统框架如图1所示。图像采集模块采集现场视频图像数据,传输给Cortex-A53处理器进行编码处理,处理器通过无线传输模块实时传输视频流数据给救援人员所持的上位机软件。在上位机软件中,设置有辅助搜救的人脸识别功能,以协助救援人员进行搜救工作。

图1救援搜寻系统框架

1.1图像采集模块

图像采集模块由两部分组成,分别是用于采集接收视频图像的摄像头模块和用于适应救援环境的红外感应电路模块。摄像头模块可以单独工作,在红外感应电路模块中,设置的可调节电阻用于配合光敏电阻设置该模块开启的光照强度阈值,以适应实际救援环境。同时,设置3W大功率感光红外灯用于黑暗环境中的图像视频采集工作。

在图像视频采集结束后,需要在主控芯片Cortex-A53中对其进行编码操作,由于H.264编码标准为现今主流的视频编解码标准[1],因此本文选定的图像编码方式以H.264为基础。段书强[2]认为,在救援工作中,对单画面的清晰度要求相对较高,并且MPEG-4能够在提供较高压缩比的同时,实现较小的数据损失,其采用帧间压缩,仅存储连续帧之间有差别的地方,而H.264的性能通过增加其算法的复杂度得到提升;陈曦[3]、孙金庆[1]认为,在复杂环境中,首先需要保证的是数据传输通畅,而H.264具有较强的网络适应性,能够通过增加不同的NAL头片适应网络需求,减少码流传输误差,在网络状况较差的情况下,较其它编码方式具有极大优势,可保障动作的连贯性与清晰度。通过对比编码特点,本文采用H.264作为救援搜寻系统的编码标准。

由于救援环境较为复杂,无线传输环境较差,可能导致视频图像在传输过程中出现传输距离受阻以及数据丢包现象。为解决该问题,可在对图像进行编码的同时,进行图像的连续行检测。由于拍摄的图像之间必然存在相同画面,则可以在上一帧图像的基础上对下一帧图像进行编码处理,识别出静态图像及动态图像,分别进行编码传输,以减少数据丢包带来的影响。

此处使用0V5647感光芯片,500万像素的高清摄像头,具有调焦功能,传感器支持的最佳像素为1 080p。

1.2Cortex-A53处理器

Cortex-A53处理器为64位4核处理器,具有较好的性能,其工作频率为1.2GHZ,能够轻松运行Linux系统,可用于各类小型嵌入式功能的开发与应用。

1.3无线传输模块

如今,无线图像传输方式主要有模拟传输、数字电台传输、GPRS/CDMA传输、无线局域网传输以及多载波COFDM调制技术[4]。其中,模拟传输技术无法在阻挡环境中和移动中使用;数字电台、GPRS/CDMA技术有效传输速率较低,一般在100Kbps以下,无法传输高质量的连续图像,并且需要覆盖式的专用网络,无法在震区使用;无线局域网技术为单载波调制体制,绕射能力较差;多載波COFDM调制技术传输速率较高,具有较好的绕射及穿透能力。

综上所述,在复杂环境中,由于无线信号传输受到严重干扰,无线传输模块采用COFDM多载波调制技术。其中,COFDM需要使用信道编码和OFDM调制技术,信道编码可以使用卷积码,而OFDM调制技术是使调制的各个子载波间可以相互重叠,且之间具有正交性[5]。其编码调制流程如图2所示。

由于2.4GHZ频段为公共开放频段,因此选择2.4GHZ为无线传输模块的频率区域。

其中,卷积码前后码组具有相关性,即卷积码编码后的n个码元不仅与当前段的k个信息有关,而且与前面(N-1)(N为编码约束度)段的信息有关。其中,k个信息比特也被编成n个比特的码组,但k和n通常很小,并且可以通过串行或并行方式进行传输,而且时延很小[6]。

OFDM调制将高速率的串行数据流通过串并转换成N路的并行低速率的子数据流,再进行IFFT运算,并插入循环前缀即可生成一个OFDM信号。插入保护间隔是为了分离相邻码元,防止码间干扰。在上位机获得传输的数据流后,可以通过去除添加的保护间隔,并对数据进行并串转换和FFT处理后,还原得到OFDM的调制信号。

H.264编码压缩芯片采用Hi3510,OFDM调制载波芯片采用LME2980,无线收发器使用E01-ML01DP5 2.4G无线模块。endprint

1.4上位机软件

上位机软件分为两部分,一部分用于控制搜救机器人,此处不进行讨论,另一部分则用于接收视频图像并进行处理。在上位机接收到无线传输模块发送的数据包后,需要先对其进行编码解调,获得所需图像。

在上位机软件中,配置有人脸识别功能用于协助救援人员搜寻被困人员,以免出现搜救工作的遗漏。使用人脸识别功能需要先进行Opencv的安装,Opencv是一个开源的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法,轻量级且高效,十分适合于安装在微型嵌入式计算机上。由于人脸识别需要对每一帧图像进行处理,因此使用支持多线程、轻量级的Linux系统对于小型嵌入式系统是最佳选择。在Linux系统上安装Opencv的命令如下:

sudo apt-get install python-opencv

人脸识别的内容包括[7]:①图像预处理,用于消除因救援环境造成的光照等外界因素对识别精确度的影响;②特征提取,为人脸识别提供几何特征等基础信息;③对比识别,将获得的人脸特征与人脸数据库或人脸识别分类器进行对比,若特征相匹配,则认为是人脸图像。其运行流程如图3所示。

在Opencv中,自带有关人脸识别的人脸检测分类器XML文件,因此本文使用其自带的XML文件进行实验测试。以下为用python实现的人脸识别的关键代码:

face_cascade = cv2.CascadeClassifier('/home/opencv-2.4.9/data/haarcascades /haarcascade_frontalface_alt.xml')

### Utils ###################

def get_faces( img ):

gray = cv2.cvtColor( img, cv2.COLOR_BGR2GRAY )

faces = face_cascade.detectMultiScale( gray )

def draw_frame( img, faces ):

global xdeg

global ydeg

//在脸的附近画上矩形框用于辅助识别

for ( x, y, w, h ) in faces:

cv2.rectangle( img, ( x, y ),( x + w, y + h ), ( 200, 255, 0 ), 2 )

tx = x + w/2

ty = y + h/2

//矩形框的大小,代码省略

### Main ###################

if __name__ == '__main__':

//开启4个线程池,以提高图像处理速度

pool = mp.Pool( processes=4 )

fcount = 0

camera.capture( rawCapture, format="bgr" )

r1 = pool.apply_async( get_faces, [ rawCapture.array ] )

r2 = pool.apply_async( get_faces, [ rawCapture.array ] )

r3 = pool.apply_async( get_faces, [ rawCapture.array ] )

r4 = pool.apply_async( get_faces, [ rawCapture.array ] )

f1, i1 = r1.get()

f2, i2 = r2.get()

f3, i3 = r3.get()

f4, i4 = r4.get()

rawCapture.truncate( 0 )

for frame in camera.capture_continuous( rawCapture, format="bgr", resize=(320,240),use_video_port=True ):

image = frame.array

//fcount表示当前线程标号,输出当前图像,并获取下一个线程进行绘制

if fcount == 1:

r1 = pool.apply_async( get_faces, [ image ] )

f2, i2 = r2.get()

draw_frame( i2, f2 )

//若fcount为4,则置为0,以上为fcount为1时的代码,其余情况的代码省略

fcount += 1

rawCapture.truncate( 0 )

2测试结果与分析

2.1视频图像及人脸识别测试结果

为验证提出的嵌入式救援搜寻系统的性能,首先对视频图像的采集及处理进行测试,测试内容分别为正常光照下和黑暗环境下的视频图像采集,以及人脸识别功能的可靠性。

图4(a)为正常光照条件下的图像数据,图4(b)為黑暗无光条件下采集的图像数据。通过观察对比图像,可以发现在黑暗环境中,搜寻系统依然能够采集较清晰的环境视频图像,达到了搜寻系统的设计要求。

图5为人脸检测的实际效果图,其中图5(a)为单独进行人脸检测的图片实验效果,图5(b)为搜寻系统工作时其中一帧的视频图像。观察实际图像处理效果可以发现,其人脸检测精度能够满足救援搜寻系统的设计要求,达到了辅助搜寻受困人员的目的。endprint

2.2无线传输距离测试结果

由于提出的嵌入式救援搜寻系统主要应用于救援工作,因此需要在复杂环境下对其进行有效传输距离的测试。实验地点设置为通道狭小、具有多墙面障碍的室内环境,模拟在救援工作中救援人员的操作。由于室内面积较小,因此无法测试大范围内的信号传输质量。经初步测试,数据有效传输距离超过400m,视频图像无明显卡顿、掉帧现象,能够完成小范围内的救援搜寻工作。

3结语

本文基于ARM处理器和Linux操作系统,使用图像采集模块、无线传输模块以及上位机软件,实现了基于嵌入式的救援搜寻系统设计。针对在进行救援工作时,由于处于复杂环境造成的无线数据传输困难的情况,使用COFDM多载波调制技术,强化数据信号的绕射及穿透能力,达到了远程实时获取救援现场环境视频图像数据的目的。实验结果表明,设计的救援搜寻系统能够一定程度上在保障救援人员安全的前提下,完成小范围内的搜寻工作,具有一定实用价值。

参考文献:

[1]孙金庆.火场环境下视频编码与视频传输系统设计[D].济南:山东大学,2016.

[2]段书强.井下远程数据传输与处理系统研究[D].西安:西安工程大学,2011.

[3]陈曦.一种井下多媒体无线通信网络的开发[D].西安:西安电子科技大学,2011.

[4]隋虎林,邱岩松.基于多载波调制技术的火场图像传输系统[J].消防技术与产品信息,2007(8):3233,59.

[5]歐阳玉梅,刘盛宇.无人机数字图像传输系统设计[J].科技视界,2016(27):137,161.

[6]何小敏.卷积码编码与维特比译码加速器设计[D].北京:北京邮电大学,2010.

[7]刘爽.嵌入式人脸识别系统的设计与实现[J].微电子学与计算机,2012(3):174177.

[8]姚东明,马川,于溪,等.一种高效的人脸马赛克方法[J].软件导刊,2017(3):167169.

[9]王道强.基于COFDM的无线视频监控系统的设计与实现[D].广州:华南理工大学,2011.

[10]王道强,蔡敏,段滢.基于COFDM的无线视频监控系统的设计与实现[J].移动通信,2011(12):6972.

[11]李振华,陈仕敏,唐光波,等.基于无线控制的消防侦察车[J].电子世界,2017(5):4950.

[12]廖广军.复杂条件下的人脸检测与识别应用研究[D].广州:华南理工大学,2014.

责任编辑(责任编辑:黄健)endprint

猜你喜欢

图像识别嵌入式
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
TS系列红外传感器在嵌入式控制系统中的应用
图像识别在物联网上的应用
嵌入式系统通信技术的应用
图像识别在水质检测中的应用
搭建基于Qt的嵌入式开发平台
浅谈模式识别在图像识别中的应用
嵌入式软PLC在电镀生产流程控制系统中的应用
基于多组合内容的图像识别机制