影像科学与光化学  2015, Vol. 33 Issue (6): 503-512   PDF (4900 KB)    
车载无人机遥感图像采集与地面显示模块设计
彭彬彬1,2, 关桂霞1, 赵海盟2 , 晏磊2, 谷静博1,2    
1. 首都师范大学 信息工程学院, 北京 100048;
2. 北京大学 空间信息集成与3S工程应用北京市重点实验室, 北京 100871
摘要:针对车载无人机遥感系统中实时影像数据获取的问题,设计并实现了基于嵌入式平台的图像采集模块。以ARM微处理器和嵌入式Linux操作系统为主控核心,详细介绍了系统的整体设计架构及软硬件的实现。在完成成像设备驱动移植的基础上,基于V4L2编写数据采集程序,实现视频动态显示与图像的采集存储;基于LCD触摸屏和Qt/Embedded工具设计图像数据采集控制终端,实现拍摄控制与参数设置等功能。系统软硬件联调与实验结果表明:该系统可以通过控制终端控制成像设备完成图像采集任务,并能将所采集数据实时保存至存储设备中,实现了友好的人机交互,达到了预期效果。
关键词无人机     图像采集     嵌入式Linux     ARM处理器     Qt/Embedded    
Design of Remote Sensing Image Acquisition and Display Module for Vehicle-mounted UAV
PENG Binbin1,2, GUAN Guixia1, ZHAO Haimeng2 ,YAN Lei2, GU Jingbo1,2    
1. College of Information Engineering, Capital Normal University, Beijing 100048, P. R. China;
2. Beijing Key Lab of Spatial Information Integration &3S Application, Peking University, Beijing 100871, P. R. China
Abstract: Aiming at the problem of real-time image data acquisition in vehicle-mounted UAV(Unmanned Aerial Vehicle) remote sensing system, the image acquisition module was designed and implemented based on embedded platform. The hardware system took ARM(Advanced RISC Machines)microprocessor as control core based on embedded Linux. The overall design architecture and realization of hardware were introduced in detail. The video dynamic display based on V4L2 (Video for Linux 2)and the realization of image acquisition were presented after the completion of camera driver transplantation. Monitoring terminal of image dataacquisition was designed using Qt/Embedded tools and based on LCD ( Liquid Crystal Display) and achieved the function of shooting control and parameter setting.The results of both software and hardware debugging and experiments indicate that the system can accurately control the imaging device and can also storage the image data into memory devices,realized friendly human-computer interaction and achieved the desired effect.
Key words: unmanned aerial vehicle     image acquisition     embedded linux     ARM processor     Qt/Embedded    

无人机遥感技术是利用先进的无人驾驶飞行器技术、传感器技术、数据传输技术、GPS定位等先进技术,快速获取遥感信息,并完成遥感数据的处理、建模、分析的应用技术[1]。无人机遥感技术可以对特殊、紧急事件作出快速反应,发挥出无人机灵活、快速、机动等独有优势[2]。车载无人机遥感是把无人机遥感与野外实时现场决策结合起来的一种新技术,不仅要完成无人机航拍检测的功能,还要实时与车载控制中心进行信息交互,发挥临场重大决策的功能。目前现场指挥车实时控制在某些大型野外作业、城市重大活动应急中有所使用,但是没有和无人机遥感结合起来,功能比较单一。有一些能利用无人机进行实时监控,但是又缺乏专业的遥感影像数据实时分析以及临场决策等功能[3]

本文所涉及到的车载无人机遥感系统,以地面指挥车作为控制中心,能够快速的进行现场信息的采集以及预处理,机动性、灵活性很强。无人机搭载数据获取模块、无线收发模块、导航模块等必要的载荷进行航飞,并将获取的数据实时下传至地面指挥车,车内指挥人员根据获取到的数据可以临场决策,发出有效命令给无人机载荷端,例如调整无人机相机载荷的各个参数,以获取高质量的遥感图像等[4]

