基于ARM处理器S3C2440的越界检测预警系统设计 - 图文

更新时间:2023-03-11 08:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计

基于ARM处理器S3C2440的越界检测

预警系统设计

学生姓名 吴海锋 学 号 080910126

学 院 计算机与电子信息工程

专 业 电子信息工程 班 级 电信0804 指导教师 周开军 职 称

讲师

湖 南 商 学 院

2012年5月

湖南商学院本科毕业设计诚信声明

本人郑重声明:所呈交的本科毕业设计,是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议,除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。

本科毕业设计作者签名:

年 月 日

湖南商学院毕业设计

内容摘要

越界检测预警系统是用嵌入式平台搭配嵌入式Linux系统采用视频监控、图像识别、运动学检测等技术来实现视频监控。也可以称之为视频监控系统。借助于计算机强大而快速的数据处理能力过滤掉视频画面无用的信息以及干扰信息。系统能够自动识别不同物体,并且分析抽取视频源中的有用信息,准确而快速的定位事故的现场,判断监控现场非正常情况,从而用最快的速度报警。非常有效地完成事前预警,事中处理,事后及时取证的全天候、全自动、实时监控的功能。该系统主要包括三个动作:视频采集、对运动的物体做出判断以及发现越界物体报警。本文的核心内容是嵌入式Linux系统,整个越界检测系统由以下三部分组成:嵌入式硬件开发平台,通用usb摄像头和带触摸功能的LCD显示。嵌入式硬件开发平台是整个系统的控制核心,它运行嵌入式Linux系统,控制摄像头、触摸屏和LCD,采用Linux作为嵌入式操作系统,通过对Linux的万能摄像头驱动v4l2驱动进行参数设置,控制摄像头的启动、采集图像、存储、图像处理和关闭摄像头等一系列的动作。

视频监控系统广泛应用于小区监控、交通管理监控等领域,本论文就是基于这种需求的基础上所进行的研究,论文基于Linux系统上,对摄像头驱动v4l2驱动进行参数修改,实现对摄像头的读取,在QT界面上显示相关视频数据。本论文介绍了嵌入式监控系统的相关技术及本程序的结构分析和具体功能的实现。

关键字

S3C2440; Linux; 视频采集; Otsu算法

湖南商学院毕业设计

ABSTRACT

Cross the border inspection warning system is to use embedded platform embedded Linux system USES tie-in video monitoring, image recognition, kinematics detection technology to realize the video monitoring. Also can call video monitoring system. With the powerful and fast computer data processing ability to filter out video screen useless

information and disrupting the information. System can automatic identification of different object, and analysis of the useful information from video source, accurate and rapid location at the scene of the accident, judge the abnormal condition monitoring, and with the fastest speed report to the police. Very effectively do advance warning, and deal with the affair, later timely evidence, full automatic, all-weather real-time monitoring of function. The system mainly includes three action: video collection, of the movement to make judgments and found objects cross-border object alarm. This paper is the core content of the embedded Linux system, the whole cross-border detection system is made up of the following three parts: the embedded hardware development platform, and general usb cameras and touch the function with LCD display. Embedded hardware development platform is the entire system of control core, it run embedded Linux system, control the camera, touch screen and LCD, using Linux as embedded operating system, through to the Linux universal camera driving v4l2 driver set parameters, control of the camera start, collecting images, storage, image processing and closed camera etc a series of actions.

Video monitoring system applied to village monitoring, traffic management monitoring, etc, this paper is based on the needs of the basis of the research, based on Linux system, the camera driving v4l2 drive change the parameters, and to realize the read of the camera, in QT interface shown on video related data. This paper introduces the embedded control system in the relevant technology and this program structure analysis and the realization of the function of concrete.

KEY WORDS

S3C2440; Linux; Video Capture; Otsu arithmetic

湖南商学院毕业设计

目 录

目 录 ................................................................................................................................... 1 1. 绪 论 .................................................................................................................................. 1

1.1 研究的目的及意义 .................................................................................................... 1

1.1.1 研究目的 ........................................................................................................ 1 1.1.2 课题研究的意义 ............................................................................................ 1 1.2 课题研究的现状、发展趋势和应用 ........................................................................ 2

1.2.1 课题研究现状 ................................................................................................ 2 1.2.2 视频监控技术的发展趋势 ............................................................................ 2 1.2.3 视频监控在生活中的主要应用 .................................................................... 3 1.3 嵌入式开发平台概述 ................................................................................................ 3

1.3.1 嵌入式处理器的特点和分类 ........................................................................ 4 1.3.2 嵌入式处理器的特点 .................................................................................... 4 1.4 ARM处理器介绍 ....................................................................................................... 4

1.4.1 S3C2440的结构 ............................................................................................. 5

2. 越界检测系统的总体设计 .......................................................................................... 7

2.1 系统的总体架构和功能 ............................................................................................ 7 2.2 越界检测预警系统的关键技术分析 ........................................................................ 8 2.3 摄像头介绍 ................................................................................................................ 8 2.4 系统结构 .................................................................................................................... 9

3. 嵌入式 LINUX 应用软件平台搭建 ..................................................................... 10

3.1 嵌入式 LINUX 系统概述 ...................................................................................... 10 3.2 嵌入式 LINUX 系统移植 ...................................................................................... 10

3.2.1 Bootloader 的介绍及移植 ........................................................................... 10 3.2.2 Linux 系统的移植 ........................................................................................ 13 3.2.3 系统的调试工具 .......................................................................................... 19 3.3 QT .............................................................................................................................. 21

湖南商学院毕业设计

3.3.1 QT的介绍和安装 ......................................................................................... 21 3.3.2 QT的安装方法 ............................................................................................. 21

4. 软件设计 ......................................................................................................................... 24

4.1 视屏采集模块 .......................................................................................................... 24 4.2 视屏传输与播放 ...................................................................................................... 25 4.3 图像识别算法 .......................................................................................................... 26

4.3.1 图像灰度化 .................................................................................................. 26 4.3.2 图像差值运算 .............................................................................................. 26 4.3.3 图像中值滤波理论 ...................................................................................... 27 4.3.4 基于Otsu算法的图像二值化 ..................................................................... 30

5. 系统测试与分析 ........................................................................................................... 31

5.1 系统关键部分测试分析 .......................................................................................... 31 5.2 系统分析总结及说明 .............................................................................................. 31 5.3 测试结果 .................................................................................................................. 31

5.3.1 测试性能分析 .............................................................................................. 31 5.3.2 测试结果分析 .............................................................................................. 32

6. 结论 .................................................................................................................................. 33 参考文献 .............................................................................................................................. 34 致 谢 ................................................................................................................................... 37 附录1: USB摄像头驱动代码 ....................................................................................... 38 附录2: Otsu算法Matlab程序 ...................................................................................... 42 附录3: S3C2440 CPU1电路图 ..................................................................................... 44 附录4: S3C2440 CPU2电路图 ..................................................................................... 45 附录5: S3C2440 CPU3电路图 ..................................................................................... 46 附录6: 内存电路图 .......................................................................................... 47 附录7: 串口、USB、电源和蜂鸣器电路图 ........................................................... 48

湖南商学院毕业设计

基于ARM处理器S3C2440的越界检测预警系统设计

1. 绪 论

1.1 研究的目的及意义

1.1.1 研究目的

随着科学技术的不断发展和人民生活水平逐步提高,远程监控系统广泛应用于科学实验、安全保障、卫生保健等领域,人们在外观,函数的要求也越来越高。

视频监控是使用机器视觉和图像处理方法的图像序列的运动检测、运动目标分类、和监控场景目标行为的理解和描述。其中,运动检测和目标分类属于视觉处理过程。行为的理解和描述属于更加先进的技术。动作识别,运动目标分类和及时的报警行为是视频监控研究的比较频繁的三个问题。而行为的理解和描述是近年来被广泛而深入关注的研究热点,指对目标的运动模式的分析和识别,并用自然语言来描述出来,等等。这是不外是智能化的一个小方向,智能化在现代广泛而深入地影响我们的生活,比如说现在流行的智能手机,还有许多其他的智能手持设备,在当今非常火热。由此也可见社会群体对智能化的热衷,我们看到的更多的是智能化的发展前景,智能化是未来的生活方向,现在很多非智能化的电子设备在将来都会被智能化电子设备所取代。

