基于ARM嵌入式图像处理系统设计与实现 论文_第1页
基于ARM嵌入式图像处理系统设计与实现 论文_第2页
基于ARM嵌入式图像处理系统设计与实现 论文_第3页
基于ARM嵌入式图像处理系统设计与实现 论文_第4页
基于ARM嵌入式图像处理系统设计与实现 论文_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录 TOC o 1-3 h z u HYPERLINK l _Toc303540613 摘 要 PAGEREF _Toc303540613 h 2 HYPERLINK l _Toc303540614 1 引言 PAGEREF _Toc303540614 h 1 HYPERLINK l _Toc303540615 1.1 课程设计的意义 PAGEREF _Toc303540615 h 1 HYPERLINK l _Toc303540616 1.2 课程设计的目的 PAGEREF _Toc303540616 h 1 HYPERLINK l _Toc303540617 2 系统设计原理 PAGE

2、REF _Toc303540617 h 2 HYPERLINK l _Toc303540618 图像处理技术原理和成像原理 PAGEREF _Toc303540618 h 2 HYPERLINK l _Toc303540619 2.2 BMP文件格式简介 PAGEREF _Toc303540619 h 2 HYPERLINK l _Toc303540620 2.3 图像显示原理 PAGEREF _Toc303540620 h 3 HYPERLINK l _Toc303540621 3 开发环境简介及搭建 PAGEREF _Toc303540621 h 5 HYPERLINK l _Toc303

3、540622 3.1 硬件平台 PAGEREF _Toc303540622 h 5 HYPERLINK l _Toc303540623 3.2 系统软件平台构建 PAGEREF _Toc303540623 h 5 HYPERLINK l _Toc303540624 3.3 LCD显示模块 PAGEREF _Toc303540624 h 5 HYPERLINK l _Toc303540625 4 系统设计的与具体实现 PAGEREF _Toc303540625 h 7 HYPERLINK l _Toc303540626 4.1 BMP文件的读入 PAGEREF _Toc303540626 h 7

4、 HYPERLINK l _Toc303540627 4.2 图像增强算法设计 PAGEREF _Toc303540627 h 7 HYPERLINK l _Toc303540628 4.3 图像分割算法设计 PAGEREF _Toc303540628 h 8 HYPERLINK l _Toc303540629 4.4 图像平滑 PAGEREF _Toc303540629 h 8 HYPERLINK l _Toc303540630 4.5 图像缩放平移以及转置 PAGEREF _Toc303540630 h 10 HYPERLINK l _Toc303540631 5 程序主要源代码分析 PA

5、GEREF _Toc303540631 h 12 HYPERLINK l _Toc303540632 5.1 图像数据存储的主程序如下: PAGEREF _Toc303540632 h 12 HYPERLINK l _Toc303540633 5.3 图像平移主要代码 PAGEREF _Toc303540633 h 15 HYPERLINK l _Toc303540634 5.4 图像缩放主要代码 PAGEREF _Toc303540634 h 18 HYPERLINK l _Toc303540635 5.5 转置图像主要代码 PAGEREF _Toc303540635 h 21 HYPERL

6、INK l _Toc303540636 6 运行测试结果 PAGEREF _Toc303540636 h 23 HYPERLINK l _Toc303540637 图像平移效果 PAGEREF _Toc303540637 h 23 HYPERLINK l _Toc303540638 图像转置效果 PAGEREF _Toc303540638 h 24 HYPERLINK l _Toc303540639 图像的缩放效果 PAGEREF _Toc303540639 h 24 HYPERLINK l _Toc303540640 7 总结 PAGEREF _Toc303540640 h 25 HYPER