车载无人机遥感系统包含无人机平台、遥感载荷平台、卫星通信、普通无线通信、地面数据获取与分析、大屏幕信息融合以及众多的环境传感器和其他物联信息的控制[5]。本文设计并实现了车载无人机遥感载荷系统中前置相机的数据获取、控制和存储功能模块以及车载地面控制端遥感影像实时显示与控制功能模块。

针对车载无人机遥感的特点,本系统前置相机的控制与数据采集系统以ARM作为主处理器,结合外围必要电路完成系统功能。地面车载控制与显示系统中采用基于Qt/Embedded设计的图形采集控制界面。系统以嵌入式Linux作为操作系统,最大程度的保证系统的可靠性与稳定性[6],最终实现图像数据的快速获取、实时下传以及对载荷相机的远程控制。

1 系统总体设计

系统主体分为两大部分,分别为车载地面控制端和无人机载荷端。其中,无人机端搭载飞行控制电路、图像数据传输系统、图像采集系统、GPS导航系统以及其他必要传感器系统。地面控制端主要负责完成对无人机飞行状态以及无人机相关载荷的控制,例如根据不同观测区域对相机参数进行实时设置与调整等。本文主要基于嵌入式ARM处理器,设计并实现无人机端图像实时采集系统,并基于Qt/Embedded设计实现了用于控制载荷相机的用户界面,通过无线通讯系统,将用户输入指令发送至无人机端的相机载荷,最终实现对相机载荷远程控制。

整个系统的架构图如图1所示:

图1 系统总体架构图 The overall architecture of the system

在整个系统中,无人机载荷的图像采集系统为本文的主要设计部分,主要思路是基于嵌入式ARM处理器编写应用程序,控制外部成像设备,完成图像数据采集,并经数据总线将其写入存储设备,同时根据需要完成数据的实时下传。另外,基于Qt/Embedded设计实现地面控制端中的成像控制系统,它是整个系统人机交互的重要组成部分,是用户与系统进行交流的接口,地面指挥人员可通过成像控制系统完成对图像采集系统的控制,如设置成像设备的基本控制信息、设置分辨率、选择拍摄模式等。

系统设计中,考虑到软件是在基于Linux操作系统的PC机上进行设计,而最终的数据采集系统需要运行于开发板,因此,选择采用宿主机与目标机相结合的交叉开发模式:即在主机上设计、编译软件,调试成功后再在目标板上运行、验证[7]。整个系统的软硬件架构图如图2所示。

图2 系统软硬件架构 The software and hardware architecture of the system
2 基于V4L2的图像采集系统设计 2.1 成像设备驱动分析

Video4Linux(简称V4L)是Linux中关于视频设备的内核驱动模块,是在Linux系统下进行图像视频系统开发的核心,它为驱动程序的编写提供了统一的接口。V4L为双层架构,上层是V4L提供给程序开发人员APIs的应用层,下层是提供硬件支持的图像设备驱动。V4L应用层对图像设备的操作是通过一组数据结构和相对应的 IOCTL函数实现的。每一个数据结构都对应一个 IOCTL函数来实现特定的功能。V4L给驱动程序编写提供极大方便,同时方便了应用程序的编写和移植。V4L2是V4L的升级版本,由于使用的开发板不再支持V4L,因而本系统的设计采用V4L2[8]

在Linux系统下,所有的外部设备都像普通文件一样被访问。但是应用程序不能直接读写硬件的物理地址,必须借助驱动程序切入操作系统内核来实现对这些物理地址的访问[9]。驱动程序向应用程序屏蔽了硬件实现的细节,使得应用程序可以使用标准的系统接口函数完成对硬件设备的打开、关闭和I/O控制操作。由于本系统的设计处于实验阶段,所以选择较为简单的USB高清摄像头作为成像设备,在V4L2中提供了关于成像设备的基本操作函数open、read、write、close以及对I/O通道的控制接口函数ioctl的实现等。

2.2 图像采集软件设计

图像采集软件设计的主要思路为调用V4L2提供的接口函数完成图像的采集。图像采集的工作主要包括成像设备的打开与初始化、图像的采集、图像格式转化、关闭设备等。图像数据获取程序的整个处理流程如图3所示。