本课题设计也是基于对智能化的热衷,希望通过这次的毕业设计,能加深对智能化的理解,也能更加熟悉的使用Linux系统和嵌入式,为我工作打下坚实的基础。虽然工作方向并不是这个,但是嵌入式是当今社会的一个热点,为了赶上时代的潮流,跟上时代的步法,我自学了Linux系统和嵌入式,在老师与同学的帮助下一步一步的加深自己的知识库。 1.1.2 课题研究的意义

现代社会人们对安全问题越来越关注,并且希望自己的生活环境能够更加安全,从而生活得更加舒适。我的设计是基于家庭安全或公司安全上考虑的一个实用性的系统

该系统能对画面实行实时监控,并能检测出运动着的物体,并实现智能报警。在现实中,这样的系统是非常实用的,我们可以为家庭安装一个这样的系统,一旦有不

第 1页 共 49 页

湖南商学院毕业设计

明人物进入画面,马上报警,这样可以有效减少不法分子的盗窃或者其他违法行为,提高了居民生活的安全保障。在一个公司也是一样,能保障公司的财产安全以及各种公司机密。

1.2 课题研究的现状、发展趋势和应用

1.2.1 课题研究现状

随着计算机技术及网络技术的迅猛发展,公安、安防行业的发展趋势必然是全面数字化。传统的模拟闭路电视监控系统有很多局限性,不但传输距离有限,而且模拟的视频信号需要消耗非常大的存储介质,当需要重查或者是取证的的时候都很不方便。视频监控系统的终端能力非常强大,只是没有那么好的稳定性,视频前端例如电压耦合元件等视频信号的采集、压缩、通讯就比较的复杂,可靠性也不是很高。基于嵌入式Linux视频的监控系统不需要用于处理模拟视频信号的个人计算机,而是把视频服务器内置一个嵌入式服务器,采用嵌入式多任务的实时操作系统。嵌入式Linux的视频监控系统中的视频服务器内置有一个嵌入式服务器,摄像机传送来的视频信号数字化后由高效压缩芯片压缩,通过内部总线传送到内置的服务器上。 1.2.2 视频监控技术的发展趋势

视频监控技术的发展过程可分为以下四个阶段: (1) 传统的模拟闭路电视系统。

闭路电视系统构建的模拟系统是通过监视器、摄像机、磁带录像机等等构成的简单的系统。对于模拟矩阵来说,要做到数十路的切换还是比较困难的,而且不能与报警系统联合行动,又不能实现对前端的控制。这样的系统价格昂贵、操作管理复杂、性价比极低,现在已经渐渐被其他系统或设备所取代。

(2) 数控模拟监控系统。

数控模拟监控系统视频监控系统在第一代的基础上做出了非常大的改善。从中有出现了一种处理器和PC上位机相结合的视频监控系统和以多媒体形式进行管理的两种不同系统。

(3) 数字化存储的视频监控系统 。

经过第二代数控模拟系统的铺垫,第三代又有了飞跃性的发展,这一代都是采用

第 2页 共 49 页

湖南商学院毕业设计

数字硬盘作为存储,并且开始向网络,视频压缩传输等方向进行发展。

(4) 采用网络交互技术的视频监控系统 。

现在的数字网络监控系统存在于我们生活的各个方面,基本每个对安全有要得地方都安装了网络摄像设备,这也是基于现在社会对安全稳定生活的一个需要,可以说有需要得地方就会有发展,有发展的地方就会有奇迹。 1.2.3 视频监控在生活中的主要应用

? 医疗系统中的应用有:日常的安全管理监控、手术直播及教学系统、特殊看护病房的视频监控、等等。

? 钢铁系统中的应用有:安全生产管理的监控系统等等;

? 铁路系统中的应用有:应急指挥系统、站内安全管理、站内调度管理系统等等; ? 税务系统中的应用有:报税服务大厅和其他地区的监控系统等等;

? 石化系统中的应用有:石油化工储油库监控、工厂安全生产监控、加油站监控、油井监控等等;

? 银行系统中的应用有:金库监控、监控系统、银行联网储蓄监控的等等; ? 部队系统中的应用有:基层日常管理的监控系统、仓储物资监控、作战指挥系统、通信机房监控等等;

? 电力系统中的应用有:发电厂安全生产管理监控、变电站无人值守、机房无人值守等等;

? 公检法系统中的应用有:城市安全监控、社区监控、监狱安全监控、庭审直播等等;

? 教育系统中的应用有:远程教育、网络教学、电子考场监控、校园安全监控等等;

1.3 嵌入式开发平台概述

嵌入式硬件平台是嵌入式系统开发的基础,在进行嵌入式开发之前,一定要合理的选择嵌入式开发平台。本课题采用的嵌入式硬件开发平台是三星公司推出的高性能32位微处理器S3C2440。S3C2440的内核是ARM920T,具有强大的指令结构和运算功能。下面我们将介绍嵌入式微处理器的特点和体系结构

第 3页 共 49 页

湖南商学院毕业设计

1.3.1 嵌入式处理器的特点和分类

嵌入式处理器是嵌入式系统的核心,是控制和辅助系统运行的硬件单元。据统计,世界上已经有超过1500多种嵌入式处理器,其中,有50多个系列的处理器是主流的体系结构。处理器的功能能也越来越强大,内存空间越来越大,运算速度也越来越高。 1.3.2 嵌入式处理器的特点

(1) 安全。存储区拥有很好的保护功能。嵌入式系统的软件结构一般为模块化,为了避免在软件模块之间出现错误的交叉作用,需要设计强大的存储区保护功能,对于软件的故障诊断有很大的好处。

(2) 支持实时操作系统。能够实现多任务并且有较短的中断响应时间,从而使内部的代码和实时内核的执行时间减少到最低限度。

(3) 可扩展的处理器结构。运用非常灵活,能够快速开发出满足各种应用和高性能的嵌入式微处理器。

(4) 功耗低。降低功耗已经是现在嵌入式处理器的一个发展方向,特别是用于便携式的无线设备和移动计算以及通信设备的嵌入式系统,功耗都已经非常低,有的甚至达到了uW级。

1.4 ARM处理器介绍

ARM是一个公司名称,ARM公司是全球领先的 16/32 位 RISC 微处理器知识产权设计供应商。ARM 公司通过转让高性能、低成本、低功耗的 RISC 微处理器、外围和系统芯片设计技术给合作伙伴,使他们能用这些技术来生产各具特色的芯片。ARM已成为移动通信、手持设备、多媒体数字消费嵌入式解决方案的RISC标准。ARM处理器有三大特点:小体积、低功耗、低成本而高性能;16/32位双指令集;

ARM处理器主要的系列产品:ARM7 、ARM9 、ARM9E、ARM10和SecurCore。其中ARM7 是低功耗的 32位核,最适合应用于对价位和功耗敏感的产品,它又分为应用于实时环境的ARM7TDMI,ARM7TDMI-S,以及适用于开放平台的 ARM720T和适用于 DSP 运算及支持Java 的ARM7EJ 等。

第 4页 共 49 页

1.4.1 S3C2440的结构

湖南商学院毕业设计

S3C2440A 是基于ARM920T核心,具有0.13 μm 的CMOS 标准宏单元和存储器单元。功耗低,性价比高。它的总线架构是先进微控制总线构架(AMBA)。S3C2440A的处理器核心是有ARM公司设计的16/32 位ARM920T 的RISC处理器,这是其最为突出的特点。具有独立的16KB的高速指令缓存和数据缓存,并且都是8字长,采用五级流水线,MMU,AMBA 总线和哈佛结构高速缓冲体系结构,采用统一的FBGA封装,具有289个引脚。

S3C2440的内部工作电压为1.2V,内存电压是1.8V/2.5V/3.3V,I/O输出电压为3.3V,具有支持4K色STN和256色TFT的LCD控制器,还有一个LCD专用的DMA通道。支持64字节发送FIFO和64字节接收FIFO的UART通道,外部扩展内存控制器,拥有四通道的DMA,支持SPI,IIC,AC’97编解码借口,IIS,USB主机和从机设备,8路的ADC接口,兼容SD主接口协议1.0版和MMC卡协议2.11兼容版,支持RTC并具有日历功能,有摄像头借口,PWM定时器和内部定时器/看门狗定时器,支持多种类型的ROM启动,具有130个GPIO口和24通道外部中断源,具有普通、慢速、空闲和掉电四种工作模式和PLL。

图1.1为S3C2440的整体机构框图:

第 5页 共 49 页

湖南商学院毕业设计

