目录摘要..............................................................21引言.............................................................11.1课程设计的意义..............................................11.2课程设计的目的..............................................12系统设计原理.....................................................22.1图像处理技术原理和成像原理...................................22.2BMP文件格式简介.............................................22.3图像显示原理................................................33开发环境简介及搭建...............................................53.1硬件平台....................................................53.2系统软件平台构建............................................53.3LCD显示模块.................................................54系统设计的与具体实现.............................................74.1BMP文件的读入...............................................74.2图像增强算法设计............................................74.3图像分割算法设计............................................84.4图像平滑....................................................84.5图像缩放(平移以及转置)...................................105程序主要源代码分析..............................................125.1图像数据存储的主程序如下:..................................125.3图像平移主要代码...........................................155.4图像缩放主要代码...........................................185.5转置图像主要代码...........................................216运行测试结果....................................................236.1图像平移效果................................................236.2图像转置效果................................................246.3图像的缩放效果..............................................247总结............................................................25参考文献..........................................................26基于ARM嵌入式图像处理系统设计与实现学生姓名:王涛指导老师:蔡烁摘要针对现在的过程检测的实时需求,设计出一种成本低,功能始终的图像处理采集系统。该系统以ARM7(S3C44BOX)为核心并配上外围电路实现图像处理功能,在加上多种通讯接口设计的图像传输通道,然后加入SD卡接口用于提取图像数据。最后基于uC/OS-Ⅱ嵌入式操作系统设计了一种图像处理方法,在系统中实现了图像增强、图像分割和目标定个位。实验表明,该系统能够很好地解决在线处理功能的实时问题,图像处理的准确率也满足了过程检测系统的要求,而且实现简单,成本比较低,特别适合对于功耗、体积要求较严格的过程检测系统。关键词ARM;图像处理系统;图像增强;目标定位王涛《基于ARM嵌入式图像处理系统设计与实现》第1页共28页1引言1.1课程设计的意义图像处理技术在工业自动化、仪表检测安全、以及安全、消费电子、医学中被越来越广泛的应用。在现代战争中,利用图像进行精确制导、火控、无人飞机的电视导航等,在国防中也受到了高度的重视。图像处理算法中常有大量的运算,特别是在实时图像处理方面,因此通常采用DSP[1]或FPGA[3]来实现。但随着微处理器技术的突飞猛进,现代MPU[1]也可以完成高速的数字图像处理。作为嵌入式图像处理技术,其主要技术包括两个方面,一个是图像处理技术,另一个则是嵌入式系统[4]应用技术。本文主要研究图像处理技术在嵌入式系统中的应用。1.2课程设计的目的本课程设计的目的旨在研究一种能够进行高速图像处理[5]的嵌入式系统架构的设计与实现方法。针对嵌入式系统本身的特点,设计出具有较强通用性的嵌入式图像处理平台。利用嵌入式系统进行图像处理是对传统的图像处理硬件实现方法的挑战.它的完成将为图像处理的开辟新的实现途径,并且为嵌入式系统的应用再次打开一片新的领域,同时,由于图像处理的应用十分广泛,其本身也有广泛的应用前景。图像数据是一种重要的信息资源,随着以计算机和计算机技术为核心的信息科学的发展,图像处理在通讯、管理、医学、地震、气象、航空航天以及教育等领域,发挥着愈来愈重要的作用。但传统的图像处理技术主要依赖于大批量的电子计算设备,它们带来巨大的保养、增加行业成本。嵌入式平台拥有小巧、价格低廉、功耗小及维护成本低等优点。因此基于嵌入式平台构建图像处理系统可以降低其生产维护成本,提高其可靠性和可控件,具有较高的市场价值。本文主要针对采集到的图像(bmp格式)实现平移、转置、缩放、平滑等处理。王涛《基于ARM嵌入式图像处理系统设计与实现》第2页共28页2系统设计原理2.1图像处理技术原理和成像原理图像处理技术又称“机器视觉”[5],乃是将被测对象的图像作为信息的载体,从中提取有用的信息来达到测量的目的,具有非接触、高速、获得信息丰富等优点。系统一般通过摄像头采集对象的图像信息,然后通过处理系统对采集到的图像进行数字化的处理和分析,根据检测要求可得到对象的特征信息,随后进一步对此进行判断并输出结果。如图2.1所示,连杆的表面缺陷通过一个方形LED漫反射光源均匀照亮待检测的破口区域,光线照射到对象表面后,通过光学镜头成像在摄像头内的光电耦合CCD元件[3]上并转化成相应的数字图像信号,CCD元件可理解为一个由感光像素组成的点阵,每一个像素都一一对应了被测对象的二维图像特征。数字图像信号经过图像处理系统对图像特征信息的提取和计算得到所需的测量值,随后通过RS232通讯接口把数据传输给PLC进行逻辑判断,判断的结果直接通过设备前面板上的指示灯输出。CCD透镜LED光源对象CCD摄像机图2.1摄像头采集对象的图像信息2.2BMP文件格式简介一个BMP文件包括以下四部分:文件头,信息头,调色板数据和图像数据。文件头长度为14个字节。分别为:bffype:指定文件结构,必须是Ox424D,即字符串“BM;bfSize:指定文件大小,包括这14个字节;bfReservedl,bfReserved2:分别为2个字节,为保留字,不用考虑:bfOffBits:从文件头到实际的图像数据的偏移字节数。信息头长度为40个字节,分别为:biSize:指定这个结构的长王涛《基于ARM嵌入式图像处理系统设计与实现》第3页共28页度,为40,单位字节:biWidth,biHeight:指定图像的宽度和高度,单位为像素;biPlanes:必须为1;biBitCount:指定表示颜色时要用到的位数;biCompression:指定是否压缩:biSizelmage:指定实际图像数据占用的字节数,注意,计算时图像宽度取大于等于biWidth的最小的4的整数倍数;biXPelsPerMeter,biYPelsPerMeter:指定目标设备的水平和垂直分辨率;biClrUsed:指定本图像实际用到的颜色数,如果该值为零,则用到的颜色数为2的biBitCount次方:biCIrImportant:指定本图像中重要的颜色数,如果该值为零,则所有的颜色都是重要的。第三部分为调色板,当然,这是对那些需要调色板的文件而言的。在这里,所采集的图像数据是真彩色[6]〔24位)的,故不需要调色板。调色板实际上是一个数组,共有biClrUsed个元素。数组中每个元素占用4个字节,依次是一字节的蓝色分量,一字节的绿色分量,一字节的红色分量,以及一字节的保留值。第四部分就是实际的图像数据了。对于用到调色板的文件,图像数据是该像素值在调色板中的索引值。这里需要注意的是:每一行的字节数必须是4的整倍数,如果不是,则需要补齐,这在biSizelmage中有介绍。一般来说,BMP文件的数据是从下到上,从左到右。也就是说,从文件中最先读到的是图像最下面一行的左边第一个像素,然后是左边第二个像素一接下来是倒数第二行左边第一个像素⋯,以此类推,最后得到的是最上面一行的最右一个像素,这与采集出的图像数据顺序是不同的。每像素的顺序为BGR[6].2.3图像显示原理本课程设计设计采用的是一个240X320分辨率的16位液晶屏幕,可以通过操作S3C2410内部的相关寄存器来直接控制显示,由于采用了ARM—Linux作为操作系统,可以直接操作“nux下的Framebuffer设备来完成图像的显示,帧缓冲(Framebuffer)是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。这种操作是抽象的、统一的。用户不必关心物理显存的位置、换页机制等等具体细节。这些都是由Framebuffer设备驱动来完成的。在应用程序中首先要打开Framebuffer设备,在Linux系统中Framebuffer设备一般映射为/dev/fb,可王涛《基于ARM嵌入式图像处理系统设计与实现》第4页共28页以有多个设备。然后调用ioctl提供的借口获取设备信息,主要是获得当Framebuffer设备的分辨率、色深、每一行数据占的字节数。关键的一步是将屏幕缓冲区映射到用户空间,Framebuffer设备可以看成是显存的映像,但是Linux所有的设备驱动均在内核态工作,所以无法在当前进程空间中直接访问,通过映射机制可以直接把显存的起始地址映射到当前进程的地址空间,从而可以快速方便的实现显存,建立映射的方法如下:Pfd=mmap(0,FBDraw_finfo,smem_len,PROT_READ|PROT_WRFTE,MAP_SHARED,df,0);//以read、write和share方式映射屏幕上左边为(x,y)的点在显存中的位置是:Pfd+x*(fb_vinfo.bits_pixel)3)+y*fb_finfo.line_length,对这个位置赋相应的颜色值就可以再屏幕上显示出来。需要注意的是当色深(fb_vinfo.bits_per_pixel)不同时,颜色值的格式也不一样。把经过图像处理后的图像数据或者采集到的原始图像数据转化成Framebuffer设备的颜色数据格式(RGB56