图3 图像采集流程图 The whole process of image acquisition
2.2.1 打开设备并初始化

当USB摄像头与控制核心成功连接时,会生成设备文件/dev/video0,使用V4L2提供的接口函数open函数就可以将其打开,返回值是设备的文件描述符。具体调用如下:

fd = open(“/dev/video0”, O_RDWR)

Open函数首先检测成像设备的驱动是否正确注册,若满足则进行后续操作,否则返回错误信息,释放内存。当检测到驱动运行正常后,open函数将对设备的传感器和解码模块进行初始化,并在此基础上初始化URB(USB Request Block),最后启动摄像头,采用同步传输的方式进行数据传输。整个过程如图4所示。

图4 Open函数工作流程 The working process of open function

当设备被成功打开之后,我们就可以通过调用ioctl函数和VIDIOC_QUERYCAP接口命令查询摄像头的相关信息,在结构体v4l2_capability中包括了驱动名称driver、card、bus_info、version以及属性capabilities等。使用命令VIDIOC_ENUM_FMT,可查询摄像头所支持的像素格式,获取到的信息通过结构体v4l2_fmtdesc查看。根据查询到的相关信息,还要对摄像头成像格式进行设置,命令为VIDIOC_S_FMT,通过结构体v4l2_format把图像的像素格式设置为V4L2_PIX_FMT_YUYV,另外还包括图像高度、宽度的设置。设备的打开及初始化主要涉及以下几个函数:

fd = open(FILE_VIDEO, O_RDWR);

ioctl(fd, VIDIOC_QUERYCAP, &cap);

ioctl(fd,VIDIOC_ENUM_FMT,&fmtdesc);

fmt.fmt.pix.pixelformat=V4L2_PIX_FMT_YUYV;

fmt.fmt.pix.height=IMAGEHEIGHT;

fmt.fmt.pix.width=IMAGEWIDTH;

ioctl(fd, VIDIOC_G_FMT, &fmt);

其中,fmt是由v4l2_format定义的结构体,v4l2_format结构体是在系统中的头文件/usr/include/linux/videodev2.h中定义的,包含的主要内容为成像设备获取到的图像的格式信息。

2.2.2 图像数据采集

获取图像数据的第一步工作是申请缓存,使用参数VIDIOC_REQBUFS和结构体v4l2_requestbuffers。v4l2_requestbuffers同样在系统函数的头文件中定义,该结构中定义了缓存的数量,系统会据此申请对应数量的视频缓存,缓存申请的函数如下所示。

ioctl(fd,VIDIOC_REQBUFS,&req);

buffers = malloc(4*sizeof (*buffers));

当缓存申请完成后,需要获取每个缓存的信息,并通过mmap函数将其映射至内存。定义buffer结构体用来存储内存映射的地址信息,结构体的定义如下。

struct buffer

{

void * start;

unsignedint length;

} * buffers;

获取缓存信息并映射至内存的实现函数如下,其中buffers[n_buffers].start的地址处就是图像数据存放的位置。

buffers[n_buffers].start = mmap(NULL,buf.length,PROT_READ |PROT_WRITE, MAP_SHARED, fd, buf.m.offset);

当以上工作完成后,就可通过VIDIOC_STREAMON命令开始进行图像的采集,并使用命令VIDIOC_DQBUF读取缓存中的数据,函数如下。

ioctl (fd, VIDIOC_STREAMON, &type)

ioctl(fd, VIDIOC_DQBUF, &buf);

图像数据获取的整个过程如图5所示 。

图5 图像数据获取过程 The process of image data acquisition
2.2.3 图像格式的转换

由于摄像头获取的原始数据格式为YUV格式,为了方便观察,需要将数据格式转变为RGB格式,并将转换完成的数据存储到frame_buffer中。YUV到RGB颜色空间转换关系是:

R=Y+ 1.042(V-28)

G=Y-0.34414(U-128)-0.71414(V-28)