图1.1 系统主控模块的电路方框

第 6页 共 49 页

湖南商学院毕业设计

2. 越界检测系统的总体设计

2.1 系统的总体架构和功能

Linux是一类Unix计算机操作系统的统称。它是用一个C语言和汇编语言写成,符合POSIX标准的类Unix操作系统。

在S3C2440上运行剪裁过的Linux系统,在系统中编写好图像采集应用程序与驱动程序。通过显示驱动程序编写及移植,在LCD上能够实现正常的视频播放。系统需要不停地的采集摄像头传来的数据,设置好背景图像,先要计算当前图像与背景图像的差,然后对差分图像进行二值化,然后对二值化后的图像进行形态学处理,再对形态学处理的结果进行连通域处理,当某一连通区域的面积(像素数)大于一定的阈值,就可以认为是出现检测目标,并认为这个连通的区域就是提取出的目标图像。

嵌入式Linux视频监控系统是电工电子装置、计算机软硬件以及通信等多方面的有机组合体,它以智能化、交互性为特征,结构相对比较复杂。摄像头传送来的视频信号数字化后,将数据送到arm板处理显示出来,同时实现智能化异常报警功能。其系统总体框架示意图如图2.1所示。

摄像头 信号采集设备 嵌入式Linux系统 图像处理 客户端

图2.1 总体框架示意图

监控系统启动后,在arm板中的嵌入式Linux 系统启动服务程序,接收开始工作的请求后,usb摄像头完成相应的监测,而arm板实现检测与控制的功能。

第 7页 共 49 页

湖南商学院毕业设计

2.2 越界检测预警系统的关键技术分析

(1) 嵌入式Linux系统的定制和驱动的移植。嵌入式Linux系统是整个越界检测系统的软件核心,而内核的定制和驱动的移植也是嵌入式Linux系统最重要的部分之一,合理的处理好这一部分工作是系统得以完善的前提。

(2) 图像识别算法。图像识别算法是系统实现智能化的关键因素,通过算法,可以对监控区域的监控实施的更加灵活。

(3) 越界检测预警系统的实时和准确,快速准确获取信息,并且判断出是否有被测物体进入监控区,一旦发现目标,立刻实施报警。

2.3 摄像头介绍

该系统使用的摄像头的工作原理比较简单,首先是感光镜头拍摄物体,再将生成光学图像传送到图像传感器上面,图像传感器把接收的信号转化成模拟电信号,此模拟信号经过A/D转换后转换成数字图像信号,之后再送到数字信号处理芯片中做对应的加工处理,之后通过USB接口传输到CPU中进行处理,我们就可以通过显示器看到图像了。工作原理如图所示:

镜头 图像传感器 数字信号处理 CPU 图2.3 摄像头工作流程图

图像传感器的实质是一种半导体芯片,它表面的几十万到几百万的光电二极管受到光照射时,就会产生电荷。数字信号处理主要是通过一系列复杂的数学算法运算,对数字图像信号参数进行优化处理,并把处理后的信号通过USB等接口传到PC等设备。常用的摄像头有CCD摄像头和CMOS摄像头,CCD传感器中每一行中每一个象素的电荷数据都会依次传送到下一个象素中,由最底端部分输出,再经由传感器边缘的放大器进行放大输出;而在CMOS传感器中,每个象素都会邻接一个放大器及A/D转换电路,用类似内存电路的方式将数据输出。

之所以会出现折冲差别是因为:CCD的特殊工艺可保证数据在传送时不会失真,因此各个象素的数据可汇聚至边缘再进行放大处理;而CMOS工艺的数据在传送距离较长时会产生噪声,因此,必须先放大,再整合各个象素的数据。

由于数据传送方式不同,因此CCD与CMOS传感器在效能与应用上也有诸多差

第 8页 共 49 页

湖南商学院毕业设计

异,这些差异包括:灵敏度上,CMOS传感器的灵敏度要低于CCD传感器。 成本上,CCD的成本比CMOS的成本要高。噪声,CMOS的噪声比CCD的要高很多。在功耗上,由于CMOS采集是主动式的,而CCD采集图像是被动式的,CCD需要得电压更高,因此功耗远高于CMOS。

2.4 系统结构

该系统采用三星公司的ARM9 内核芯片S3C2440作为硬件平台的中央处理器,该处理器主频可达400MHz,硬件接口和资源丰富,存储单元包括Flash 和SDRAM,Flash 具有掉电保持数据的特性,用于存储Bootloader 启动程序、Linux 内核映像、文件系统以及用户应用程序等。SDRAM 数据存取速度大大高于Flash 存储器,用于为操作系统和应用程序提供运行空间。平台利用RS232 接口输出调试信息,通过USB HOST 接口连接USB 摄像头采集图像数据,经过CPU处理和存储后把采集的图片进行二值化处理和形态学处理在终端显示图像并且能够判断活动的人,若果发现活动的人则驱动蜂鸣器报警,系统结构如图所示:

NAND Flash 256M SDRAM 64M 串口 CPU S3C2440 USB NOR Flash 2M 报警模块 摄像头

图2.2 系统硬件结构框图

第 9页 共 49 页

湖南商学院毕业设计

3. 嵌入式 LINUX 应用软件平台搭建

3.1 嵌入式 LINUX 系统概述

嵌入式系统在当今高速发展的信息社会中应用越来越广泛,几乎离不开我们的生活,应用的领域更是比传统的PC更加广,它之所以能够有这么快速并且稳健的发展是因为嵌入式系统具备以下特点:

?

系统内核空间小。由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统的操作系统要小很多。

?

专用性强。嵌入式系统的个性很强,软件和硬件系统的结合非常接近,通用硬件系统移植,即使在相同的品牌,同一系列的产品还需要根据变化的系统硬件构成和增加或减少持续修改。同时根据不同的任务,通常需要更改系统更大,程序的编译下载和系统和联合,这些变化和通用软件“升级”完全是两个概念。

?

运用BSP,板级支持包包含的芯片级初始化和设备驱动程序,它使嵌入式操作系统和嵌入式系统的硬件平台相分离。无论外围设备怎么更变,需要用到时,板级支持包只需要轻微的修改。板级支持包的嵌入式操作系统有很强的可移植性。

?

系统可靠性强。嵌入式操作系统采用了许多机制来使操作系统具有健壮性,如内存管理单元、代码段用“只可执行”来保护、栈溢出监测、跟踪关键资源等。

?

系统精简。嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。

?

高实时性的系统软件(OS)是嵌入式软件的基本要求。而且软件要求固态存储,以提高速度;软件代码要求高质量和高可靠性。

3.2 嵌入式 LINUX 系统移植

3.2.1 Bootloader 的介绍及移植

BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,

第 10页 共 49 页

湖南商学院毕业设计

我们可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。

Bootloader有很多种,包括armboot、U-boot、vivi等等。在本系统中采用的bootloader是U-boot。U-boot配置过程如下:

解压源代码包到工作目录: #tar xvzf u-boot-1.1.6.tar.gz –C /

执行该命令将把U-Boot 源代码解压到/opt/GTStudio/GT2440/u-boot1.1.6 目录。 再检查一下当前编译器版本,执行以下命令: #arm-Linux-gcc -v

如图,是带软浮点运算功能的编译器:

图3.1 带软浮点运算功能的编译器

配置LCD屏类型:

修改/opt/GTStudio/GT2440/u-boot-1.1.6/include/configs/GTStudio.h 文件 第120行,如图所示:

图3.2 LCD配置 第 11页 共 49 页

湖南商学院毕业设计

根据 LCD 型号定义 LCD_TFT 的值,并注释掉其他LCD型号,“//”表示注释 其中WD_F3224WI为胜华 3.5 寸屏,TX11D为日立4.3寸屏,A070 为群创7 寸保存并关闭文件。

配置进入U-Boot 目录,执行: #make GTStudio_config #make

就可以开始编译了,编译完毕,如图所示生成u-boot.bin

图3.3 编译u-boot终端显示图

把开发板设置为Nor Flash 启动,连接好串口和USB 线,运行超级终端和 DNW0.5L,打开电源,超级终端显示如图:

图3.4 串口终端的主功能菜单

选择功能号“1”,确认USB 连接正常,选择DNW0.5L的:

第 12页 共 49 页

湖南商学院毕业设计

