一种基于ARM的嵌入式图像处理系统设计*

2016-10-26 05:17梁光明陈韵迪
计算机与数字工程 2016年9期
关键词:嵌入式操作系统PC机图像处理

陆 旭 梁光明 陈韵迪

(1.国防科学技术大学电子科学与工程学院 长沙 410073)(2.湘潭大学信息工程学院 湘潭 411105)



一种基于ARM的嵌入式图像处理系统设计*

陆旭1梁光明1陈韵迪2

(1.国防科学技术大学电子科学与工程学院长沙410073)(2.湘潭大学信息工程学院湘潭411105)

针对传统的ARM嵌入式系统在图像显示和处理上存在处理速度慢,效率低,很难做到完全实时的问题,论文设计了一种基于ARM的嵌入式图像处理系统,该系统采用Qt多线程技术实现图像实时显示和提高图像处理效率。以ARM Cortex—A8处理器(S5PV210)为核心搭建硬件平台,搭建Linux嵌入式操作系统环境,设计基于V4L2接口的视频图像采集程序,采用Qt多线程技术编写对图像进行采集、显示、存储及处理的图形应用程序。该系统体积小、功耗低、成本低、速度快、通用性强,可用于各领域的嵌入式图像处理。

硬件平台; 软件架构; Qt多线程技术; V4L2; 图像处理

Class NumberTP394.41

1 引言

嵌入式图像处理在通信领域、自动化生产、电子医疗、航天航空、军事领域、工农业生产、公共安全等领域得到了越来越广泛的应用。ARM嵌入式图像处理技术与传统的PC机图像处理技术相比,其最为显著的优点是嵌入式系统具有体积小、功耗低、成本低、性能高等。因此,各领域根据自身需求对ARM嵌入式图像处理技术进行了很广泛的研究。例如,文献[1]提出了一种基于ARM嵌入式图像处理的摄像直读抄表方法,该方法利用USB摄像头拍摄仪表图像,然后对仪表图像做各种处理,从而得到仪表上显示的数字,但该方法的图像处理速度慢,不能实现图像的实时采集与显示;文献[2]设计研究了一种基于ARM 嵌入式系统和图像处理方法的便携式金标试纸分析仪,该分析仪先运行图像采集软件获得图像数据并存储,再运行图像处理软件对存储的图像进行处理,从而得到处理结果。但是该系统里将图像采集和图像处理分别做成软件,不方便用户操作,图像处理不具有实时性。

论文在研究ARM嵌入式系统原理的基础上,设计了一种基于ARM的嵌入式图像处理系统,该系统包括硬件平台的构建和软件架构设计,可以很方便实现图像采集、显示、存储及处理。该系统采用Qt多线程技术编写的图形应用程序,能实现图像实时显示和处理,提高了应用程序运行效率。

2 系统硬件平台的构建

论文根据图像采集、显示、存储、处理及与PC机通信的功能需求,以ARM微处理器为硬件核心,加上图像采集模块、显示模块、存储模块、内存模块、通信模块以及电源管理模块来构建满足系统功能需求的最小硬件平台。

本系统配载512M的DDR2作为系统内存和512M的Nand Flash作为系统存储器,使用USB摄像头进行图像采集,通过LCD显示屏实时显示采集的图像及处理结果,用户通过LCD触摸屏进行人机交互,图像处理结果既可以存储于Nand Flash存储器中,也可以存储于U盘或SD卡中。为了与PC机的通信和烧写系统,平台通过USB接口、串口和网线接口连接到上位PC机,最后加入电源管理,组成了整个硬件开发平台。图1是系统硬件平台结构。

图1 硬件平台结构

本系统选用的ARM处理器是三星公司生产的S5PV210微处理器,运行最大频率可达 1GHz,处理器内部为64/32位总线结构,32/32KB一级缓存,512KB二级缓存。S5PV210内嵌了图形加速引擎(SGX540),能对图像处理提供强大的硬件加速支持。系统内存为512M的DDR2,512M的Nand Flash为系统存储器。LCD触摸显示屏是最大分辨率为800×480的彩色液晶电容屏,用来实时显示采集的图像和处理结果。电源用来给系统供电。 USB接口、串口、网线接口是用来与上位PC机通信、烧写系统以及后来对系统进行升级和维护。U盘或SD卡用来存储图像处理结果。USB摄像头是最高分辨率为640×480的彩色摄像头,其传感器为CMOS,最大帧数为30帧/s,摄像头通过ARM外扩的USB接口与系统连接。