B=Y+1.772(U-28)

因为我们要把采集到的数据保存为图片格式,所以还需将转换为RGB格式的数据存储为BMP格式。BMP文件格式主要由文件信息头、位图信息头、颜色信息和数据信息四部分组成[10],其中文件头主要包含文件的大小、文件类型、图像数据偏离文件头的长度等信息,文件头包含的各个参数及参数的意义如表1所示。

表1 文件信息头各参数及意义 The parameters and significance of the file information header

位图信息头包图像的大小、图像的尺寸信息、图像的压缩类型、图像的分辨率、位图的颜色深度、图像所用的颜色数等信息。与文件头相似,位图信息头也是一个结构体,其参数具体如表2所示,由于位图信息头的参数相对较多,表2中只选择了几个有代表性的参数列出。

表2 位图信息头各参数及意义 The parameters and significance of the bitmap information header

颜色信息包含图像所用到的颜色表,显示图像时需用到几个颜色表来生成调色板,但系统中所采用的摄像头采集到的图像为24位真彩图,因此不需要调整颜色信息。

数据信息表示图像的相应像素值,并按照从左到右、从下到上的顺序进行保存

BMP图像的保存过程如下:首先建立一个.bmp格式的空文件,并将文件信息头数据结构和位图信息头数据结构依次写入到新建的空文件,最后将缓存区的图像数据按照从左到右、从下到上的顺序写入文件中的数据信息区域,这样就可以得到一副标准的BMP图像。

2.2.4 停止采集并关闭设备

当图像采集完成后,使用命令VIDIOC_STREAMOFF停止视频采集,并调用close函数关闭设备,整个函数的实现如下所示。

ioctl(fd, VIDIOC_STREAMOFF, &buf_type);

if(fd != -1)

{

close(fd);

return (TRUE);

}

由以上分析可知,图像采集的整个流程主要包括以下四个步骤:成像设备的打开、图像数据获取、数据格式转化以及成像设备的关闭。成像设备的打开主要完成设备的驱动注册、初始化等,保证成像设备的正常运行;图像数据获取主要包括缓存的申请、内存映射以及数据的存储,完成图像采集的主要工作;数据格式转化的目的是将原始数据保存为标准的图像文件,并保存至存储设备;最后停止采集并关闭设备,完成图像数据的获取与存储。

3 基于Qt/Embedded的控制与显示终端设计 3.1 Qt/Embedded开发流程

Qt/Embedded以原始的Qt为基础,并做出了许多调整,是专门为嵌入式系统设计的图形用户界面的工具包。它可以直接在Framebuffer上显示图形接口,反应的速度更快,这对硬件与容量都有限制的嵌入式环境来说非常重要[11]。它的类库完全使用C++封装,具有丰富的控件资源和良好的移植性。Qt/Embedded采用信号/槽的安全类型来代替callback回调函数,这样各个元件之间的通信工作变得更加简单和灵活[12]。Qt/Embedded程序开发采用交叉编译的方式进行,首先在PC 机上编写应用程序,等调试成功后通过交叉编译器编译链接生成可以在ARM平台上执行的文件,最后将编译过的可执行文件移植到嵌入式平台,另外,为使LCD能够实现触摸功能,应在编译Qt /Embedded源码之前,先编译触屏持库tslib,在此基础上移植应用程序。还可根据需要为应用程序建立.desktop文件,通过此文件为应用程序添加桌面图标,以实现点击图标启动应用程序,方便操作。

Qt /Embedded整个程序的开发流程如图6所示。

图6 嵌入式Qt/Embedded程序开发流程 The development process of Qt/Embedded
3.2 Qt/Embedded图形用户界面设计