USB Port->Transmit->Transmit 选项,将编译好的u-boot.bin,下载和烧写到开发板。把 GT2440 启动开关打到Nand Flash 启动,重新复位或者重启开机电源开关,在串口终端可以看到U-boot主功能菜单信息,如果开发板中已经安装了Linux 系统,U-Boot 将会自动启动它。

完成上述操作后,U-boot就成功定制并且下载到硬件平台上。 3.2.2 Linux 系统的移植

Linux内核的源代码Linux-2.6.38.6-gt2440.tar.gz 位于Linux\\ 目录,把内核源代码包复制到某一个目录,进入该目录,运行以下命令:

#tar xvzf Linux-2.6.38.6-gt2440.tar.gz –C /

这样将把内核源代码解压到/opt/GTStudio/GT2440/Linux-2.6.38.6 目录; 解压过程终端显示如下图所示:

图3.5 内核源码解压终端显示

为了方便用户编译,我们已经制作了同光盘烧里烧写镜像一样的内核配置文件,3.5寸胜华屏对应文件名为config_GT2440_W35,4.3寸日立屏对应文件名为config_GT2440_H43,7寸群创屏对应文件名为config_GT2440_A70,VGA转接板分辨率设为640x480时对应文件名config_GT2440_VGA640X480,分辨率设为800x600时对应文件名config_GT2440_VGA800X600。

下面以4.3寸群创屏为例进行说明,进入Linux所在目录,执行命令: #cp config_GT2440_H43 .config

第 13页 共 49 页

湖南商学院毕业设计

Linux下含有很多设备驱动程序,都是可以直接调用的,在Linux2.6.38中对应的主要的驱动程序在位于以下目录,如下表所示:

表3.1 主要驱动程序目录表

在Linux系统下虽然有这么多的设备驱动程序,但是我们实际应用的时候并不需要用到所有的驱动,为了避免不必要的浪费,在我们编译内核之前可以对内核进行配置,把不需要用到的模块不进行编译,这样可以节省系统空间。也就是我们常说的Linux定制。Linux定制的步骤如下:

在终端输入以下命令: #make menuconfig 回车确认 出现如下图所示对话框:

第 14页 共 49 页

湖南商学院毕业设计

图3.6 内核配置终端显示

从图中我们可以看到,菜单选项中包含有:

1. CPU配置选项。系统大部分使用了标注了S3C2410 的选项,主要是由于S3C2410 和S3C2440 的很多寄存器地址等地址和设置是完全相同的,他们的配置也可以近似相同。我们可以找到S3C2440 机器平台选项,并且选择。进入到S3C2400 Machines 子菜单后,可以看到里面有很多常见的使用S3C2440 的目标板平台选项。它们分别对应于 arch/arm/mach-s3c2440/mach-* 开头的文件,而本课题所使用的开发板平台为GT2440,它对位于mach-gt2440.c文件中。还可以看到,在这个文件里面,还会用到一个机器码MACH_TYPE,这个机器码的定义文件为 arch/arm/tools/mach-types。本课题所使用的开发板的机器码为9999,相应的在uboot源代码中include/asm-arm/ mach-types.h文件中。

2. LCD驱动和背光的配置。进入主菜单,选择 Device Drivers选项,选择 Graphics support ,按回车进入,选择:<*> Support for frame buffer devices,然后在选择:

<*> S3C2410 LCD framebuffer support [*] GTStudio GT2440 Board Backlight control

选择LCD select,进入后,在该子菜单里面您可以选择需要的 LCD 驱动,如图为4.3寸屏幕的LCD的驱动的选择:

第 15页 共 49 页

湖南商学院毕业设计

图3.7 LCD驱动和背光配置终端显示

3. 触摸屏驱动配置。同样先进入主菜单,在 Device Drivers 菜单中,选择Input device support,确认后进入菜单,找到并选择Touchscreens,确认,选择 Touchscreens 选项,再确认,找到以下选项:

<*> GTStudio GT2440 TouchScreen input driver 配置信息如图3.8所示:

图3.8 触摸屏驱动配置终端显示图

4.串口驱动配置。

在 Character devices 菜单中,选择进入Serial drivers

选择 Sansung S3c2440/S3C2442/S3C2416 Serial port support 如图3.9所示:

第 16页 共 49 页

湖南商学院毕业设计

图3.9 串口驱动配置图

选择好之后退出,串口驱动就已经配置在内核中了。 5.Yaffs根文件系统。

要使用yaffs2 文件系统,必须先配置nand flash 驱动支持,在Device drivers 菜单中选择如图3.10所示,确认后进入,子菜单中<*> 号的选项要选上。选择NAND Device Support并确认

图3.10 根文件系统配置图

在内核中配置好根文件系统后,还要制做yaffs2文件系统映象,因此,需要使用mkyaffs2image 工具程序, yaffs2文件系统映象的制作过程主要有以下几个步骤:

(1)将Linux目录下的mkyaffs2image.tar.gz 文件复制到任意一个目录,并且进入该

第 17页 共 49 页

目录,然后执行以下命令:

湖南商学院毕业设计

#tar xvzf mkyaffsimage.tar.gz -C /

这将把制作工具 mkyaffsimage 安装到系统的可执行路径/usr/sbin

(2)复制Linux目录下的root_qt2.2.0.tar.gz 到任意一个目录,进入该目录,然后执行以下解压命令:

#tar xvzf root_qt2.2.0.tar.gz -C /

该命令将把root_qt2.2.0文件系统目录解压到/opt/GTStudio/GT2440 目录。 (3)使用mkyaffs2image 制作yaffs2 文件系统映象: #cd /opt/GTStudio/GT2440

#mkyaffs2image root_qt2.2.0 root-qt2.2.0.bin 如图3.11所示:

图3.11 根文件系统映像制作

此时,已经在当前目录下生成了root-qt2.2.0.bin 映象文件,我们同样可以通过USB把root-qt2.2.0.bin 烧写到目标板。

6.USB摄像头驱动配置。USB摄像头是本系统和核心外设,在Device Drivers菜单里面,选择 Multimedia support 并进入,选择Video capture adapters 进入后选择V4L USB devices,然后在选择GSPCA based webcams选项,我们会看到如图4.10所示终端,选择支持所有usb摄像头。

第 18页 共 49 页

湖南商学院毕业设计

图3.12 USB摄像头驱动配置

7.其他驱动程序。Linux系统所需用到的ADC、RTC、NANDFlash网卡、声卡、按键、u盘等设备的驱动程序配置都和上述相似,因此不多作介绍。 3.2.3 系统的调试工具

1. 文本编辑工具VIM

Linux提供了一些列功能强大的编辑器,例如Vi和Emacs。Vi是Linux系统的第一个全屏幕的交互式编辑器,从诞生到现在得到广大用户的青睐。Vi有三送工作模式,分别是:

命令行模式:最初进入的一般模式,此模式下可以移动光标进行浏览,可以整行删除,但是无法编辑文字。

插入模式:只有此模式下用户才能够编辑和输入文字,用户可以使用键盘的ESC键回到命令行模式。

底行模式:此模式中,光标位于屏幕的最底行,用户可以进行文件保存或者退出操作,也可以设置编辑环境。

Vi的主要命令主要以下几部分: 命令行模式功能键: Yy:复制当前光标所在行

[n]yy:n为数字,复制当前光标开始的n行 P:粘贴当前光标所在行

第 19页 共 49 页

dd:删除当前光标所在行

湖南商学院毕业设计

[n] dd:删除当前光标所n在行 G:光标移动到文件尾 u:取消前一个动作 底行命令 :w 保存 :q 退出 :q!强行退出 :wq 保存后退出 :set nu 显示行号 :set nonu 取消行号 :w[filename] 另存为 2.Gcc程序编译

Linux系统下的GCC是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作之一。GCC可以在多种硬件平台上行编译出可执行程序,其执行效率比一般的编译器相比要高出20%左右。GCC编译器能将C、C++语言的源程序、汇编程序编译、链接成可执行文件。在Linux系统中可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。

使用GCC编译程序时,编译过程可以被细分为四个阶段:预处理、编译、汇编、链接。Gcc通过后缀来区分输入文件的类别。

3.Gdb程序调试

GDB是GNU发布的一款功能强大的程序调试工具。GDB主要完成以下三方面的功能:启动被调试程序、让被调试程序在指定的位置停住、当程序被停住时可以检查程序的状态。

4.MAKE工程管理