3 系统软件架构设计

嵌入式软件架构设计主要是嵌入式操作系统环境搭建和图形应用程序设计,在运行图形用户应用程序之前,应预先移植嵌入式操作系统。论文首先搭建的是Linux嵌入式操作系统环境,先使用arm-linux-gcc在PC机上建立交叉编译环境,在交叉编译环境中编译Bootloader、编译Linux内核、制作根文件系统,然后移植到目标板上,完成ARM平台上Linux嵌入式系统的搭建。然后在PC上使用Qt编写ARM平台下的图形应用程序,为了方便用户操作,编写人机交互界面,在该界面中实现对摄像头参数设置,对图像的采集、显示、保存和处理操作。图2是系统软件架构设计。

图2 系统软件架构

3.1Linux嵌入式操作系统环境搭建

图3 Linux系统结构

Linux嵌入式操作系统和应用程序的开发是在宿主机上完成的,然后在目标板上运行Linux操作系统和应用程序。把一台 PC 机作为嵌入式开发的宿主机,并建立交叉编译环境,在其环境中编译操作系统和实现程序设计[3]。在 PC 机的交叉编译环境中,先制作Bootloader引导程序,其将引导Linux系统启动,运行Linux内核和根文件系统,从而整个系统程序运行起来。在PC机上开发好的应用程序要下载到目标板上运行验证。Linux系统结构图如图3所示。

将制作好的Bootloader引导程序、内核映像、根文件系统镜像烧写到目标板上完成Linux嵌入式操作系统环境搭建。

3.2基于Qt多线程技术的图形应用程序设计

在PC机上使用Qt编写ARM平台下的图形应用程序。Qt可以开发基于Linux嵌入式操作系统的图形应用程序,这些图形应用程序可以很好地在Linux系统里运行。为了实现实时显示和处理图像数据,采用Qt的多线程技术编写图形应用程序。多线程程序作为一种多任务、并发的工作方式,能够提高应用程序响应速度[4]。使用多线程技术,将耗时长的操作置于一个新的线程,就可以避免长时间等待,提高程序的效率[5]。

论文增开GUI主线程以外的子线程来专门负责处理图像数据,并将处理后的图像数据存储于SD卡。LCD显示屏默认实时显示采集到的图像,通过界面文件按钮将当前实时显示的缓存图像以jpeg格式存储至SD卡指定的文件夹,图像处理子线程会对其进行处理。实现了图像处理和图像采集同时进行,可以根据需要将处理后的图像显示出来。

操作GUI主线程里的界面文件按钮实现对设备和图像采集、显示、存储的控制,例如图像保存、分辨率修改和对USB摄像头启动等。图4是Qt多线程应用程序结构。

图4 Qt多线程应用程序结构

3.2.1图像的采集设计

本系统基于Video 4 Linux2(V4L2)接口进行图像采集。V4L2是Linux系统中关于视频设备的内核驱动,其主要用来进行图片、视频、音频等信息的采集。在Linux 系统下,所有的外设都被当作一种文件,即“设备文件”,USB摄像头也一样。V4L2提供了一系列的接口函数,用于TV卡、视频捕捉卡和USB摄像头等视频设备的应用编程。V4L2为USB摄像头提供了基本的I/O操作函数:open()、read()、write()、close(),并把这些函数定义在 file_operations 结构体中。驱动程序使用的结构和符号,都在/usr/include/ linux/videodev2.h文件中。

论文采用内存映射的方法,用mmap()函数把在内存空间中获取的缓存帧映射到用户空间。应用程序在调用缓存数据时,缓存符合先进先出的模式。采集图像时,利用两帧图像的缓存,一帧图像缓存存完后发送出去,将第二帧图像覆盖前一帧,交替使用,从而实现了视频图像的实时采集。图5为以帧缓存的形式采集视频图像的原理图,图5(a)中假设开辟的帧缓存大小为4帧,图5(b)为从帧缓存中取出第n帧图像,那么缓存中便存在一个空缺,图5(c)中,第n+4帧图像进入到帧缓存中,如此便能实现帧缓存区图像数据的动态更新。

图5 帧缓存原理图

本系统图像采集流程图如下图6所示。