设计良好的图形界面可以简化操作,使用户方便地与系统进行交互。本系统选用Qt/Embedded进行图像采集处理终端应用程序的设计,终端界面的每一个按钮都有与其一一对应的槽函数,当按钮被点击时,通过信号与槽机制,对应的槽函数会被触发,实现按钮的功能。控制终端主要功能包括设备的控制、拍摄模式选择、分辨率调节以及图像简单处理等。其中,图像的拍摄可分为自动拍摄和手动拍摄,自动拍摄时还可以根据需要设置不同的拍摄间隔;可根据需要调节图像的分辨率,还可设置为默认分辨率;图像简单处理模块包括图像的放大、缩小、旋转等。系统整体的应用程序是基于主窗口来实现的,整个系统的界面示意图如图7所示。

图7 图像采集系统界面 The interface of image acquisition system

图像采集系统与控制显示终端设计完成后,经编译、调试无误后,将生成的可执行文件分别移植至ARM开发板。位于地面端的控制系统命令的发送及飞机载荷端控制命令的接收都依靠于无线通信系统。无线通信系统传输的数据大体可分为两方面:一方面为无人机以及载荷设备的控制指令,包括相机载荷的参数调整等;另一方面为传输无人机载荷获取到的实时数据。

4 实验及结果分析

设计完成后,在基于Linux的Qt/Embedded环境(基于PC机)下进行了调试,在实验室内部取得了成功,成像效果如图8所示。

图8 PC机端成像效果图 The result of image acquisition based on PC

在PC端测试无误后,将调试好的可执行文件下载至开发板。为了方便操作,在开发板中建立 .desktop文件,并通过该文件为应用程序添加桌面启动图标。系统上电后,点击开发板液晶屏上的相应的启动图标,启动应用程序。基于开发板端的成像效果图如图9示。

图9 开发板端的成像效果图 The result of image acquisition based on development board

整套图像采集系统要运用于车载无人机遥感系统中,所以室外实验是必不可少的。图10是室外实验时获取的实时图像采集效果图,满足车载无人机图像采集的要求。室外成像实物图如图11所示。

图10 成像效果图 The result of image acquisition
图11 实物图 The physical map

另外,系统采集到的图像默认以时间作为前缀来命名,即“时间 +该时间内所拍摄的次数.bmp”,效果如图12所示。

图12 图像命名规则 Picture naming rules

测试结果表明,本文所设计的图像采集处理程序能够顺利采集图像数据,并将其存储至外部存储设备,基于QT/Embedded设计的控制与显示终端也实现了良好的人机交互,操作方便,基本达到了预期设计效果。

车载无人机是一个比较复杂的系统,图像采集模块与显示模块只是其中的两个环节,这部分与无人机通信系统、车载通信系统、车内显示系统、车内遥感图像实时处理系统以及车载决策系统等构成有机联系,所以在后续集成与调试方面还有一些外围工作去完善,以满足车载无人机的各项要求。

5 结束语

本文详细介绍了车载无人机遥感载荷系统中前置相机的数据获取、控制和存储功能模块以及车载地面控制端遥感影像实时显示与控制功能模块的设计与实现。基于ARM和嵌入式Linux设计的图像采集处理系统完成了高效的图像采集任务,能够实时获取图像数据并将其保存至存储设备。另外,还可通过地面控制端实现拍摄的远程控制。在设计思路上,采用软硬件结合的嵌入式设计方式和模块化的设计思想,使开发过程灵活高效并方便以后的功能扩展和改进。

车载无人机遥感系统包含众多功能模块,本文涉及到两部分,其有效性与稳定性还需进一步测试与实验。