Linux程序员必须学会使用GNUmake来构建和管理自己的软件工程。GNU的Make能够使整个软件工程的编译、链接只需要一个命令就可以完成。Make在执行时,必须要一个命名为Makefile的文件,Makefile文件描述了整个工程的编译、链接等规

第 20页 共 49 页

湖南商学院毕业设计

则。其中包括:工程中的哪些源文件需要编译以及如何编译;需要创建哪些库文件以及如何创建这些库文件、如何在最后产生我们想要得到的可执行文件。

3.3 QT

对嵌入式系统而言,强大的图形用户接口可以使系统的功能丰富强大起来。目前有众多的GUI可供我们使用,考虑到授权和价格的因素,我们在QT/mbedded基础上进行开发,完成了监控端的软件设计。Qt/mbedded是Qt的嵌入式版本。 3.3.1 QT的介绍和安装

QT是由挪威奇趣科技公司开发跨平台的C语言图形用户界面的开发工具,是该公司具有象征意义的产品,包括一个商业版本和免费版本,在QT上制作和开发的应用程序可以在Linux、Windows xp和嵌入式不同平台的运行。QT也是开源的KDE桌面环境的基础。 嵌入式QT是QT基于嵌入式处理器的版本。

QT同XWindow上的openwin,GTK等图形界面库和Windows平台上的MFC,OWL,VCL,AI,L是同类型的东西,但是QT也具有其独特的优点:

? 具有良好的兼容性:支持的操作系统有Windows - 95、98、NT 4.0、ME、

2000、XP 、 Vista和Win7, Unix Linux、Solaris、HP-UX、CompaqTru64 UNIX、IBM AIX、SGI IRIX、FreeBSD、BSD/OS等等。

? 面向对象:面向对象机制使QT应用更加简单,模块化程度很高,移植性

好。可以重复利用。

? 丰富的API:QT包括多达250个以上的C类,还替供基于模板的

eollections,serialization,rile, l/0device, direetorymanagement,date/time类。甚至还包括正则表达式的处理功能。 ? 支持ZD/3D图形渲染,支持openGL。 ? 大量的开发文档 ? XML支持

3.3.2 QT的安装方法

本系统中包含两个版本的QT源码,版本为2.2.0和4.6.3,分别位于Linux目录里,对应文件名为qt2.2.0.tar.gz和qt4.6.3.tar.gz。QT的安装方法如下:

第 21页 共 49 页

1. QT2.2.0的编译

湖南商学院毕业设计

1.1 X86版本的编译与模拟运行

将qt2.2.0.tar.gz复制到Linux系统目录下,进入该目录执行以下解压缩命令: #tar xvzf qt2.2.0.tar.gz –C /

该命令将qt2.2.0 源码包解压的到/opt/GTStudio/GT2440/qt2.2.0 目录。把配置和编译的步骤制作成一个x86-build 脚本,进入目录并执行以下命令

#./x86-build

编译完成后,执行以下命令可在PC上模拟运行QT #./test_x86

1.2 ARM版本的编译与更新制作文件系统 1)ARM版本的编译

用4.3.3版本的交叉编译器编译,使用#arm-Linux-gcc –v 命令查看当前的交叉编译器版本。把ARM版本的配置和编译的步骤制作成一个arm-build-all脚本,进入目录并执行以下命令

#./arm-build-all

编译完成后,将在当前目录下生成target-qt2.2.0.tar.gz文件,此文件是制作适用于根文件系统的目标板二进制映象文件包。./arm-build-all 将自动编译完整的Qtopia、嵌入式浏览器和应用程序,并且编译生成的系统支持Jpeg、GIF、PNG 等格式的图片,制作适用于根文件系统的目标板二进制映象文件包,将生成target-qt2.2.0.tar.gz。还可以先后执行:

#./arm-build -> #./arm-build-konq -> #./arm-build-apps -> #./arm-mktarget 脚本命令分别编译它们。

2)使用自己编译的Qtopia 更新制作文件系统。将根文件系统压缩包拷贝至Linux系统,并解压缩

#tar xvzf root_qt2.2.0.tar.gz –C / 执行以下命令更新制作文件系统 #cd /opt/GTStudio/GT2440/root_qt2.20

#tar xvzf /opt/GTStudio/GT 2440/qt2.2.0/target-qt2.2.0.tar.gz

第 22页 共 49 页

#cd ..

湖南商学院毕业设计

#mkyaffs2image root_qt2.2.0 my_qtopia.bin

然后使用USB 把my_qtopia.bin 烧入开发板就可以了。 用于生成yaffs镜像的工具mkyaff2image在Linux目录下。 2 ARM版本的QT4.6.3编译

QT4.6.3必须用4.1.2版本的交叉编译器编译,否则会出现错误。 先将Linux目录下arm920t-eabi.tgz文件拷贝至Linux系统下,并解压缩输入命令:

#tar xvzf arm920t-eabi.tgz –C / 不能改变默认目录,添加以下内容:

#PATH=/opt/toolchains/arm920t-eabi/bin:$PATH设置交叉编译器路径,再输入命令: #arm-Linux-gcc –v 查看交叉编译器版本号。将qt4.6.3.tar.gz拷贝至Linux系统目录下,进入该目录执行以下解压缩命令:

#tar xvzf qt4.6.3.tar.gz –C /

该命令将qt4.6.3 源码包解压的到/opt/GTStudio/GT2440/qt4.6.3 目录。 进入该目录,执行以下命令:

#./build-all 编译QT4.6.3源码

#./mktarget 制作适用于根文件系统的目标板二进制映象文件包将生成的target-qte-4.6.3.tar.gz解压至文件系统目录,并制作根文件系统镜像,和qt2.2.0文件系统制作一样。QT4.6.3根文件系统压缩包为root_qt4.6.3.tar.gz。

第 23页 共 49 页

湖南商学院毕业设计

4. 软件设计

嵌入式操作系统软件平台采用了Linux2.6.30,Linux内核小,效率高,开源,支持网络,嵌入式系统的有限硬件资源,要根据实际需要进行裁剪,配置所需的功能模块,然后移植到硬件平台。嵌入式系统软件开发,使用交叉编译调试模式,并把Linux系统安装在宿主机上的,在宿主机上建立一个交叉编译环境编写代码,然后使用交叉编译工具来生成目标机器上的可执行的文件,并最终移植到目标机上运行。

4.1 视屏采集模块

视频采集模块通过嵌入式Linux 操作系统调用Video4 Linux (V4L)和底层设备驱动程序来完成视频捕获。V4L 是Linux 中关于视频设备的内核驱动,它为Linux 下的各种视频设备提供了统一的编程接口,应用程序通过这些接口函数就可以操纵各种不同的设备。视频采集流程如图4.1 所示:

开始 采集视频数 打开视频设备 N 图像处理 获取设备和图像信息 Y 终止采集 内存映射mmap 关闭视频设备 初始化采集参数

图4.1 视频采集流程图

结束 1. 打开视频设备。Linux下的视频设备文件一般为“/dev/video0”,通过调用函数v4l_open( ),利用vd->fd=open(“/dev/video0”,O_RDWR)打开设备并获得设备文件描述符vd->fd[2]。具体代码见附录一。

2. 获取设备和图像信息。通过v4l_get_capability( ) 函数获取设备信息, 通过

第 24页 共 49 页

湖南商学院毕业设计

v4l_get_picture( )函数获取图像信息。

3. 内存映射。获取图像的方式有两种:read( )直接读取和mmap( )内存映射。直接读取方式通过内核缓冲区来读取图像数据,而本文使用内存映射方式mmap( ),内存映射方式可以直接把设备文件映射到内存中,进程可以像访问普通内存一样对文件进行访问,读取效率更高。初始化内存映射时,需在内存中开辟一块空间,利用ioctl(vd->fd,VIDIOCGMBUF, &(vd->mbuf))操作取得需要映射的内存空间大小vd->mbuf.size,利用mmap( )函数,即

vd->map=(unsigned char*) mmap(0, vd->mbuf.size, PROT_READ | PROT_WRITE,

MAP_SHARED, vd->fd, 0)操作,把设备文件的内容映射到内存,vd->map 指针所指向的内存区即为采集的图像数据,且此内存区具有可读写和共享属性。

4. 初始化采集参数。可以设置采集视频图像的宽度、高度和格式等信息。 5. 采集视频数据。利用ioctl(vd->fd, VIDIOCMCAPTURE, &(vd->mmap))操作采集一帧图像并存放到内存映射区,采集一帧图像后要进行同步操作,利用ioctl(vd->fd, VIDIOCSYNC,&(vd-> frame_current))操作判断该帧图像是否获取完毕。

