基于Linux下MiniGUI的图像处理GUI平台设计

2011-03-06 09:36涂春萍
华东交通大学学报 2011年2期
关键词:图像处理应用程序嵌入式

涂春萍,甘 岚,张 旭

(华东交通大学信息工程学院,江西南昌 330013)

随着社会的不断发展,嵌入式图像处理技术在人们的日常生活中应用的越来越多,如手机、智能PDA类产品、摄像头监控技术、视频技术等,而且对嵌入式图像处理系统的要求也在不断的提高,人们希望在系统功能强大的同时,界面能够更加的方便实用。

嵌入式GUI(graphical user interface)是一个面向嵌入式应用的微型图形用户界面(GUI)支持系统,通过窗口、菜单、按键等方式极为方便地为非专业人士进行操作,其具有轻型、占用资源少、高性能、高可靠性、便于移植等特点。作为人机交互的图形用户界面是嵌入式系统非常重要的组成部分,因此嵌入式GUI平台的选择对图像处理系统的设计起着关键的作用。伴随着嵌入式系统的迅速发展,嵌入式GUI系统也得到了相应的发展,涌现出大量的嵌入式GUI系统,这些通用的嵌入式GUI系统因具有很好的易用性和强大的功能而被广泛使用,但其为了具有应用上的通用性,很多时候都是以牺牲性能为代价,其中一个主要的表现是在体系结构的设计和实现上效率低下。对一些具体的嵌入式GUI应用系统,其内部应用程序需要占用大量的CPU计算能力或各种系统处理资源,而无法满足那些通用嵌入式GUI系统对性能的高要求。

MiniGUI/Embedded是目前比较流行的面向嵌入式GUI平台的系统,MiniGUI/Embedded可移植性强,支持跨平台开发,开发出的人机交互界面效率高,稳定性强,方便而且实用[1]。本文在系统方案中的GUI设计方面,采用MiniGUI系统分层的体系结构,在实现过程中采用事件消息驱动机制,来达到用户的实时性需求的目的。

1 嵌入式MiniGUI的GUI实现平台

1.1MiniGUI/Embedded的GUI硬件平台

嵌入式图像处理系统和其上的人机交互界面,以Samsung公司的处理器S3C2410为核心,其内部集成32位ARM920T处理器硬件内核,标准频率为203MHz,平台的硬件系统扩展64MB NandFlash、2MB Nor-Flash、64MB SDRAM和主/从USB等[2]。S3C2410开发板平台通过调试串口、JTAG并口、网口与宿主机通信,图像处理界面通过LCD显示、通过触摸屏/鼠标进行控制。本系统的硬件平台体系结构如图1所示。

1.2MiniGUI/Embedded的GUI软件平台

MiniGUI为基于Linux的实时嵌入式操作系统提供了一个轻量级的图形用户界面支持系统,MiniGUI为应用程序定义了一组轻量级的窗口和图形设备接口,利用这些接口,每个应用程序可以建立多个主窗口,然后在这些主窗口中创建按钮、编辑框等控制。

MiniGUI平台的构建。首先,在上位机安装Linux Redhat9.0操作系统作为宿主机开发环境,通过minicom进行程序调试。S3C2410目标开发板上移植ARM-Linux,并且该开发板装有Minigui1.6.10环境,以便将MiniGUI/Embedded开发的应用程序发布到嵌入式Linux的文件系统上。

其次,安装MiniGUI平台搭建过程所需要的库文件和编辑环境。安装编译器armv4l-unknown-linux-gcc,分别安装libminigui-1.6.10.tar.gz,minigui-res-1.6.tar.gz,qvfb-1.1.tar.gz,激活FrameBuffer,选择qvfb运行模式,配置过程中选择640×480"VGA"Depth 32 bit。特别注意的是在宿主机上编译MiniGUI应用程序时,要加上-lminigui-pithead-lm-lz-lmgext-lttf-lpng-ljpeg链接选项,用于支持绘图函数库、线程库、MiniGUI核心库、png图形支持库等。

2 嵌入式MiniGUI系统的特点

MiniGUI/Embedded为实时嵌入式操作系统提供了非常完善的图形(Graphics)及用户界面(user interface,UI)支持。MiniGUI本身的可移植性设计,使得不论在哪个硬件平台、哪种操作系统上运行,都可以为上层的应用程序提供基本一致的应用程序编程接口(API)。