7、LINK l _Toc303540641 参考文献 PAGEREF _Toc303540641 h 26基于ARM嵌入式图像处理系统设计与实现 摘 要 针对现在的过程检测的实时需求,设计出一种本钱低,功能始终的图像处理采集系统。该系统以ARM7S3C44BOX为核心并配上外围电路实现图像处理功能,在加上多种通讯接口设计的图像传输通道,然后参加SD卡接口用于提取图像数据。最后基于uC/OS-嵌入式操作系统设计了一种图像处理方法,在系统中实现了图像增强、图像分割和目标定个位。实验说明,该系统能够很好地解决在线处理功能的实时问题,图像处理的准确率也满足了过程检测系统的要求,而且实现简单,本钱比拟低,

8、特别适合对于功耗、体积要求较严格的过程检测系统。关键词 ARM;图像处理系统;图像增强;目标定位1 引言1.1 课程设计的意义图像处理技术在工业自动化、仪表检测平安、以及平安、消费电子、医学中被越来越广泛的应用。在现代战争中,利用图像进行精确制导、火控、无人飞机的电视导航等,在国防中也受到了高度的重视。图像处理算法中常有大量的运算,特别是在实时图像处理方面,因此通常采用DSP1或FPGA3来实现。但随着微处理器技术的突飞猛进,现代MPU1也可以完成高速的数字图像处理。作为嵌入式图像处理技术,其主要技术包括两个方面,一个是图像处理技术,另一个那么是嵌入式系统4应用技术。本文主要研究图像处理技术在

9、嵌入式系统中的应用。1.2 课程设计的目的本课程设计的目的旨在研究一种能够进行高速图像处理5的嵌入式系统架构的设计与实现方法。针对嵌入式系统本身的特点,设计出具有较强通用性的嵌入式图像处理平台。利用嵌入式系统进行图像处理是对传统的图像处理硬件实现方法的挑战.它的完成将为图像处理的开辟新的实现途径,并且为嵌入式系统的应用再次翻开一片新的领域,同时,由于图像处理的应用十分广泛,其本身也有广泛的应用前景。图像数据是一种重要的信息资源,随着以计算机和计算机技术为核心的信息科学的开展,图像处理在通讯、管理、医学、地震、气象、航空航天以及教育等领域,发挥着愈来愈重要的作用。但传统的图像处理技术主要依赖于大

10、批量的电子计算设备,它们带来巨大的保养、增加行业本钱。嵌入式平台拥有小巧、价格低廉、功耗小及维护本钱低等优点。因此基于嵌入式平台构建图像处理系统可以降低其生产维护本钱,提高其可靠性和可控件,具有较高的市场价值。本文主要针对采集到的图像bmp格式实现平移、转置、缩放、平滑等处理。2 系统设计原理图像处理技术又称“机器视觉5,乃是将被测对象的图像作为信息的载体,从中提取有用的信息来到达测量的目的,具有非接触、高速、获得信息丰富等优点。系统一般通过摄像头采集对象的图像信息,然后通过处理系统对采集到的图像进行数字化的处理和分析,根据检测要求可得到对象的特征信息,随后进一步对此进行判断并输出结果。如图2

11、.1 所示,连杆的外表缺陷通过一个方形LED漫反射光源均匀照亮待检测的破口区域,光线照射到对象外表后,通过光学镜头成像在摄像头内的光电耦合CCD 元件3上并转化成相应的数字图像信号,CCD 元件可理解为一个由感光像素组成的点阵,每一个像素都一一对应了被测对象的二维图像特征。数字图像信号经过图像处理系统对图像特征信息的提取和计算得到所需的测量值,随后通过RS232 通讯接口把数据传输给PLC 进行逻辑判断,判断的结果直接通过设备前面板上的指示灯输出。 CCD 透镜 LED 光源 对象 CCD 摄像机图2.1 摄像头采集对象的图像信息2.2 BMP文件格式简介一个BMP文件包括以下四局部:文件头,

12、信息头,调色板数据和图像数据。文件头长度为14个字节。分别为:bffype:指定文件结构,必须是Ox424D,即字符串“BM ; bfSize:指定文件大小,包括这14个字节;bfReservedl,bfReserved2:分别为2个字节,为保存字,不用考虑:bfOffBits:从文件头到实际的图像数据的偏移字节数。信息 头 长 度为40个字节,分别为:biSize:指定这个结构的长度,为40,单位字节:biWidth, biHeight:指定图像的宽度和高度,单位为像素;biPlanes:必须为1; biBitCount:指定表示颜色时要用到的位数;biCompression:指定是否压缩:

13、biSizelmage:指定实际图像数据占用的字节数,注意,计算时图像宽度取大于等于biWidth的最小的4的整数倍数;biXPelsPerMeter, biYPelsPerMeter:指定目标设备的水平和垂直分辨率;biClrUsed:指定本图像实际用到的颜色数,如果该值为零,那么用到的颜色数为2的biBitCount次方:biCIrImportant:指定本图像中重要的颜色数,如果该值为零,那么所有的颜色都是重要的。第三局部为调色板,当然,这是对那些需要调色板的文件而言的。在这里,所采集的图像数据是真彩色624位)的,故不需要调色板。调色 板 实 际上是一个数组,共有biClrUsed个元

14、素。数组中每个元素占用4个字节,依次是一字节的蓝色分量,一字节的绿色分量,一字节的红色分量,以及一字节的保存值。第四局部就是实际的图像数据了。对于用到调色板的文件,图像数据是该像素值在调色板中的索引值。这里需要注意的是:每一行的字节数必须是4的整倍数,如果不是,那么需要补齐,这在biSizelmage中有介绍。一般来说 ,BMP文件的数据是从下到上,从左到右。也就是说,从文件中最先读到的是图像最下面一行的左边第一个像素,然后是左边第二个像素一接下来是倒数第二行左边第一个像素,以此类推,最后得到的是最上面一行的最右一个像素,这与采集出的图像数据顺序是不同的。每像素的顺序为BGR6.2.3 图像显