4.2 视屏传输与播放

摄像头采集的视频信号传输有两条DMA通路。P 通路(预览通路)和C 通路(编码通路)在AHB总线上是各自分离的。

两条通路是独立的。P 通路为 PIP 储存 RGB图像数据到存储器中。C 通路为如 MPEG -4、H.263等编码储存 YCbCr 4:2:0 或4:2:2格式数据到存储器中。着两条主通路可以支持多变的应用,像DSC(数码相机),MPEG-4 视频会议、视频录像等。例如,P通路图像可以作为预览图像,并且C通路图像可以作为 DSC应用中的JPEG 图像。设置寄存器可以单独禁止P通路或 C通路。

CAMIF有两个时钟域。一个是系统总线时钟 HCLK 。另一个是像素时钟 CAMPCLK。系统总线时钟必须比像素时钟快。如果使用了外部时钟振荡器,则应该悬空 CAMCLKOUT。内部缩放时钟为系统时钟。这两个时钟域不需要相互同步。其它信号如 CAMPCLK 应该同样被连接到施密特触发器电平转换器。

编码通路中使用小端方式储存到帧存储器中。储存像素是从LSB到MSB。AHB

第 25页 共 49 页

总线传输的是32位字数据。

湖南商学院毕业设计

因此,CAMIF使得每个Y-Cb-Cr字按都为小端方式。对于预览通路,存在着两种不同格式。RGB 24 位格式的一个像素(1 个彩色像素)为一个字。另一方面,RGB 16位格式的两个像素为一个字。本系统中采用P通路传输视频信号,并且在LCD上播放。

4.3 图像识别算法

本系统采用的图像识别算法核心内容是灰度图像二值化。图像二值化是一项和基本的图像处理技术,是大部分图像处理技术的预处理过程。二值化的运用相当灵活,它的阈值是可以选择的,在不同的场合中,需要对它选择不同的阈值。因为二值化处理中,原图的信息会有比较大的损失,为了解决这个问题,现在越来越多的人在研究自适应图像阈值的选取方法。二值化处理是图像处理中最重要、最关键的一步。

通常情况下一幅完整的图像都是有红、绿、蓝三种颜色组成,每种颜色有不同的灰阶,灰阶不同显示的颜色就有差异,灰度图像就是只包括亮度,把亮度分为256个等级,从0~255之间变化,阶数越高亮度越大,所以0代表最暗的点,就是黑色,255代表最亮的点,就是白色。 4.3.1 图像灰度化

本课题的图像处理算法采用的是最经典的Otsu算法,Otsu算法是较早的一种图像处理算法,算法很简明,采用全局阈值的方法对图像进行处理,Otsu算法中要有两组图片,一个事背景图片,相当于一个参照,另外一个就是被测图片。通过差值运算,滤波处理和二值化等一系列的过程来实现算法。

在本课题中灰度处理所用到的方法是加权平均法,加强平均法主要是根据人眼对不同颜色的敏感度来进行加权取值,在红、绿、蓝三种颜色中人眼对绿色的敏感度最高,红色其次,最低的是蓝色,所以根据这个规律的到的加权公式为: f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))

(4-1)

其中,f(i,j)是加权平均后的的灰度图像,R、G、B分别是红色、绿色和蓝色。 4.3.2 图像差值运算

在图像处理中,图像相减可以用以指导动态监测、运动目标检测和跟踪及目标识

第 26页 共 49 页

湖南商学院毕业设计

别等工作。另外,通过减法运算对同一场景在不同时间拍摄的图像进行相减,用来消除前后影像中相同的背景内容,而增强前后有所变化的部分。

图像相减常用于检测两幅或多幅图像之间的变化,在图像处理中图像相减可用于感兴趣区域或目标的提取。设I1和I2分别表示两幅输入的医学图像,定义为:

?G1?0,0??G1?0,W???I1?????????G1?H,0??G1?H,W??? (4-2)

?G2?0,0??G2?0,W???I2?????????G2?H,0??G2?H,W???

(4-3)

式中,W和H分别表示医学图像的宽度和高度。 设Im表示图像I1和I2相减得到的图像,则Im定义为:

?Gm?0,0??Gm?0,W???? (4-4)

Im????????Gm?H,0??Gm?H,W???式中,Gm?n,k?表示图像Im中像素点?n,k?的像素值,Gm?n,k?定义如下: Gm?n,k??G1?n,k??G2?n,k? (4-5) 式中,由于像素值不能为负,当G1?n,k?小于G2?n,k?时,Gm?n,k?的值是等于

G1?n,k?与G2?n,k?差的绝对值。

4.3.3 图像中值滤波理论

实际场景中,由于摄像头偏移、环节光照变换等条件使得目标图像与背景图像作差值运算时,差值图像中存在干扰边缘。为了使差值运算后图像的干扰像素点尽可能减少,所以我们需采用滤波算法。

中值滤波是一种能有效抑制图像噪声而提高信噪比的非线性滤波技术。它是一种邻域运算,类似于卷积,但计算的不是加权求和,而是把邻域中的像素按灰度级进行排序,然后选择该组的中间值作为输出像素值。在数字图像处理中,对于N×N(N为奇数)中值滤波器,可以滤除小于或等于邻域中(2N-1)/2个像素的噪声并且较好地保持

第 27页 共 49 页

湖南商学院毕业设计

图像的边缘 。对图像进行中值滤波处理首先要确定一个模板N×N ,一般选取3×3或5×5 。中间位置的图像数据的表达式为f(x,y)=med{f(x±k,y±l),(k≤(N-1)/2,l≤(N-1)/2)}要得到模板中数据的中间值[9],首先要将数据按大小排序, 然后根据有序的数字序列来找中间值。中值滤波排序的过程有很多的算法, 如冒泡排序、二分排序等。

1、一维中值滤波原理

设有一个一维序列f1,f2,…,fi…。对此序列进行中值滤波,就是用有奇数点的滑动窗口,设滤波窗口长度(进入窗口的点数)为L=2k+1,从输入序列中抽出L个数(fi-k,…,fi,…fi+k),再将这L个数按其数值大小排列,取其序号为中心点的那个数作为滤波输出。

用数学公式表示为:

yi?medi[an,?f,?f?iki,??ikf] ? i z (4-6)

式中,median[]表示取数列的中间值,Z表示所有自然数的集合。例如:有一个序列为{0,1,3,0,5), 滤波窗口长度取5,重新排序后为{0,0,1,3,5},则yi=median[0,1,3,0,5]=1。

对于一个有限长序列fi,f2,…,fi,…fn,,若滤波窗口长度为L=2k+1,为了使输出信号长度与输入信号长度同样长,在滤彼前要在输入信号两边分别扩展k个信号[10],扩展的方法一般有两种:

(1)每边扩展的k个信号值都与各自两端的信号值相同,如式(3-2)所示,对于上面的序列和滤波窗口,其扩展后的序列为{0,0,0,1,3,0,5,5,5}。

f?k?1?f?k?2???f0?f1??fN?1?fN?2???fN?k?fN?(4-7)

(2)每边扩展的k个信号值都与各自两边的信号值相对应,如式(3-3)所示, 于上面的序列和滤波窗口[11],其扩展后的序列为{1,0,0,1,3,0,5,5,0}。

f1?i?fi i?[1,k]??fN?1?fN?1?i i?[1,k]?本文均采用第(2)种扩展方法。

(4-8)

图4.2是对离散阶跃信号(a)、脉冲信号(b).斜坡信号(c)以及三角形信号(d)进行中值滤波(L=3)的示例,从此例可以看出,中值滤波不影响阶跃信号和斜坡信号;周期小

第 28页 共 49 页

湖南商学院毕业设计

于L/2(滤波窗口长度之半)的脉冲信号受到抑制,三角形信号的顶部变平。

图4.2 一维序列中值滤波示例

2、二维中值滤波原理

设有一个二维图像f,二维中值滤波的结果为:

yi,j?median[fi,j]A (4-9)

式中,A为滤波窗口。

二维中值滤波器的滤波窗口形状和尺寸对滤波效果都有影响,不同的图像内容和不同的应用要求,往往采用不同的滤波窗口形状和尺寸,图4.3中展示了尺寸为5X5的常见的二维中值滤波窗口形状。

图4.3 尺寸为5X5的常见的二维中值滤波窗口形状