MiniGUI/Embedded系统具有如下特点[3]:

1)MiniGUI丰富的功能和可配置特性,使得它可以运行于CPU主频只有60 MHz的低端产品中,亦可以运行于高端嵌入式设备中,并使用MiniGUI的高级控件风格及皮肤界面等技术,创建华丽的界面。

2)轻型、占用资源少。MiniGUI是一个定位于轻量级的嵌入式图形库,对系统资源的需求完全考虑到了嵌入式设备的硬件情况,如MiniGUI库所占的空间最小可以裁减到500 K左右,对于目前嵌入式设备来说,满足这一条件是绰绰有余。

3)高性能、高可靠性。MiniGUI良好的体系结构及优化的图形接口,可确保最快的图形绘制速度。在设计之初,MiniGUI就充分考虑到了实时嵌入式系统的特点,针对多窗口环境下的图形绘制开展了大量的研究及开发,优化了MiniGUI的图形绘制性能及资源占用。

基于MiniGUI/Embedded的这些特点,在本图像处理系统设计的过程中,采用MiniGUI作为图形用户的交互界面,作为高效的GUI平台,有效的提高了应用程序的开发速度,达到了对整个系统的GUI要求:实用性、通用性、小巧性、可定制的图形用户支持系统。

3 嵌入式MiniGUI图像处理系统GUI设计

高效快速的GUI系统需要解决用户及其他数据的输入、数据处理、结果显示这3个主要部分。因此针对本文的嵌入式图像处理系统GUI方案设计思路是:用户导入的图像数据或其他方式输入的数据、经过GUI平台内部对传过来的图像进行分析处理、最后将结果显示给用户。GUI系统的大致模块化结构,如图2所示。

在嵌入式图像处理系统所采用的GUI的设计过程主要有:1对MiniGUI图像处理系统GUI平台的构建,包括对GUI平台的设计方案以及层次结构的分析;2GUI人机交互界面的设计,包括如何设计窗口更为合适简单;3MiniGUI图像处理系统GUI平台的工作机制,如何准确的响应用户的消息事件。

3.1 基于嵌入式MiniGUI的图像处理GUI平台的基本构建

为了提高此嵌入式图像处理系统的性能和GUI开发效率,嵌入式图像处理体系和GUI方案采用分层设计,至上而下分为5层:应用层、接口层、封装层、基础图形层和服务层(如图3所示)[4]。其中,服务层是为上层提供Linux等嵌入式操作系统的服务平台,包括用国际标准C语言开发相关库函数文件,以及对底层硬件提供设备驱动服务;基础图形层,是将来自不同操作系统或设备的图形接口进行抽象,为MiniGUI上层提供一致的接口,并且可对MiniGUI涉及的所有输入设备提供支持;封装层,是MiniGUI为本GUI提供组件及窗口界面的菜单、工具等支持;接口层,是MiniGUI为上层应用提供API函数;应用层,是利用中间层和服务层提供的支持,来设计应用程序的GUI图形用户界面。

3.2 基于嵌入式MiniGUI的人机交互控制界面设计

MiniGUI为应用程序定义了一组轻量级的窗口和图形设备接口,利用这些接口,每个应用程序可以在主窗口中建立多个子窗口,然后可在这些窗口中创建菜单、按钮、编辑框、文本框等控件[5];它还为用户提供了丰富的图形显示和控制功能,能显示各种各样的位图和在窗口中绘制复杂的图像。

本文中所设计的人机对话界面是针对用户所选择的位图图像,通过GUI系统来选择想要对图像处理的方式,最终将结果显示到界面上。考虑到具体应用领域的特点,以及嵌入式图像处理系统在处理位图过程中对内存的要求,因此,在设计上放弃了多窗口管理及设计带来的复杂性,进而减少了对系统资源的占用,也便于项目的管理,简化了应用编程。该图像处理系统的人机交互控制界面如图4所示。

3.3 基于嵌入式MiniGUI的控制界面的事件驱动消息机制

GUI系统的图像处理的应用程序,从运行方式上看,该系统一般不是一个单独运行的过程,而是典型的需要靠接受外部的事件来驱动,再根据事件触发相应的消息,进而完成与用户之间的交互操作。