15、示原理本课程设计设计采用的是一个240X320分辨率的16位液晶屏幕,可以通过操作S3C2410内部的相关存放器来直接控制显示,由于采用了ARMLinux作为操作系统,可以直接操作“nux下的Framebuffer设备来完成图像的显示,帧缓冲(Framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的、统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。在应用程序中首先要翻开Framebuffer设备,在Linux系统中Framebuf

16、fer设备一般映射为/dev/fb,可以有多个设备。然后调用ioctl提供的借口获取设备信息,主要是获得当Framebuffer设备的分辨率、色深、每一行数据占的字节数。关键的一步是将屏幕缓冲区映射到用户空间,Framebuffer设备可以看成是显存的映像,但是Linux所有的设备驱动均在内核态工作,所以无法在当前进程空间中直接访问,通过映射机制可以直接把显存的起始地址映射到当前进程的地址空间,从而可以快速方便的实现显存,建立映射的方法如下:Pfd=mmap0,FBDraw_finfo,smem_len,PROT_READ|PROT_WRFTE,MAP_SHARED,df,0;/以read、w

17、rite和share方式映射屏幕上左边为x,y的点在显存中的位置是:Pfd+x*fb_vinfo.bits_pixel3+y*fb_finfo.line_length,对这个位置赋相应的颜色值就可以再屏幕上显示出来。需要注意的是当色深fb_vinfo.bits_per_pixel不同时,颜色值的格式也不一样。把经过图像处理后的图像数据或者采集到的原始图像数据转化成Framebuffer设备的颜色数据格式RGB565、RGB888等后,将数据复制到从地址pfb开始的内存中,就可以事先图像的显示。3 开发环境简介及搭建3.1 硬件平台数字图像处理系统是执行处理图像、分析理解图像信息任务的计算机系统

18、.尽管图像处理技术应用广泛,图像处理系统种类很多,但他们的根本组成是相近的口它们主要含有:图像输入设备、执行处理分析与控制的计算机图像处理机、输出设备、存储系统中的图像数据库、图像处理程序库与模型库。其中,负责执行图像处理与分析的图像处理机是整个系统的核心局部,它关系着图像的处理效果,及系统的整体性能。本系统选用的是韩国三星电子公司推出的一款基于ARM920T内核的S3C2410嵌入式微处理器。S3C2410把外部复位信号作为一个中断处理,在系统复位时,程序指针(PC)被设置为0,程序跳转到0 x00000000开始运行。此空间对应BankO,系统的2MB的NORFIash和处理器的Bank0

19、相连接。在NORFlash中存储的是BootLoader,它负责配置处理器的结构、工作模式以及自动检测系统的各个硬件是否工作正常。系统经过初始化和自检后,BootLoader负责把16MBNANDFlash的zlmage(即软件系统的镜像文件)复制到0 xc0008000地址(此地址是系统64MB SDRAM的首地址)。然后,引导程序把PC指向0 xc0008000地址,系统开始运行。3.2 系统软件平台构建结合S3C2410处理器的特点基于该芯片构建嵌入式图像处理系统,设计者必须考虑其通用性、响应速度及对于硬件的可操控性。正是基于这样的考虑,分三层构建嵌入式图像处理系统的软件体系:ARM L

20、inux的建立;图形用户界面(MiniGui)的移植;图像处理软件的设计编码。其中ARM Linux的建立是构建嵌入式Linux系统的通用步骤 3.3 LCD显示模块从S3C24 10的LCD控制器出来的信号线包括24根数据线和假设干根控制线。这些信号线是经过74HC245隔离后接到LCD模块的,对于256色LCD只需要其中低8位数据线即可(如下图)。LCD模块除了需要控制信号和数据信号外,还需要一个22V左右的工作电压和上千伏的背光电压。前者MAX629升压后得到,后者由一个逆变器模块提供。图3.3 S3C24 104 系统设计的与具体实现基于上文的阐述,本软件系统的具体实现丁作主要包括:图

21、像文件的读入、图像处理的具体实现等。下文将具体介绍实现工作。4.1 BMP文件的读入在嵌入式平台上,并没有现成的BMP文件的库函数可以使用。因此,如何把一个BMP文件读人到内存中进行图像处理算法移植的根本前提。本系统中,主要处理的图像有两大块:真彩图和256色的图像(包括256级厌度图),因此对应设计了两个BMP文件的读入函数,并将这两个函数放在Graphich和Graphicc中,以备后续的开发使用。两个函数为:GetTruePixel(char bmpnameIl,U32 color24011320J,int*mapwidthint*mapheight);Get256Pixel(char

22、bmpname。U8 cdorbutl240113201,U32 pale256int 4mapwidth,int*mapheight)。函数l用于将一个名称为bmpnameH的真彩图像数据读入color矩阵,同时获得图像的宽和高;函数2用于将一个名称为bmpname的256色图像数据读人colorbuf矩阵,同时,对应的调色板数据读入pale矩阵中并获得图像的宽和高。4.2 图像增强算法设计在图像处理中,当光学系统成像时出现背景与目标灰度范围相比照拟窄,即低比照度的情况,一般会采用对图像进行灰度的拉伸变换5,从而加大特征目标与背景的灰度差,实现图像增强,以利于提取出特征目标来灰度变换可分为线

23、性灰度变换、分段线性变换、非线性变换本研究采用线性灰度变换,该方法用于克服当图像由于成像时曝光缺乏或过度所产生的比照度缺乏的弊病假设原图像八茗,y)的灰度范围为a,b,希望变换后图像g(x,y)的灰度范围扩展到c,d,其数学表达式为:gx,y=c 0f(x,y)agx,y=(d-c)/(b-a)+c (af(x,y) b)gx,y=d (bf(x,y) Mf)式中:Mf表示x,y)的最大值4.3 图像分割算法设计经过图像增强后,要将一幅图像分解为假设干互不交叠的、有意义的、具有相同性质的区域,并从中提取出所感兴趣的目标,即图像分割图像分割有边缘检测和阈值分割,这里采用阈值分割方法阈值分割是基于

