嵌入式图像处理系统的设计与实现.

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

43682009,30(19 计算机工程与设计Computer Engineering and Design

0引言

传统的图像处理技术主要依赖于大批量的电子计算机设备,大批量的电子设备在使用和保养时产生巨大的经费开支,增加行业成本。而嵌入式设备成本低、能耗小、可靠性高、体积小、重量轻以及维护使用方便等诸多优势。将嵌入式技术与图像处理结合可以开发出成本更低,可控性、可移动性及可靠性更佳的嵌入式图像处理系统。

1硬件平台设计

本系统的硬件平台是标准的通用嵌入式平台,其基本构

成有嵌入式中央处理器(三星44B0X 、输入输出系统(9键的小键盘和4.3寸液晶显示触摸屏和存储体系(同普通的PC 一样也具有三层存储体系:缓存(位于处理器中、内存(SDARM 以及外存(NandFlash 以及各种通信和调试接口。具体如图1所示的硬件平台体系结构。

嵌入式系统不同与一般的PC ,一般不能直接接受来自键盘的命令,本系统中使用ucos 系统软件平台,所以也没有Shell 。本系统在上电或者复位时,将自动执行ROM 中的Boot-Loader (存于NorFlash 的固定地址:0x0 ,BootLoader 将对系统进行标准自检,若自检通过,则将自动引导位于NandFlash 中的二进制文件,其文件名固定为System.bin 。该文件即为嵌入式图像处理软件系统的镜像文件,自此图像处理系统启动运行。

2

嵌入式图像处理软件系统设计

2.1

总体设计思想

本系统主要解决的问题就是图像处理如何在嵌入式环境

收稿日期:2008-10-12;修订日期:2009-08-05。

嵌入式系统工程

宋凯,严丽平,甘岚:嵌入式图像处理系统的设计与实现

2009,30(19 4369

下的实现,由于嵌入式环境的特性(比如可供选择的编程语言较少,可供使用的API 较少等,所以笔者需要着力解决的问题是通用接口(比如BMP 文件的读入以及常用算法的移植。为了提高工组效率以及本软件系统的可移植性,笔者决定将常用的接口及图像处理算法均以API 的形式封装起来。这样在以后的开发工作中,只要调用封装后的API 即可,可以提高系统的通用性。

2.2功能模块设计

基于前面的阐述,本系统采用模块化设计,每个模块包含

了一类图像处理的算法,而单个模块中的每个算法在执行时只需调用封装好的API 即可。具体的功能模块设计是将算法分为7大模块:图像几何变换、边缘检测及轮廓跟踪、直方图修正、半影调和去抖动、图像彩色变换、图像平滑锐化和腐蚀膨胀细化算法。在这7大系统模块下面,再进行到每一级算法的映射。7个模块构成了系统的主体。主层次结构如图2所示。另外在每个模块中有包含了多个图像处理算法,比如图像几何变换模块就含有8种算法,其结构如图3所示。另外的6个模块其设计与之相似,不再赘述。

2.3系统的实现与运行

基于上文的阐述,本软件系统的具体实现工作主要包括:

文件的读入、算法移植封装以及通用接口的实现等。下文将具体介绍实现工作。

2.3.1BMP 文件的读入

在嵌入式平台上,并没有现成的BMP 文件的库函数可以

使用。因此,如何把一个BMP 文件读入到内存中是进行图像处理算法移植的根本前提。本系统中,主要处理的图像有两大块:真彩图和256色的图像(包括256级灰度图,因此对应设计了两个BMP 文件的读入函数。文件的读入是每个算法都需要的,因此将这两个函数放在Graphic.h 和Graphic.c 中,以备后续的开发使用。下面是本文设计的两个图像数据读取公共函数:

GetTruePixel (char bmpname [],U32color [240][320],int *ma-

pwidth,int *mapheight ;

Get256Pixel (char bmpname [],U8colorbuf [240][320],U32pale [256],int

*mapwidth,int*mapheight

函数1用于将一个名称为bmpname []的真彩图像数据读入color [][]矩阵,同时获得图像的宽和高;函数2用于将一个

名称为bmpname []的256色图像数据读入colorbuf [][]矩阵,同时,对应的调色板数据读入pale []矩阵中并获得图像的宽和高。

2.3.2算法移植

本文中所涉及的图像处理算法都是原有的成熟算法,其

数学变换的过程都是固定的,笔者的工作就是将这些算法用C 语言实现并封

装成API 的形式以供调用,这个过程相对简单,在此不作赘述。

2.3.3层次图形界面的实现

为了提供良好的人机界面,本系统设计实现了层次化接

口,各级接口以图形方式显示,通过触摸屏或键盘消息进行分支响应,下面以主界面接口为例介绍层次化图形界面的实现。

对于整个系统来说,这一部分是核心,它承接了引导界面,并向下发展了各个不同的框架算法。从整体看来,它的作用就是承上启下,将嵌入式系统一次有限的处理进行分级映射。本接口与引导界面的最大不同是在它的消息处理上面,它向下连接了7个二级界面,再加上一个返回的处理,就需要对产生消息的参数做出8种不同的决断。在本级的处理中,还要注意程序设计中的问题,即如何返回上一级以及如何做好下一级向本级的返回。

在确定完一些实现细节以后,即可以进行具体算法接口的实现了。出于篇幅的考虑,本文只对其中的一个接口代码进行说明,需要指出的是,接口连接程序的调用需要等待事件的触发,因此,下面的代码都是在一个等待消息的无限循环之中的。

(1 message=WaitMessage(0 ;

(2 switch (message->Message{

(3 case OSM_TOUCH_SCREEN:(4 position1.x=message->WParam&0xffff;(5 position1.y=message->WParam>>16;(6 if (IsInRect2(prect1,pposition1{(7 ClearScreen (;

(8 Menu31(pdc ;

(9

ClearScreen (;

相关文档
最新文档