汪国强,饶文高,王 兰
(黑龙江大学 电子工程学院,哈尔滨 150080)
随着科学技术的快速发展,嵌入式技术已经深入科学技术、生活和生产的各个角落,例如国防军事领域、安保监控设备、消费电子产品、工业化自动生产、智能化控制、电子医疗、网络通信、航空航天等诸多领域[1-2]。现在很多新技术都与嵌入式技术相结合,在实际应用中发挥重要作用。
本文应用嵌入式技术和图像处理技术,充分发挥嵌入式系统功能强大、处理速度高、运行稳定的优点,把嵌入式系统作为图像处理的载体平台。选用的平台是基于Samsung公司的S3C2440处理器系统[3],在硬件基础上,进行软件系统构建,系统包括嵌入式系统环境的搭建、数字图像采集相关驱动设计和数字图像处理算法软件的设计3个部分。利用Qt设计数字图像处理平台,实现多种处理算法,算法包括图像的正交变换、平滑、锐化、边缘检测、浮雕算法等。
嵌入式系统的基础技术是计算机技术,所以它的体系继承了计算机体系的特点。体系结构包括3个重要的部分:硬件设备部分、嵌入式操作系统部分、应用软件部分。结构见图1。
图1 嵌入式系统体系结构Fig.1 Embedded system architecture
根据功能的具体应用,选用S3C2440ARM微处理器。这款处理器也是基于ARM920T体系内核,16/32位RISC嵌入式微处理器[4],输入设备选用USB摄像头设备作为图像采集设备,输出设备选用LCD显示屏进行图片的显示输出。核心部分包括,处理器、64Mbytes的SDRAM芯片、128Mbyte的Nand Flash,以及其他部分构成。结构见图2。
在硬件基础上,搭建嵌入式系统,嵌入式操作系统的引入,使嵌入式的发展推向了一个新的阶段。有了嵌入式操作系统,可以应对复杂的实际要求,使得嵌入式系统其功能强大,支持更多的功能。不仅使嵌入式系统具有通用操作系统的一般功能,如具备像PC机一样的文件和目录管理、多任务线程管理、各种网络的应用等功能,而且为上层开发人员提供了大量的用户接口并在上层进行应用程序的开发[5]。所构建的嵌入式系统的构成与软件开发体系见图3。
嵌入式Linux系统下的设备驱动,可以准备好编译到内核中,系统启动后内核就启动加载相关驱动。通常一个模块对应于一个设备驱动,应用开发人员就可以通过驱动程序跨越设备的复杂硬件实现细节,编写应用程序实现对设备的控制完成功能要求。在驱动程序的具体操作中,应用程序可以像对普通文件操作一样进行控制,主要是调用应用程序接口函数API完成对设备的打开、关闭、读/写数据操作和输入/输出控制操作[6]。
基于USB摄像头本文使用Video4Linux,该驱动是为Linux提供的视频设备驱动,因此在调用设备模块流程中,是在用户空间中完成系统调用功能。为上层开发提供API函数:包括基本的I/O操作函数open()、close()、read()、write();对中断的处理函数;内存映射功能以及对I/O通道的控制接口函数ioctl()的实现等。在V4L中,这些功能函数都定义在结构体struct video_device中,主要为video_capability、grab_cap、video_picture grab_pic、video_mmap grab_buf、video_mbuf grab_vm[7],提供给内核进行调用。
基于Video4Linux的设计流程,也是对/dev/video设备的操作[8],流程见图4。
图4 视频设备驱动流程Fig.4 Video device driver process
编译后,加载到嵌入式设备,运行后图像采集见图5。
图5 显示采集的图像Fig.5 Image show
Qt/Embedded是著名的Qt库开发商挪威的Trolltech面对嵌入式系统提供的优化过的Qt版本,目前Qt已经被诺基亚公司收购,Qt是一个跨平台的C++图形用户界面软件,其嵌入式版本Qt/Embedded和Qtopia Core版本对于各种可能涉及的嵌入式硬件接口和GUI工具包都提供了完全的图形栈。
微课教学方法的应用改变了传统的教学模式,使得整个教学动起来了,这是激发学生学习积极性和兴趣的重要举措,这也是未来高中数学教学发展的趋势.在教学改革的进一步深化推进当中,高中数学教学改革和新的技术相结合的需求也在增加,这就为提高数学教学质量有着积极作用.
Qt系统是C++面向对象OOP跨平台系统,它的优越性就是基于信号/槽机制。也就是当一个对象的内部状态发生改变后,一个特定的信号就被发射,这种改变可以被认为是类及其子类的改变。当一个信号被发射后,这个信号所连接的槽就像调用普通函数一样能被执行[9]。结构见图6。
图6 信号/槽机制Fig.6 Signal/Slot mechanism
利用USB摄像头进行视频图像的采集,图像经过保存后,利用Qt数字图像处理平台进行算法处理,平台中File、Edit选项是基本选项,包括读取摄像头采集图像等;Geometry选项包括图像的几何算法;Character包括图像特征算法,包括转化灰度图、颜色变换、亮度变换、对比度变换等;Pixel选项包括图像的几种增强算法,包括边缘提取、锐化、浮雕、平滑处理等;Orthogonal选项为图像的正交变换,包括傅里叶变换、快速离散傅里叶变换、基于FFT的滤波器设计、小波变换等。
利用Qt设计的图像处理平台对采集的图像进行各种算法的处理,并选取几种典型的图像处理算法进行处理。
根据傅里叶变换的相关概念,对图像进行的二维离散傅里叶变换,在大小为N行M 列的图像f(x,y)中,二维离散傅里叶变换可以表示为[10]:
傅里叶变换也可以表示为实部和虚部的两个组成部分,表示如下:
Qt软件算法设计,进行数学变换、处理,程序的关键步骤如下:
void ImageProcess::DFT()//Qt程序中,二维离散傅里叶变换处理函数
由于傅里叶变换的时间很长,设计实现快速傅里叶变换,其原理根据库利-图基算法进行按时间抽选法的离散快速傅里叶变换[11]。基于8点的时间抽取法傅里叶变换。软件流程图见图8。经过编译,处理结果见图9。
图8 图像时间抽取法蝶形傅里叶变换软件流程图Fig.8 Image processing software flow chart of DIT-FFT
利用Daubechies表示法[12](N=2时,序列pk为0.4829629131445341、0.83651630373780、0.22414386804201、-0.12940952255126)的小波系数(Wavelet coefficient)进行对图像信息进行分解。图像数据作为二维的离散数据f(m,n)给出,根据小波变换的尺度关系,从第j级的小波系数及尺度系数能够求得精度高一级j-1的尺度系数的关系可得:
处理结果见图10。
在Qt设计中,图像对边缘的提取采用了偏导数估计的卷积核的算法,采用索贝尔(Sobel)算子进行处理。在对图像进行初步的处理,包括去噪、锐化等,提取出图像的边缘信息。处理见图11。
将图像中色彩不同的部分突出出来,而色彩相同的部分进行层次上的淡化,显得图像看上去有深度,凸显层次。具体做法在一个图形f(x,y)中,点(x,y)的像素与相邻点(x+1,y+1)像素相减,再加上一个常量表示为:
数字图像浮雕的算法就是使用一种卷积核的形式进行前面相减的运算,可以方便地进行图像二维计算。处理结果见图12。
本文把嵌入式技术和图像处理技术结合起来,为图像处理提供一个实时处理的平台,实现数字图像处理平台的小型化、方便化。通过以上实验,该平台可以对图像进行变换域和空域上的处理。模块式的程序设计提供了更加灵活的加载方式,可以根据不同的需求对算法进行适当的增添,实时处理采集的图像。
[1]吴 军,周运转.嵌入式Linux系统应用基础与开发范例 [M].北京:人民邮电出版社,2003:1-2.
[2]孙鹤旭,林 涛.嵌入式控制系统 [M].北京:清华大学出版社,2005:1-2.
[3]SAMSUNG.S3C2440User’s Manual [EB/OL],2003.
[4]杜春雷.ARM体系结构与编程 [M].北京:清华大学出版社,2003:8-9.
[5]赵 伟,张昕凯,谭彩虹.基于嵌入式Linux的DPR设备驱动程序开发 [J].仪器仪表学报,2006,27(6):2050-2053.
[6]李 俊.嵌入式Linux设备驱动开发详解 [M].北京:人民邮电出版社,2008:16-18.
[7]杜海顺,柴秀丽,汪凤泉,等.一种领域保持判别嵌入人脸识别方法 [J].仪器仪表学报,2010,31(3):625-628.
[8]Alan Cox.Video4Linux Programming [EB/OL],2003.
[9]Jasmin Blanchette,Mark Summerfield.C+ + GUI Programming with Qt4[M]USA:Prentice Hall in association with Trolltech Press,2007:18-20.
[10]谢凤英,赵丹培.Visual C++数字图像处理技术[M].北京:电子工业出版社,2008:236-278.
[11]阮秋琦.数字图像处理学 [M].北京:电子工业出版社,2006:93-100.
[12]杨胜波,于春梅.小波分析在生物医学信号图像处理中的应用 [J].仪器仪表学报,2002,23(3):179-181.