24、灰度阈值的分割方法,它通过设置阈值,把像素点按灰度级分假设干类,从而实现图像分割把一幅灰度图像转换成二值图像是阈值分割的最简单形式,设原始图像为fx,y),首先就是按一定准那么在fx,y)中找出一个灰度值t作为阈值,将图像分割为两局部,即把大于等于该阈值的像素点的值置成1,小于阈值的像素点置为0阈值运算后的图像为二值图像g(x,Y)gx,y=1 (f(x,y) t)gx,y=0 (f(x,y)t)上式中全局阈值t的选择直接影响到分割效果通常可以通过分析灰度直方图来确定它的值,最常见的方法是利用灰度直方图来确定它的值,利用灰度直方图求双峰,选择两峰之间谷底处的灰度值作为阈值4.4 图像平滑图像在

25、生成和传输过程中常受到各种嗓声的干扰和影响,使图像质量下降。为了抑制噪声改善图像质量,必须对图像进行平滑处理。通常,将数字图像的平滑技术4划分为两类。一类是全局处理,即对噪声图像的整体或大的块进行校正得到平滑图像。但这类方法需要知道信号和噪声的统计模型,且运算量较大。另一类平滑技术是对噪声图像使用局部算子。当对某一像素进行平滑处理时,仅对它的局部小邻域的一些像素加以运算,其优点是计算效率高,而且可以多个像素并行处理,因此可以实现实时或者准实时处理。1平滑线性滤波器(均值滤波)一般来说,假设MXN的图像(x,y)为给定的含有噪声的图像,用m*n大小的滤波器掩模进行线性滤波结果为g(x,y),在数

26、学上可以表现为:其中,a=(m-1)/12, b=(n-1)/12, w(s,t)为滤波器系数。为了得到一副完整的经过滤波处理的图像,必须对x=0,1,2,.M-1和y =0,工,2,.,N-1依次应用公式。这样,就保证了对图像中的所有像素进行了处理。一般可选取以下几种模板: 模版1 模版2 模版3比拟常用 的是模板3,它又被称为高斯(Gauss)模板,它为了突出模板中心像素本身的重要性,对所有的模板系数,不是一视同仁,而是引入了加权系数,可以看出,离原点距离越近的点,加权系数越大。空间均值处理的一个结果是,较大物体变得像“斑点而易于检测,但那些较小物体的强度与背景混合在了一起。为此,在滤波后

27、可增加阀值处理,即将滤波后的图像与选定的阀值相比拟,根据比拟结果断定最后的灰度值。该方法对抑制椒盐噪声比拟有效,对保护仅有微小灰度差的细节和纹理也有效。2平滑非线性滤波器(统计排序滤波器)统计排序 滤波器是一种非线性的空间滤波器,它的响应基于图像滤波器包围的图像区域中像素的排序,然后由统计排序结果断定的值代替中心像素的值。统计排序滤波器中最常见的例子就是中值滤波器,正如其名,它是将像素邻域内灰度的中值代替该像素的值。中值滤波器的主要功能是使拥有不同灰度的点看起来更接近于它的临近值。中值滤波器使用非常普遍,这是因为对于一定类型的随机噪声,它提供了一种优秀的去噪能力,比小尺寸的线性平滑滤波器的模糊

28、程度明显要低。中值滤波器对处理脉冲噪声(椒盐噪声)非常有效,因为这种噪声是以黑白点叠加在图像上的。尽管在图像处理中,中值滤波器是用得最广泛的统计滤波器,但这并不是说它是唯一的。所谓中值就是一系列像素值的第50%个值,当我们取100%个值,此时就是最大滤波器,相反,当取0%的值时就变成了最小滤波器。4.5 图像缩放平移以及转置一般采用插值法,有如下几种插值算法:最邻近插值近邻取样法:最临近插值的的思想很简单。对于通过反向变换得到的的一个浮点坐标,对其进行简单的取整,得到一个整数型坐标,这个整数型坐标对应的像素值就是目的像素的像素值,也就是说,取浮点坐标最邻近的左上角点对于DIB是右上角,因为它的