第 29页 共 49 页

湖南商学院毕业设计

4.3.4 基于Otsu算法的图像二值化

阈值(threshold )是把目标图像和背景图像区别开的标准,选择合适的阈值的目的是要保存原图的完整的同时,又可以降低背景和噪声的带来的干扰。假设人灰度图像函数为f(x,y),输出二值图像函数为g(x,y),则有:

?0 f(x,y)?Thresholdg(x , y)????

?1 f(x, y)?ThresholdOtsu算法实现的程序流程图如图所示:

开始 读入灰度图像I 统一图像尺寸 N 尺寸是否一致 调整尺寸 Y 取出差值 中值滤波 取出二值图像 结束

图4.4 Otsu方法流程图

第 30页 共 49 页

(4-10)

湖南商学院毕业设计 5. 系统测试与分析

5.1 系统关键部分测试分析

系统测试包括可靠性测试,功能性测试,衰减测试,单元测试和CS的调用测试,毁灭性测试。针对嵌入式-实时,主要在以下几个方面提供相关的测试。

1. 可靠性测试,系统开启后,首先让监控区域处于没有活动物体,随后便让人进入监控区看系统能否正常报警。此过程反复测试多次。

2. 功能性测试,通过然系统监控不同的活动物体,观察能否识别人的活动。 3. 稳定性测试,系统持续工作20小时以上,在对它进行功能测试,观察是否能正常工作。

5.2 系统分析总结及说明

在测试过程中,我们经过模块测试和组装测试,排除了系统的大部分错误。当然排除所有错误是不太可能的,我想应该还有些不易检测到的错误还没有被发现,需要在使用的过程中进一步的完善,数据的存储的是一个重要的概念,在实际的应用过程中是一个尚待解决的问题,应该做好数据的存储的完善工作,特别是备份和安全工作;另一方面本系统没有制作相关的视频输出,由于时间仓促难免有错误和不完善的地方,希望老师能够帮我指点和纠正。

5.3 测试结果

5.3.1 测试性能分析

测试过程为选取两张不同图片,对图片进行图像处理,再查看处理结果。 如下图所示为原图和处理后的图像:

图a 背景图片 图b 被测图片

第 31页 共 49 页

湖南商学院毕业设计

图 c a图提取的灰度图像 图d b图提取的灰度图像

图e 差值图像 图f 滤波和二值化后图像

5.3.2 测试结果分析

通过图像我们可以看到,提取出来的充值图像有一定程度的误差和干扰,这些干扰会对系统的功能造成一定影响,而经过滤波后的图像明显有了较大的改善。二值化图像的黑色部分表示该图像点的灰度为0,系统可以设置对比值,判断被测物体的图像像素点是否超过该值,如果超过此值则说明有人进入监控区,系统开启报警,如果不足此值或者没有,则认为非人为活动或无检测目标,系统不报警。

第 32页 共 49 页

湖南商学院毕业设计

6. 结论

这次的毕业设计的主要内容是嵌入式系统,在做这个课题之前,我对嵌入式系统的了解不够深入,虽然在专业的学习中掌握了单片机的知识,但是单片机和嵌入式系统的关键技术还是相差很大的,通过做毕业设计,让我学到了更多的专业知识。

课题研究的的方向是嵌入式Linux驱动的开发和移植、内核的移植和图像处理算法的实现,在做本次课题之前,我看到过类似的视频监控的论文,那些基本上都是嵌入式视频监控在web上的应用,由于我专业水平的局限,因此没有用到web技术,而是直接在嵌入式平台上实现系统的功能。效果没有那么好,但是为我以后从事嵌入式开发打下了坚实的基础。

本文的研究核心是Linux系统,由于Linux系统是开源的系统,在整个业界研究者甚多,并且仍然处于快速发展的阶段,所以Linux的资料在网络上有很丰富的资源,包括Linux源代码、设备驱动程序、应用程序等等。在课题刚刚开始的时候,对Linux和驱动的概念很模糊,不知道从那方面开始着手研究,后来接触时间久了才有了初步的认识,

本文还存在的缺陷和不足:

首先对于我个人而言,研究本课题的目的在于熟悉Linux系统的移植、Linux下驱动程序的开发和移植和图像识别算法,所以系统没有丢监控视频进行压缩保存,不能进行回放,所以还需要进步学习,加以改进。

对图像处理算法不熟悉。由于是本人第一次接触到图像处理的算法,所以技术水平很低,最终的效果也不是很好。

因为本人的知识水平以及能力有限,疏漏和不足之处,还恳请评审本论文的各位专家、老师以及阅读本文的读者批评指正。

第 33页 共 49 页

湖南商学院毕业设计

参考文献

[1] 刘阳阳,申铉京,王一棋等. 基于ARM的智能监控系统的设计与实现. 吉林大学学

报(信息科学版),2011,29(2):158-163

[2] http://www.cnki.com.cn/Article/CJFDTotal-JSJC200211001.htm ARM微处理器体

系结构及其嵌入式SOC--《计算机工程》2002年11期

[3] 董宏辉, 葛大伟. 基于智能视频分析的铁路入侵检测技术研究. 中国铁道科学,

2010, 31(2): 121-125

[4] 曹占中, 周余. 基于S3C2440的Linux摄像头驱动开发. 电子测量技术, 2009(2):

108-111

[5] 肖敬若. 复杂背景下的实时目标跟踪技术研究. 西安: 西北工业大学硕士学位论

文, 2006: 7-17

[6] 韩宏亮, 周希辰. 基于ARM9的数字化远程视频监控系统. 信息技术.

2011,10(2):103-105

[7] 彭铁钢,刘国繁,曹少坤等. 基于ARM的嵌入式视频监控系统设计.计算机工程与设

计. 2010,31(6):1191-1194

[8] Ji Wangkang, Yang Jia, Hong Yongqiang. BSP development of WinCE system for

vehicle navigation device based on S3C2440. Electronic Measurement and Instruments, 2007:389-391

[9] 阙大顺,杜玮.Vivi在S3C2410 上的移植研究.武汉理工大学学报,2007, 29(12): 47-50 [10] 师娟娟.基于ARM9 的嵌入式Linux 移植.武汉理工大学学报, 2008, 30(2):

205-208

[11] 冯国进. 嵌入式Linux 驱动程序设计从入门到精通[M].北京:清华大学出版社,

2008: 102-146

[12] 郑磊,郭顺生.基于嵌入式Limix网络视频监控系统的研究 武汉:武汉理工大学

2009.

[13] 王雷 刘彦隆.基于ARMg平台嵌入式视频监控系统的设计与实现.太原.太原理工

大学

第 34页 共 49 页

湖南商学院毕业设计

[14] 吴爱军,徐雪梅 用于智能交通管理的无线视频监控系统的研究[D].长沙. 中南大

[15] 宋宝华.设备驱动开发详解IM].北京:人民邮电出版社,第一版,2008.