参考文献
[1] 廖玉佳.简析无人机遥感的应用[J].科技传播,2013,12:121-122.Liao Y J. Analysis on theapplicationof unmanned aerial vehicleremote sensing[J]. Public Communication of Science and Technology,2013,12:121-122.
[2] 李德仁,李 明.无人机遥感系统的研究进展与应用前景[J].武汉大学学报,2014,39(5):505-513.Li D R, Li M. Research advance and application prospect of unmanned aerial vehicle remote sensing system [J].Geoma-tics and Information Science of Wuhan University, 2014,39(5):505-513.
[3] 王 振.应急通信指挥车中的车载设备管理平台[D].合肥:合肥工业大学,2010.Wang Z. Platform of equipment management on vehicles for emergency communication [D]. Hefei : Hefei University of Technology,2010.
[4] 廖 微,王少华,彭向军,戴 健.应急指挥地理信息系统的设计与实现[J].电子设计工程,2015,23(3):54-56.Liao W,Wang S H, Peng X J, Dai J. Design and implementation of the construction of emergency command GIS[J]. Electronic Design Engineering, 2015, 23(3):54-56.
[5] 吴正鹏,奚 歌,柳雨彤,张晓东.无人机低空遥感系统传感器选型研究[J].城市勘测,2013,(5):50-52.Wu Z P, Xi G, Liu Y T, Zhang X D. Research on sensor selection for UAV low-altitude remote sensingsystem [J].Urban Geotechnical Investigation and Surveying, 2013,(5):50-52.
[6] 谷静博,关桂霞,赵海盟,谭 翔,晏 磊,王文祥. 地应力监测中定位与姿态数据采集系统设计[J].计算机应用,2014, 34(9): 2752-2756.Gu J B,Guan G X, Zhao H M, Tan X, Yan L, Wang W X. Design of positioning and attitude data acquisition system for geostress monitoring [J]. Journal of Computer Applications, 2014, 34(9): 2752-2756.
[7] 吴燕燕,贺锋涛. 基于ARM9平台上Qt/Embedded的移植与开发[J].液晶与显示,2013,28(2):261-265.Wu Y Y, He F T. Qt/Embedded transplantation and deve-lopment based on ARM9 platform [J]. China Journal of Liquid Crystals and Displays, 2013, 28(2): 261-265.
[8] 吴 健.基于ARM的嵌入式USB图像采集与处理系统[D].合肥:合肥工业大学,2012.Wu J. Image acquisition and processing system based on embedded ARM by USB camera [D]. Hefei: Hefei University of Technology, 2012.
[9] 刘 鑫.基于ARM的图像采集系统设计[D].武汉:武汉理工大学, 2007.Liu X. Design of image acquisition system based on ARM [D].Wuhan: Wuhan University of Technology, 2007.
[10] 宋 亮,陈瑜轩.浅谈图像处理与BMP图像文件格式[J].电子设计工程,2014, 22(7):188-190.Song L, Chen Y X. The image processing and BMP image file format [J]. Electronic Design Engineering, 2014, 22(7):188-190.
[11] 严 贤,韩秀玲.基于Qt的串口通信应用研究与实现[J].微计算机信息,2012, 28(8): 114-116.Yan X, Han X L. Research and implementation on serial communication based on Qt [J]. Microcomputer Information, 2012, 28(8): 114-116.
[12] 刘志华.基于ARM和Linux的视频图像采集系统[J].微型机与应用,2014,33(3):12-14.Liu Z H. Video image acquisition system based on ARM and Linux [J]. Microcomputer and It′s Applications, 2014, 33(3): 12-14.
[13] 张文凯,关桂霞,赵海盟,王明志,吴太夏,晏 磊.小卫星模拟系统中多路串行通信系统设计[J].计算机应用,2013, 33(12): 3477-3481.Zhang W K, Guan G X, Zhao H M, Wang M Z, Wu T X, Yan L. Design of multi-serial communication for micro-satellite simulation system [J]. Journal of Computer Applications, 2013, 33(12): 3477-3481.
[14] 张 伟,刘 爽,王炳义,朱 琳.基于ARM的CCD数据远程采集系统设计[J].微计算机信息,2009,25(4-1):89-90.Zhang W, Liu S, Wang B Y, Zhu L.ARM-based CCD remote data collection system design [J].Microcomputer Information, 2009, 25(4-1):89-90.
[15] 赵海盟,张文凯,谷静博,王 强,沈路宁,晏 磊.无人机载荷航拍控制系统设计[J].计算机应用,2015, 35(1):270-275.Zhao H M,Zhang W K, Gu J B, Wang Q, Shen L N, Yan L. Design of aerial photography control system for unmanned aerial vehicle [J]. Journal of Computer Applications, 2015,35(1):270-275.