29、扫描行是逆序存储的对应的像素值。可见,最邻近插值简单且直观,但得到的图像质量不高。双线性内插值:对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为0,1)区间的浮点数,那么这个像素得值 f(i+u,j+v) 可由原图像中坐标为 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1)其中f(i,j)表示源图像(i,j)处的的像素值,以此类推这就是

30、双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。三次卷积法能够克服以上两种算法的缺乏,计算精度高,但计算量大,他考虑一个浮点坐标(i+u,j+v)周围的16个邻点,目的像素值f(i+u,j+v)可由如下插值公式得到:f(i+u,j+v) = A * B * CA= S(u + 1) S(u + 0) S(u - 1) S(u - 2) f(i-1, j-1) f(i-1, j+0) f(i-1, j+1) f(i-1, j+2) B= f(i+0, j-1)

31、f(i+0, j+0) f(i+0, j+1) f(i+0, j+2) f(i+1, j-1) f(i+1, j+0) f(i+1, j+1) f(i+1, j+2) f(i+2, j-1) f(i+2, j+0) f(i+2, j+1) f(i+2, j+2) S(v + 1) C= S(v + 0) S(v - 1) S(v - 2) 1-2*Abs(x)2+Abs(x)3 , 0=Abs(x)1S(x)= 4-8*Abs(x)+5*Abs(x)2-Abs(x)3 , 1=Abs(x)=2S(x)是对 Sin(x*Pi)/x 的逼近Pi是圆周率最邻近插值近邻取样法、双线性内插值、三次卷积法

32、 等插值算法对于旋转变换、错切变换、一般线性变换 和 非线性变换 都适用。5 程序主要源代码分析5.1 图像数据存储的主程序如下:FILE*file=fopen(O.bmp,wb);writebmpfileheader(file);/*写文件头函数*/writebmpinfoheader(file);/* 写信息头函数*/writeimagedata(file);/* 写图像数据函数*/fclose(fi le);写文件头和写信息头函数比拟简单,这里bfSize为230454;b iWidth,biHeight为320,240;bi Sizelmage为230400;biXPelsPerMet

33、er,bi YPelsPerMeter,biClrUsed,biCIrImportant均为Oa以下给出 writeimagedata(file)II 数的原型:voidwriteimagedata(FILE* file)Int datapointer;Int mydata ;for (int i= 0; i = 239; i+)/*共240行*/datapointer -data+(239-i )*3 20 ;/*data为采集映射时图像数据首地址,计算每一要写入的行在内存中的首地址*/for(int j= 0;j = 31 9;j + + )/* 共 320列*/mydata=*( dat

34、apointer+j);fwrite(&mydata,1, 1, fil e); /*写入一行数据*/ 5.2 图像平滑模块Typedef structunsigned short bfType;Unsigned bfSize;Unsigned short bfReserved 1;Unsigned short bfReserved 2;Unsigned bfOffBits;BMPHEADER;BMPHEADER header;Typedef structunsigned biSize;unsigned biWidth;unsigned biHeight;unsigned short bipl