[16] 韦东山.嵌入式Linux应用开发完全手册[M」.北京:人民邮电出版社,第一版,2008. [17] 张建,曹广益.基于53C2410和嵌入式Internet的家庭视频监控系统设计[D].上海:

上海交 通大学,2007

[18] 徐方艾,赵宏伟.基于53C2410的无线视频监控系统[D].长春:吉林大学,2009 [19] W.Richard Steven,Stephen A.Rago.Advanced Programming in the Unix

Enviromen[M]. Addison Wesley,2008

[20] Samsung Electronics.S3C2440A 32-BIT CMOS MCROCONTROLLER USER’S

MANUAL[EB/OL].2004

[21] JonathanCorbet, Alessandro Rubinni,GregKroah Hartlllan.LinuxDevieeDrivers- [M].0’ReillyMedia,Inc., ThirdEdition,2005

[22] 刘森.嵌入式系统接口设计与 Linux 驱动开发[M].北京:北京航空航天科技大

出版社,2006:18-36. [23] Maxwell

Sayles

How

To

for

Video

For

Linux

(VFL)

[EB/OL].http://www.Linux.org, 2006.

[24] 李善平,刘文峰,王焕龙等著.Linux与嵌入式系统仁[M].北京:清华大学出版社,

第二版,2009.

[25] 李际峰,李正明,孙俊。 构建基于ARM920T的嵌入式Linux系统. 电子产品世

界.2009.

[26] 徐峰.浅谈我国嵌入式Linux技术的发展现状与发展动向.电子产品世界.2009. [27] Srinivasari, T.; Jonathan, J.B.S.; Chandrasekhar, A. Sentient autonomous vehicle using

advanced neural net technology[A]. Cybernetics and Intelligent Systems, 2009 [28] 诸邦田.电子电路实用抗干扰技术[M].北京:人民邮电出版社,2008

第 35页 共 49 页

湖南商学院毕业设计

[29] 清源计算机工作室. Protel 99 SE原理图与PCB及仿真[M]. 北京:机械工业出版

社,2008.

[30] 何希才. 传感器及其应用电路[M]. 北京:电子工业出版社,2009.

第 36页 共 49 页

湖南商学院毕业设计

致 谢

值此论文付梓之际,首先向我的指导老师周开军致以最衷心的感谢。自毕业设计以来,周老师渊博的学识、严谨的学风、忘我的工作精神和朴实谦和的作风时刻感染着我,给了我很大的启迪和帮助。周老师不仅传授给我书本上的知识,更让我掌握了学习的方法和独立思考的能力。在本论文的选题、开题、写作、修改和论文完成阶段,周老师都给了我最大的支持和帮助。

从选题到这次毕业论文能够最终顺利完成,还要要感谢各位老师三年来对我的教育和关怀,使我能将我所学到的知识在论文中表达出来,谢谢我的指导老师支持和帮助才使得我的毕业论文最终顺利完成。

再次感谢实验室的老师给予方便,让我在调试过程中,借用了实验室的电脑和实验平台。还有感谢图书馆工作人员,让我在设计时借阅了大量资料。

最后,谨以此文献给我挚爱的母亲以及所有关心帮助过我的亲人和朋友!

2012年6月

第 37页 共 49 页

湖南商学院毕业设计

附录1: USB摄像头驱动代码

打开视频设备。v4l_open( ) static int

set_frame_fp(int fps, int fd) { int ret;

struct v4l2_streamparm parm;

memset(&parm, 0, sizeof(struct v4l2_streamparm)); parm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; parm.parm.capture.timeperframe.numerator = 1; parm.parm.capture.timeperframe.denominator = fps; ret = ioctl(fd, VIDIOC_S_PARM, &parm); if(ret < 0) { } return 0; } static int

map_dev_buff(int num_buffer, int fd, unsigned char** mem_list) { int ret;

struct v4l2_buffer buf; int i = 0;

for(i=0; i

memset(&buf, 0, sizeof(struct v4l2_buffer)); buf.index = i;

printf(\

error: %s\\n\

return -1;

parm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; parm.parm.capture.timeperframe.numerator = 1; parm.parm.capture.timeperframe.denominator = fps

buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP; ret = ioctl(fd, VIDIOC_QUERYBUF, &buf); if(ret<0) { ;

buf.index = I;

printf(\

ioctl(): error: %s\\n\

buf.index = i;

第 38页 共 49 页

} return 0; }

/* open device */ pcamera->dev_fd = -1;

} { }

return -1;

湖南商学院毕业设计

mem_list[i] = (unsigned char*)mmap(0, buf.length, PROT_READ,

MAP_SHARED, fd, buf.m.offset);

if(MAP_FAILED == mem_list[i])

printf(\

mmap():error: %s\\n\

return -1;

if((pcamera->dev_fd = open(dev,O_RDONLY))<0) { }

获取设备和图像信息。v4l_get_capability( ) 函数获取设备信息, v4l_get_picture( )函数获取图像信息。 /* server information */ fprintf(stderr, \

Server information\\n\\n\

ioctl(): error: %s\\n\

printf(\ fprintf(stderr, \ fprintf(stderr, \ fprintf(stderr, \

pcamera->info.width, pcamera->info.height);

fprintf(stderr, \

fprintf(stderr, \ 初始化采集参数 /* camera config */ pcamera = &camera;

memset (pcamera, 0, sizeof(dev_config)); pcamera ->info.driver = driver; pcamera ->info.bus_info = bus_info; pcamera->info.card = card;

pcamera->num_buffer = NB_BUFFER; /* set number of buffer */ pcamera->fps = FPS;

/* set fps=FPS */

pcamera->format = MJPEG; 采集视频数据。

/* *

/* set format=MJPEG */

printf(\exit(0);

pcamera->stream_port = htons(PORT); /* set server port */

第 39页 共 49 页

* create server socket and start server * * */

湖南商学院毕业设计

/* ignore SIGPIPE (send if transmitting to closed sockets) */ signal(SIGPIPE, SIG_IGN); addr.sin_family = AF_INET;

addr.sin_port = pcamera->stream_port; addr.sin_addr.s_addr = htonl(INADDR_ANY) if (signal(SIGINT, signal_handler) == SIG_ERR) { }

/* open socket for server */

if((server_fd = socket(PF_INET, SOCK_STREAM, 0))<0) { }

/* ignore \

if(setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on))<0) { }

/* configure server address to listen to all local IPs */ memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET;

addr.sin_port = pcamera->stream_port; addr.sin_addr.s_addr = htonl(INADDR_ANY);

if(bind(server_fd, (struct sockaddr*)&addr, sizeof(addr)) != 0){ }

/* start listening on socket */ if ( listen(server_fd, 10) != 0 ) { }

/* start to read the camera, push picture buffers into global buffer */ pthread_create(&client_th, NULL, &client_thread, pfd);

g_buf = (unsigned char *) calloc(1, (size_t)pcamera->frame_size);

printf(\exit(1);

printf(\perror(\exit(1);

printf(\exit(1);

printf(\exit(1);

fprintf(stderr, \exit(1);

第 40页 共 49 页

湖南商学院毕业设计

pthread_create(&camera_th, 0, &cam_thread, NULL); pthread_detach(camera_th);

/* create a child for every client that connects */ while(1) { int *pfd = (int *)calloc(1, sizeof(int)); *pfd = accept(server_fd, 0, 0);

pthread_create(&client_th, NULL, &client_thread, pfd); pthread_detach(client_th);

}

/* close the camera */ disable(pcamera->dev_fd); close(pcamera->dev_fd); pcamera->dev_fd = -1; free(g_buf); return 0;

}

第 41页 共 49 页

湖南商学院毕业设计

附录2: Otsu算法Matlab程序

function Result = detect() %读取前后两帧图像尺寸 B = imread('back.jpg');%背景图像 B = rgb2gray(B);

X = imread('frame1.jpg');%有目标图像 X = rgb2gray(X); %统一前后两帧图像尺寸 [a,b] = size(B); [c,d] = size(X); I = zeros(a,b); if c >= a & d >= b I = X(1:a,1:b); elseif c < a & d >= b I(1:c,1:b) = X(1:c,1:b); I(c+1:a,:) = B(c+1:a,:); elseif c >= a & d < b I(1:c,1:d) = X(1:c,1:d); I(:,d+1:b) = B(:,d+1:b); elseif c < a & d < b I(1:c,1:d) = X(1:c,1:d); I(1:c,d+1:b) = B(1:c,d+1:b); I(c+1:a,:) = B(c+1:a,:); end I = double(I); B = double(B);

%通过差值,获取目标,并显示原图像 H = I - B; figure(1); imshow(uint8(I)); figure(2); imshow(uint8(B)); F = abs(H); figure(3); imshow(uint8(F));

%获取目标,且背景为白色 R = ones(a,b) * 255; [e,f]=size(F); for i = 2:(a-1) for j = 2:(b-1)

if (F(i-1,j-1)+F(i-1,j)+F(i-1,j+1)+F(i,j-1)+F(i,j)+F(i,j+1)+F(i+1,j-1)+F(i+1,j)+F(i+1,j+1))/9 > 30 R(i,j) = I(i,j);

第 42页 共 49 页

湖南商学院毕业设计

end end end figure(4); imshow(uint8(R)); R = double(R);

R = medfilt2(R,[25,25]);%中值滤波 R = uint8(R); figure(5); imshow(R);

Result = ones(a,b) * 255; for i = 1:a for j = 1:b

if R(i,j)~=0 & R(i,j)~=255 Result(i,j) = I(i,j); end end end

% Result = im2bw(uint8(Result)); figure(6);

imshow(uint8(Result)); bw = im2bw(uint8(Result)); figure(7); imshow(bw); end

第 43页 共 49 页

湖南商学院毕业设计

附录3: S3C2440 CPU1电路图

S3C2440 CPU1 电路:

第 44页 共 49 页

本文来源:https://www.bwwdw.com/article/2qww.html

Top