图6 图像采集流程图

1) 打开视频设备。本系统中USB摄像头对应的设备文件为/dev/video0,应用程序可以通过调用open函数[6],打开USB摄像头。

2) 获取摄像头参数。通过调用ioctl()函数和接口命令VIDIOC_QUERYCAP查询摄像头的信息。主要查看摄像头是否支持流操作与摄像头所支持的像素格式。

3) 设置图像采集方式和图像参数。本系统使用命令 VIDIOC_S_FMT,将摄像头的像素格式设置为YUVY,图像的分辨率设置为320*240与640*480以供选择。

4) 摄像头图像采集。在完成了摄像头设备初始化以后,就可以进行图像的采集了。采集过程分为下面四个步骤:

(1)申请缓存区。使用参数VIDIOC_REQBUFS和结构体v4l2_requestbuffers。

(2)提取每个缓存的信息。使用mmap()函数映射到用户空间。

(3)采集视频图像。使用命令VIDIOC_STREAMON。

(4)取出缓存中的视频帧图像。使用命令 VIDIOC_DQBUF。然后对其解码,以便LCD显示。

5) 停止采集和关闭设备。在嵌入式系统中,资源没有 PC 机那样的丰富,为了避免内存泄露以及系统崩溃的现象,在停止采集视频图像时要特别注意内存的回收。采集完图像后可以使用VIDIOC_STREAMOFF命令停止采集视频流,通过调用close()函数关闭摄像头设备文件。

3.2.2图像的显示与保存

图像显示通过 Qt开发环境QtCreator的用户图形界面设计实现。Qt Creator 可以直观地对用户图形界面进行布局,为功能的具体实现提供方便,其文件格式为.ui。Qt中采用信号与槽的响应机制,可以很方便实现各个元件之间的协同工作[7]。先用load()函数加载用户空间里的视频帧图像,再用QLabel部件实时显示加载的视频帧图像。使用getSaveFileName()函数将采集到的符合要求的图像保存到SD卡指定文件夹中,图像处理子线程会对其进行处理,处理后的图像数据也存储到SD卡中。

3.2.3图像的处理

图像处理是一个耗时的操作,为了不影响图像采集与显示专门开辟了一个子线程专门用于图像处理。Qt开辟子线程需要在所建的工程(Myvideo.pro)中添加一个新的C++类,并为其命名(实验中命名为“ImThread”),其基类必须是“QThread”且继承于“QObject”,然后再进人imthread.h和imthread.cpp进行编程,重新实现ImThread::run()函数。主线程中要添加“ImThread”类的对象“thread”,从而调用thread.Start()函数来启动子线程[8]。

4 应用验证

为了验证系统的稳定性与实时性,论文做了一个图像边缘提取实验。图像边缘信息是图像识别中提取图像特征的一个重要属性,通过对目标边缘的检测来实现将目标图像与背景的分割[9]。边缘检测的方法有很多,比如 Sobel 算子,Robert 算子,Canny 算子,都能够检测到图像的边缘。本实验采用Sobel算子直接对原始彩色图像进行边缘提取,图7(b)是Sobel算子边缘提取后的图像。实验过程中,在进行图像处理时,LCD显示屏依然实时显示采集到的图像,并能对显示的图像进行控制,并没有受到图像处理操作的影响。

图7 原始图与Sobel算子边缘提取

5 结语

论文设计了以S5PV210为核心的嵌入式图像处理系统,首先构建系统的硬件平台,然后设计系统软件[10]。设计系统软件时,先搭建ARM平台上Linux嵌入式操作系统环境,然后在PC机上采用Qt的多线程技术编写图形应用程序。图像采集是基于Video 4 Linux2(V4L2)接口进行设计的。图像处理是在Qt中开辟子线程来专门负责处理图像数据,从而保证了图像实时显示不受图像处理操作的影响。图像边缘提取实验验证了该系统的稳定性,该系统能实时显示和处理图像数据。本研究设计的基于ARM嵌入式的图像处理系统可用于各领域的图像处理,具有一定的应用价值。

[1] 张欢欢.基于嵌入式图像处理的仪表智能识别技术研究[D].杭州:浙江理工大学,2015:45-47.

ZHANG Huanhuan.Meter Intelligent Identification Technology Based on Embedded Image Processing [D].Hangzhou:Zhejiang Sci-Tech University,2015:45-47.