所谓的事件驱动机制,就是以事件作为驱动机制的源,程序的执行取决于对事件的触发,进而产生消息,并进入消息的循环队列,等待响应。也就是说,系统的发生、发展与并发、空闲以及终止的全部过程都是由事件来控制的,这里的事件是指用户采取的行为动作,如键盘键入、鼠标的移动、对触摸屏的点击动作等,都是事件的例子。事件驱动的程序是一种“被动”式程序设计方法。程序运行时,处于等待用户输入事件状态,然后取得事件所对应的消息并做出相应响应,处理完毕又返回消息队列等待事件所引发的消息,具体流程见如图5。

在此过程中,消息常常作为外部事件与程序之间的接口,程序会一直处于一种循环状态,在这个循环当中,程序从外部输入设备获取特定的事件(比如鼠标的移动),然后根据这些特定事件产生特定的消息,系统再根据消息做出特定响应,完成特定的功能,这个循环直到程序接受到特定消息终止为止[6]。事件驱动的底层基础,就是消息队列和消息循环,消息是报告有事件发生的通知[7]。消息机制是系统处理事件的核心,各种不同的消息可以视为系统对不同事件的抽象描述。

4 MiniGUI到目标板上的移植

把MiniGUI移植到目标板需要经过3个步骤[8]:一是安装和设置交叉编译环境,获得编译器:CC=/opt/host/armv4l/bin/armv4l-unknown-linux-gcc;二是使用编译器CC对MiniGUI进行交叉编译,获得可在目标板上运行的可执行程序;三是把MiniGUI可执行程序复制到目标板文件系统,并下载到目标板,在板上运行可执行程序后,可得到系统人机交互对话界面。

当有按钮按下或是释放的时候,应用程序检测对应的消息ID码来确认是哪个按钮已经被操作,再通过判断确认消息是将按钮按下还是释放。在该对话框界面中,通过鼠标选择图像,此时GUI响应用户事件请求,系统即需要开始图像处理服务;程序检测到对应的图像处理系统中某项图像处理算法,即相应的菜单被触发时,启动相关子程序,此时,转入后台实现对该图像文件的处理。

在Linux系统中,由于采用了虚拟文件系统(Virtual Filesystm Switch,VFS)技术,对所有设备的操作和对文件的操作是完全一样的,只需要利用VFS提供的统一文件接口,就可以打开该设备文件,对该设备进行相应的输入、输出、定位等操作,具体操作由设备驱动程序来实现,对上层应用来说是不可视的,也是不需要在该界面对话程序中考虑的。

5 结束语

综上所述,把性能优良的GUI系统应用于嵌入式设备中,为产品设计实用、简单易操作的人机交互界面是当前嵌入式领域开发的技术关键,因此,本文采用嵌入式MiniGUI系统是比较理想的GUI的选择,因为该系统不仅仅可以为用户提供人性化的人际交互界面,而且,其自身的轻型、占用资源少、高性能、高可靠性提高了整个嵌入式图像处理系统的性能,具有较高的经济价值,并可以为其他相关领域提供参考。

[1]北京亚嵌教育研究中心组.嵌入式GUI开发设计——基于MiniGUI[M].北京:电子工业出版社,2009:1-8.

[2]Samsung Electronics.Samsung Electronics S3C2410A Microprocessor Users Manual[M].Yongin-City:Samsung Electronics Microcontroller Business,2004:31-35.

[3]北京飞漫软件技术有限公司.MiniGUITechWhitePaper-1.3[M].北京:北京飞漫软件技术有限公司,2003:3-6.

[4]孙家广,杨长贵.计算机图形学[M].北京:清华大学出版社,1999:10-20.

[5]李玉东,李玉萍.精通嵌入式Linux编程——构建自己的GUI环境[M].北京:北京航空航天大学出版社,2010:110-121.

[6]方丰平.嵌入式环境下高性能可配置GUI系统设计[D].杭州:浙江大学,2006:114-126.

[7]刘黎志,刘军.一个基于消息通知的工作流管理系统[J].武汉工程大学学报,2008,30(2):94-97.

[8]郑军,郝久玉,翟霄翔.嵌入式图形用户界面的研究和移植[J].电子测量技术,2006,29(2):43-44.

猜你喜欢
图像处理应用程序嵌入式
删除Win10中自带的应用程序
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
谷歌禁止加密货币应用程序
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
基于图像处理的定位器坡度计算
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器
Photo Shop通道在图像处理中的应用