基于ARM嵌入式图像处理系统设计与实现论文.docx
《基于ARM嵌入式图像处理系统设计与实现论文.docx》由会员分享,可在线阅读,更多相关《基于ARM嵌入式图像处理系统设计与实现论文.docx(22页珍藏版)》请在冰豆网上搜索。
![基于ARM嵌入式图像处理系统设计与实现论文.docx](https://file1.bdocx.com/fileroot1/2022-10/12/d3eb8d81-5f92-4e5d-9a80-50cdbb6bfdaf/d3eb8d81-5f92-4e5d-9a80-50cdbb6bfdaf1.gif)
基于ARM嵌入式图像处理系统设计与实现论文
目录
摘要2
1引言1
1.1课程设计的意义1
1.2课程设计的目的1
2系统设计原理2
2.1图像处理技术原理和成像原理2
2.2BMP文件格式简介2
2.3图像显示原理3
3开发环境简介及搭建5
3.1硬件平台5
3.2系统软件平台构建5
3.3LCD显示模块5
4系统设计的与具体实现7
4.1BMP文件的读入7
4.2图像增强算法设计7
4.3图像分割算法设计8
4.4图像平滑8
4.5图像缩放(平移以及转置)10
5程序主要源代码分析12
5.1图像数据存储的主程序如下:
12
5.3图像平移主要代码15
5.4图像缩放主要代码18
5.5转置图像主要代码21
6运行测试结果23
6.1图像平移效果23
6.2图像转置效果24
6.3图像的缩放效果24
7总结25
参考文献26
基于ARM嵌入式图像处理系统设计与实现
学生姓名:
王涛指导老师:
蔡烁
摘要针对现在的过程检测的实时需求,设计出一种成本低,功能始终的图像处理采集系统。
该系统以ARM7(S3C44BOX)为核心并配上外围电路实现图像处理功能,在加上多种通讯接口设计的图像传输通道,然后加入SD卡接口用于提取图像数据。
最后基于uC/OS-Ⅱ嵌入式操作系统设计了一种图像处理方法,在系统中实现了图像增强、图像分割和目标定个位。
实验表明,该系统能够很好地解决在线处理功能的实时问题,图像处理的准确率也满足了过程检测系统的要求,而且实现简单,成本比较低,特别适合对于功耗、体积要求较严格的过程检测系统。
关键词ARM;图像处理系统;图像增强;目标定位
1引言
1.1课程设计的意义
图像处理技术在工业自动化、仪表检测安全、以及安全、消费电子、医学中被越来越广泛的应用。
在现代战争中,利用图像进行精确制导、火控、无人飞机的电视导航等,在国防中也受到了高度的重视。
图像处理算法中常有大量的运算,特别是在实时图像处理方面,因此通常采用DSP[1]或FPGA[3]来实现。
但随着微处理器技术的突飞猛进,现代MPU[1]也可以完成高速的数字图像处理。
作为嵌入式图像处理技术,其主要技术包括两个方面,一个是图像处理技术,另一个则是嵌入式系统[4]应用技术。
本文主要研究图像处理技术在嵌入式系统中的应用。
1.2课程设计的目的
本课程设计的目的旨在研究一种能够进行高速图像处理[5]的嵌入式系统架构的设计与实现方法。
针对嵌入式系统本身的特点,设计出具有较强通用性的嵌入式图像处理平台。
利用嵌入式系统进行图像处理是对传统的图像处理硬件实现方法的挑战.它的完成将为图像处理的开辟新的实现途径,并且为嵌入式系统的应用再次打开一片新的领域,同时,由于图像处理的应用十分广泛,其本身也有广泛的应用前景。
图像数据是一种重要的信息资源,随着以计算机和计算机技术为核心的信息科学的发展,图像处理在通讯、管理、医学、地震、气象、航空航天以及教育等领域,发挥着愈来愈重要的作用。
但传统的图像处理技术主要依赖于大批量的电子计算设备,它们带来巨大的保养、增加行业成本。
嵌入式平台拥有小巧、价格低廉、功耗小及维护成本低等优点。
因此基于嵌入式平台构建图像处理系统可以降低其生产维护成本,提高其可靠性和可控件,具有较高的市场价值。
本文主要针对采集到的图像(bmp格式)实现平移、转置、缩放、平滑等处理。
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:
指定这个结构的长度,为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,可以有多个设备。
然后调用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设备的颜色数据格式(RGB565、RGB888等)后,将数据复制到从地址pfb开始的内存中,就可以事先图像的显示。
3开发环境简介及搭建
3.1硬件平台
数字图像处理系统是执行处理图像、分析理解图像信息任务的计算机系统.尽管图像处理技术应用广泛,图像处理系统种类很多,但他们的基本组成是相近的口它们主要含有:
图像输入设备、执行处理分析与控制的计算机图像处理机、输出设备、存储系统中的图像数据库、图像处理程序库与模型库。
其中,负责执行图像处理与分析的图像处理机是整个系统的核心部分,它关系着图像的处理效果,及系统的整体性能。
本系统选用的是韩国三星电子公司推出的一款基于ARM920T内核的S3C2410嵌入式微处理器。
S3C2410把外部复位信号作为一个中断处理,在系统复位时,程序指针(PC)被设置为0,程序跳转到0x00000000开始运行。
此空间对应BankO,系统的2MB的NORFIash和处理器的Bank0相连接。
在NORFlash中存储的是BootLoader,它负责配置处理器的结构、工作模式以及自动检测系统的各个硬件是否工作正常。
系统经过初始化和自检后,BootLoader负责把16MBNANDFlash的zlmage(即软件系统的镜像文件)复制到0xc0008000地址(此地址是系统64MBSDRAM的首地址)。
然后,引导程序把PC指向0xc0008000地址,系统开始运行。
3.2系统软件平台构建
结合S3C2410处理器的特点.基于该芯片构建嵌入式图像处理系统,设计者必须考虑其通用性、响应速度及对于硬件的可操控性。
正是基于这样的考虑,分三层构建嵌入式图像处理系统的软件体系:
ARMLinux的建立;图形用户界面(MiniGui)的移植;图像处理软件的设计编码。
其中ARMLinux的建立是构建嵌入式Linux系统的通用步骤.
3.3LCD显示模块
从S3C2410的LCD控制器出来的信号线包括24根数据线和若干根控制线。
这些信号线是经过74HC245隔离后接到LCD模块的,对于256色LCD只需要其中低8位数据线即可(如图所示)。
LCD模块除了需要控制信号和数据信号外,还需要一个22V左右的工作电压和上千伏的背光电压。
前者MAX629升压后得到,后者由一个逆变器模块提供。
图3.3S3C2410
4系统设计的与具体实现
基于上文的阐述,本软件系统的具体实现丁作主要包括:
图像文件的读入、图像处理的具体实现等。
下文将具体介绍实现工作。
4.1BMP文件的读入
在嵌入式平台上,并没有现成的BMP文件的库函数可以使用。
因此,如何把一个BMP文件读人到内存中进行图像处理算法移植的根本前提。
本系统中,主要处理的图像有两大块:
真彩图和256色的图像(包括256级厌度图),因此对应设计了两个BMP文件的读入函数,并将这两个函数放在Graphic.h和Graphic.c中,以备后续的开发使用。
两个函数为:
GetTruePixel