[2] 李洪梅.基于ARM的便携式试纸分析仪的研究[D].长春:吉林大学,2011:78-80.

LI Hongmei.The Development of the Portable Colloida Gold Strips Reader Based on Embedeed System of ARM[D].Changchun:Jilin University,2011:78-80.

[3] 王学宾.基于ARM的嵌入式图像处理技术的研究[D].天津:河北工业大学,2013:8-10.

WANG Xuebin.The Research Of Embedded Image Processing Technology Based On ARM[D].Tianjin:Hebei University Of Technology,2013:8-10.

[4] 毛伟,隋修宝,陈钱等.基于FPGA和ARM的红外图像实时显示和采集方法[J].激光与红外,2013(9):43-46.

MAO Wei,SUI Xiubao,CHEN Qian.Method of infrared image real-time display and collection basedon FPGA and ARM[J].Laser & Infrared,2013(9):43-46.

[5] 查雄兴.基于达芬奇DM6446平台多媒体无线通信系统[D].西安:西安电子科技大学,2011:79-82.

ZHA Xiongxing.Multimedia Wireless Communication System Based On DM6446 Platform[D].Xi’an:Xidian University,2011,79-82.

[6] 向强.基于ARM的嵌入式网络视频监控系统设计[D].鞍山:辽宁科技大学,2013:96-99.

XIANG Qiang.The Design of Embedded Network Vidio Surveillance System Based on ARM[D].Anshan:University of Science and Technology Liaoning,2013:96-99.

[7] J. Bernal, J. Sanchez, et.al. Impact of image preprocessing methods on polyp localization incolonoscopy frames[C]//35 th Annual International Conference of the IEEE Engineeringin Medicine and Biology Society (IEEE EMBS), 2013:7350-7354.

[8] Wen-Chung Kan,Wei-Hsin Chen,Chun-Kuo Yu,Chin-Ming Hong,Sheng.Yuan Lin.A real-time system for portable homecare applicatious[C]//Proc.IEEE International Symposium Consumer Electronics (0SCE),2005:369-374.

[9] 吴健.基于ARM的嵌入式USB图像采集与处理系统[D].合肥:合肥工业大学,2012:23-28.

WU Jian. Image Acquisition and Processing System Based on Embedded ARM by USB camera[D].Hefei:HeFei University of Technology,2012:23-28.

[10] H. B. Wang, N. N. Schulz. Using AMR data for load estimation for distribution systemanalysis[J]. Electric Power Systems Research,2005,76(5):336-342.

Embedded Image Processing System Based on ARM

LU Xu1LIANG Guangming1CHEN Yundi2

(1.School of Electronic Science and Engineering,National University of Defense Technology, Changsha410073) (2.School of Information Engineering,Xiangtan University, Xiangtan411105)

In view of the traditional ARM embedded system exists slow processing speed in the image display and processing, low efficiency in the system, hard to complete real-time, this study designs a kind of embedded image processing system based on ARM, Qt multi-thread technology is applied in the system to achieve real-time image display and improve the efficiency of image processing.ARM Cortex—A8 (S5PV210) is as the core to build the hardware platform, builds a Linux embedded operating system environment, design video image capture process based on V4L2 interface, uses Qtmulti-thread technology write graphical applications tocapture, display, storage and process of image.This system has small volume, low power consumption, low cost, fast speed, strong commonality, can be used in many field of the embedded image processing.

hardware platform, software architecture, Qt multi-thread technology, V4L2, image processing

2016年3月7日,

2016年4月25日

陆旭,男,硕士研究生,研究方向:图像处理。梁光明,男,副教授,硕士生导师,研究方向:图像处理。

TP394.41DOI:10.3969/j.issn.1672-9722.2016.09.039

陈韵迪,女,硕士研究生,研究方向:图像处理。

猜你喜欢
嵌入式操作系统PC机图像处理
基于ARM嵌入式的关于图像处理的交通信号灯识别
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
计算机嵌入式操作系统分析
基于三菱FXPLC的感应淬火机床与PC机的串行通信实现
VC.NET下实现dsPIC单片机与PC机的通信
排除OLT设备登录故障
关于高校嵌入式操作系统课程教学的探索与思考
基于图像处理的定位器坡度计算
基于嵌入式操作系统的工业采集板设计