35、anes;unsigned short biBitCount;unsigned biCompression;unsigned biSizelmage;unsigned biXpelsPerMeter;unsigned biYpelsPerMeter;unsigned biClrUsed;unsigned biClrUsed;unsigned biClrImportant; BMPINFOHEADER;BMPINFOHEADER infobeader;在进行处理之前,先读取文件信息,假设我们将采集到的数据存放成0.bmp文件;FILE*fp;Fp=fopen(“,“rb);fread(&(hea

36、der.bfType),2,1,fp);fread(&(header.bfSize),4,1,fp);fread(&(header.bfReserved),2,1,fp);fread(&(header.bfOffBits),4,1,fp);fread(&(header.bfzeof(BMPINFOHEADER),1,fp);接下来,将图像数据存入我们的内存中,并将图像数据灰度化:Unsigned char*prodata;Unsigned char*middledata;Int size=infoheader.bitSizeImage;Prodata=malloc(size);Fread(pr

37、odata,1,size,fp);Fclose(fp);For(z=0,zinfoheader.biSizeImage;z+)middledataz=(unsigned char)(*prodata+z+2)*3 +(unsigned char )(*(prodata+z+1)*0.6 + (unsigned char)(*prodata +z)*0.1);Z+;Middledataz=middledataz-1;Z+;Middledataz=middledataz-1; Memcpy(prodata,middledata,infoheader.biSizeImge);以下是高斯平滑的主程序:

38、Double Template9;/*运算模版*/Double Coef=(double)(1.0/16.0);/*模版均值*/*模版个稀疏声明*/Template0=1.0;Template1=2.0;Template2=1.0; Template3=2.0;Template4=4.0; Template5=2.0;Template6=1.0; Template7=2.0;Template8=1.0;For(x=1;xXSaveDim-1;x+)for(y=1;yYSaveDim-1;y+)/*XsaveDim,YsaveDim为图像存储尺寸,x,y从1开始并且以XsaveDim-1,Ysa

39、veDim-1结束,是为了去除边界*/forj=1;j3;j+for(k=0;k255)Result=255;Z=GetPixelOffset(x,y);Middledataz=(unsigned char)(Result+0.5);Z+;Middledataz=middledataz-1;Z+;Middledataz=middledataz-2;5.3 图像平移主要代码int Main(int argc, char *argv)ARMTargetInit(); OSInit(); uHALr_ResetMMU();LCD_Init(); LCD_printf(LCD initializati

40、on is OKn);LCD_printf(320 x 240 Text Moden);initOSGUI();LoadFont();LoadConfigSys();LCD_printf(Create task on uCOS-II.n);OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_StackSTACKSIZE*8-1, Main_Task_Prio); shuoF();OSTaskCreate(Main_Task2, (void *)0, (OS_STK *)&Main_Stack2STACKSIZE*8-1, Main_Task_P

41、rio);/ 创立系统任务OSAddTask_Init();LCD_printf(Starting uCOS-II.n);LCD_printf(Entering graph mode.n);LCD_ChangeMode(DspGraMode);InitRtc();Nand_Rw_Sem=OSSemCreate(1); OSStart();return 0;void Main_Task(void *Id) int x=0,y=0; char xz=x:; char yz=y:; U16 x1100,y1100,textcontext120,*text1context,*text2context,

42、textinit120;/ char textcontext=; char textinit=0; char bmpname12=1,2,7,_,1,3, , ,B,M,P,0; strChar2Unicode(x1,xz); strChar2Unicode(y1,yz); strChar2Unicode(textcontext1,textcontext); strChar2Unicode(textinit1,textinit); pposition1=&position1; poutrect=&outrect; poutrect1=&outrect1; outrect.left=240; o

43、utrect.top=20; outrect.right=300; outrect.bottom=40; outrect1.left=240; outrect1.top=50; outrect1.right=300; outrect1.bottom=70; outrect2.left=0; outrect2.top=0; outrect2.right=200; outrect2.bottom=240; text1=CreateTextCtrl(100,poutrect,1,3,NULL,NULL); text2=CreateTextCtrl(101,poutrect1,1,3,NULL,NUL

44、L); SetTextCtrlText(text1,textinit1,TRUE); SetTextCtrlText(text2,textinit1,TRUE); LCD_ChangeMode(DspGraMode); pdc=CreateDC(); ClearScreen(); TextOut(pdc,220,30,x1,TRUE,1); TextOut(pdc,220,60,y1,TRUE,1); DrawTextCtrl(text1); DrawTextCtrl(text2); DrawRectFrame(pdc,0,0,200,240); while(1) ClearScreen(); ShowBmp(pdc,bmpname,50,pos); itoa(50,strx); itoa(pos,stry); pos+=10; if(pos=150) pos=0; for(t=0;t5;t+) textinit1t=strxt; SetTextCtrlText(text1,textinit1,TRUE); for(t=0;t=0;i-)pbmp=bmp;if(!ReadOSFile(pfile, bmp,wold*nbyte+(wold*nbyte)%2)break;fo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论