录像中重复视频片段检测算法的设计与实现

录像中重复视频片段检测算法的设计与实现
录像中重复视频片段检测算法的设计与实现

电子科技大学

UNIVERSITY OF ELECTRONIC SCIENCE AND TECHNOLOGY OF CHINA 学士学位论文

BACHELOR DISSERTATION

论文题目录像中重复视频片段检测算法的设计与实现

学生姓名包广国

学号2906004029

专业计算机科学与技术

学院计算机科学与工程学院

指导教师邱元杰

指导单位计算机学院

摘要

本论文针对录像视频中经常出现的一些重复片段进行检测,旨在检测并标注出视频中的重复片段。论文采用的算法是首先对视频分段然后对微小片段检测其重复性,相比逐帧检测虽然查全率和查准率有所下降,但大大提高了运算效率。并且借鉴了二元矩阵的记录方式来记录视频单元段之间的重复性,对于重复片段的搜索定位更为方便。视频分为若干个单元段之后采用一定的计算公式得到视频单元段之间的相似度,根据相似度与经验阀值之间的关系来确定其是否重复,因此经验阀值的选取将直接影响检测的结果。最后采用一些特定的视频资源来检测算法的查全率和查准率。

关键词:重复视频,视频分割,相似矩阵

I

ABSTRACT

In this article, often appear in the video repeats detection, to detect and mark the video repeats.The algorithm used in this paper is the first video segment and then the tiny fragment detected repeatability, compared to frame-by-frame detection recall and precision rate of decline, but greatly improve the efficiency of operations. And learn from the binary matrix approach to recording your video unit segment between repeatability, more convenient for repeat fragment search positioning. After the video is divided into a plurality of unit sections formula to obtain the degree of similarity between the segments of the video unit, based on the relationship between the threshold of similarity with the experience to determine whether to repeat the experience threshold selection will directly affect the detection of results. Finally, some specific video resources to detect algorithm recall and precision.

Key words: Repeated video,Video segmentation,Similarity matrix

目录

第1章绪论 (1)

1.1本课题的研究背景 (1)

1.2 重复视频检测的研究意义 (1)

1.2.1 重复视频片段检测的应用意义 (1)

1.2.2 重复视频片段检测的学术意义 (2)

1.3本课题的研究内容 (2)

1.3.1 重复视频片段检测的一般方法 (2)

1.3.2 重复视频片段检测的主要步骤和技术 (2)

1.4国内外研究现状 (3)

1.4.1 已知重复属性的检测方法 (3)

1.4.2镜头分割检测方法 (3)

1.4.3自相似分析方法 (3)

1.5文章结构 (3)

第2章实验环境的相关介绍 (4)

2.1 实验环境及开发语言 (4)

2.2 VS 2012简介 (4)

2.2.1 VS 2012旗舰版概述 (4)

2.2.2 VS发展历程 (4)

2.2.3 VS 2012的六大新特性 (5)

2.2.4 系统要求 (6)

2.2.5 硬件要求 (6)

2.3openCV简介 (6)

2.3.1 openCV基本概念 (6)

2.3.2 openCV的结构和内容 (7)

2.3.3 openCV的环境配置 (7)

2.4openCV在本课题中的应用 (8)

2.4.1 openCV读取视频 (8)

2.4.2 openCV视频流的捕获和帧信息的获取 (9)

2.5 C++简介 (10)

2.5.1 C++概述 (10)

2.5.2 从C到C++ (10)

2.5.3 发展历史 (11)

2.5.4 语言特点 (11)

第3章重复视频检测算法概要设计 (13)

3.1 算法概述 (13)

III

3.2 功能模块的划分 (13)

3.3 算法主程序流程 (14)

3.4 算法优缺点 (15)

第4章重复视频片段检测算法的具体实现 (16)

4.1 视频文件读取 (16)

4.2 视频分段和特征提取 (16)

4.2.1 视频分段 (16)

4.2.2 特征值提取 (17)

4.3 串行检测器 (20)

4.3.1 串行检测器1 (20)

4.3.2 串行检测器2 (24)

4.4 重复片段的搜索定位与标注 (27)

4.4.1 重复片段概述 (27)

4.4.2 重复视频片段的搜索定位 (28)

4.4.3 重复视频片段的标注 (28)

4.4.4 重复视频片段搜索与标注的流程图和实现代码 (29)

第5章实验结果及数据分析 (32)

5.1 经验阀值u的选取 (32)

5.2 经验阀值t的选择 (35)

5.3 总的实验结果 (37)

第6章总结与展望 (40)

致谢 (42)

参考文献 (43)

外文原文 (45)

外文译文 (50)

IV

第1章绪论

1.1本课题的研究背景

随着多媒体技术的发展,数字视频的应用越来越广泛。随着Web 2.0以及社区化网络的发展,视频多媒体已经逐渐成为互联网的应用热点。用户可以拍摄、编辑及上传视频片段,这使得视频的数量迅速膨胀,数字视频产品对于我们的生活来说已经成为不可或缺的东西。而视频重复片段(如节目片花,位置片花,运动飞逝片花,广告,安全录像等)的时间跨度几秒到几分钟不等,被越来越广泛地应用在各种视频产品中(新闻,体育报道,教育节目,安全系统等)。视频段在这些视频产品中使用的属性(如广告播放的重复性),他们会在同一视频中被一次甚至多次重复播放,而有意义的片段却淹没其中,造成回放时难以找到有意义的片段。重复视频片段极大地方便了各类产品,而与此同时也带来了一些不必要的麻烦,不利于用户的浏览,因此重复视频片段的检测也显得尤其重要。传统的基于关键词描述的视频检索因为描述能力有限、主观性强、手工标注等原因,已经不能满足海量视频检索的需求。近年来,众多学者提出了多种重复视频的检测算法,重复视频序列的检测也逐渐成为视频研究的一个焦点。

1.2 重复视频检测的研究意义

1.2.1 重复视频片段检测的应用意义

如上面所说,视频产品的应用已经越来越广泛;因为视频片段在这些视频产品中使用的属性(如广告播放的重复性),他们会在同一视频中被一次甚至多次重复,而有意义的片段却淹没其中,造成回放时难以找到有意义的片段,或因大量的重复片段而降低了用户的浏览效率。因此,视频重复片段检测的意义主要有以下几点:

第一,视频冗长检测。例如在安全系统中,摄像头所拍摄的视频文件中会存在大量的重复视频片段或近似重复的视频片段,这对于用户的浏览是极为不方便的。因此,为了方便用户快速浏览视频内容,重复视频片段的检测就显得非常重要。

第二,广告剔除。很多视频中总会穿插一些广告,而这些广大用户所讨厌的广告内容完全相同。因此,重复视频片段检测就很容易检测出广告视频片段,对于广告的剔除也有很重要的作用。

第三,主题跟踪。例如,新闻视频的追踪。随着信息技术的发展,时刻都有来自不同国家,不同语言和不同电视台的新闻视频,尤其是对同一事件进行报道的视频节目中,往往包含有重复或近似重复的场景和对象,因此,为了方便用户浏览和检索这些视频,探索那些具有不同来源、语言和事件的新闻故事的相似性就显得尤为重要。虽然本课题研究的算法是基于内容的重复性检测,但对大规模视频数据库中的视频数据检索,是一门交叉学科,以图像处理、模式识别、计算机视觉、图像理解等领域的知识为基础;原理都是提取出视频的特征,然后通过特征的相似性比较得出结果。所以本课题研究的算法同样可以用于网络视频的检索。

1

1.2.2 重复视频片段检测的学术意义

重复视频检测的本质是根据视频段的特征来比较其相似性,所以其学术意义可以从视频特征的选择以及快速检索两个方面进行讨论。

第一,视频特征的选择。

视频数据比文本、图像包含更多、更丰富的信息,它有一系列连续记录的帧图像组成,是一个二维图像流序列,是非结构化的,因此要实现对重复片段的检测,首先必须对这种非结构化的数据进行处理,使之成为结构化的数据,这样才能比较两个视频段的相似性。对视频的数据进行处理得到结构化数据的过程就是视频特征选取的过程。

视频的内容特征通常是由关键帧的特征内容来表示的,关键帧是指从视频中提取的具有代表性的一些视频帧,它是反映一个视频中主要内容信息的一帧或若干帧图像,它的作用类似于文本检索中的关键词。

视频关键帧的内容特征包括颜色、文理、运动、边缘等等。每种特征的描述方法又可以有多种,比如颜色特征就可以用颜色直方图、色矩、色集、色聚合向量、色相关图来描述。可以使用的特征虽然多,但采用哪种视觉特征可以取得较好的检测效果还需要做进一步的研究,因为每一种特征都不能全面地描述一个视频,都有其优缺点。比如,颜色直方图,虽然计算简单,但是容易受光照变化的影响,且对图像局部物体运动不敏感,从而影响检测结果的准确性。而局部关键点虽然能很好地反应视频帧的局部信息且检测结果准确率高,但是由于其个数过多,维数过大,计算复杂,不能保证检测的速度。因此,选择合适的特征是保证重复视频检测的准确性和高效性的基础。

第二,快速检索问题。

传统的重复性视频检测策略大都是采用顺序扫描方式,这种方法的时间复杂度与数据规模成线性关系。当视频数据量特别大的时候,顺序扫描是非常耗时的。因此快速检索问题也需要更为深入的研究。

1.3本课题的研究内容

1.3.1重复视频片段检测的一般方法

就目前而言,重复视频片段的研究主要方法是首先提取视频的特征,然后计算关键帧的内容相似度,依据相似度和经验阀值之间的关系来判断其重复性,本课题也将借鉴这种研究的方法。而现有的很多算法是在已知视频重复属性或重复段边界的前提下去衡量视频片段的重复性,本课题在未知条件下检测视频片段的重复性,这个问题具有一定的挑战性。

1.3.2重复视频片段检测的主要步骤和技术

这部分将介绍本论文采用的研究步骤:首先将视频文件进行分段,分割成若干个微小的视频单元段;第二步是每一帧特征的提取和关键帧特征的提取;第三步是以视频单元段作为检测的基本单元进行重复性的检测;最后对检测结果进行分析处理。

在这部分中还要介绍所用到的关键技术——基于openCV视频流的捕获和帧信息的获取。这项

2

技术奠定了本课题研究的基础,在本课题的研究中起着至关重要的作用。

1.4国内外研究现状

1.4.1 已知重复属性的检测方法

2003年K.Kashino,T.Kurozumi和H.Murase等人提出了一种算法,在已知视频重复片段的前提下提取其特征来检测它在视频流中的重复次数[5]。这种算法具有很大的局限性,对于未知其重复属性的视频文件则无法检测。

1.4.2镜头分割检测方法

2004年K.M.Pu等人提出一种把视频分割成镜头后通过逐帧比较来检测重复段的思路[7]。由于镜头对其分割长度存在敏感性,因此当分割段间隔长度小于镜头长度时,分割段间外的部分镜头将不能被检测。另一方面,逐帧比较虽然查全率和查准率非常高(理论上是100%),但是算法的时间复杂度也非常高,检测效率会大大降低。

1.4.3自相似分析方法

2001年M.CooPer和J.Foote提出的算法中,采用自相似分析方法来可视化音频和视频数据特征,输出一个元素值为全体实数的矩阵[3]。再依据矩阵判断其重复性。本课题借鉴这样的记录方式,也采用二元矩阵来记录初步的检测结果。与之不同的是,本课题研究所得到的矩阵元素只有0和1。

1.5文章结构

文章将首先简要介绍实验环境及开发工具,以及openCV以及在本课题研究中的作用。包括openCV简介、环境的搭建与配置,视频文件的获取方法、视频流的捕获以及每一帧信息的获取方法等内容。

在接下来的重复视频片段检测部分,文章将首先对系统进行概要设计的简述以及算法的整体概述,介绍各个功能模块的划分和作用以及数据流的处理流程。对于视频分段部分,将从计算效率和计算准确率两个方面来阐述分段策略。然后对每一帧特征值的提取和关键帧特征值的提取方法进行详细叙述。

在提取出特征值之后,将分别讲述对特征值的检测方法以及检测的详细方法,并介绍重复性检测方法的相关内容,以及重复视频片段的定位、搜索方法。实验结果分析部分,从查全率和查准率两个方面来阐述经验阀值的选取方法

在最后,文章首先总结项目的实现情况,描述算法的运行效果并给出评价,然后指出项目中存在的不足并提出改进设想,最后根据当前的技术发展趋势对重复视频片段检测方法未来的发展进行展望。

3

第2章实验环境的相关介绍

2.1 实验环境及开发语言

本课题研究的算法因为涉及到视频处理,而openCV提供了许多视频处理的函数,因此本实验在openCV的环境下进行。关于开发工具,Visual Studio为用户提供了最先进的开发解决方案,是目前最流行的Windows平台应用程序开发环境,最新版本为VS 2012。因为openCV提供了大量支持C和C++的函数入口,因此本课题实验采用C++作为开发语言。下面详细介绍VS2012、openCV及C++语言。

2.2 VS 2012简介

2.2.1 VS 2012旗舰版概述

Microsoft Visual Studio 2012 Ultimate旗舰版(vs2012)是一个最先进的开发解决方案,它使各种规模的团队能够设计和创建出使用户欣喜的引人注目的应用程序。在Visual Studio 2012旗舰版(VS2012)中您可以使用灵活敏捷的规划工具(如容量规划、任务板和积压工作管理)来按照您自己的进度实现增量开发技术和敏捷方法。使用高级建模、发现和体系结构工具可描述您的系统并帮助确保实现您的体系结构构想。通过使用生产中的IntelliTrace、Operations Manager Connector 和Preemptive Analytics,使开发团队和运营团队能够很好地协作。通过从部署的软件生成可对其采取措施的Bug 来改进质量和减少解决时间,让运营人员高效协作以提供使开发人员能够深入了解生产问题的数据。简而言之,用于可以创建创新的高质量解决方案并降低开发成本。

Visual Studio 2012 作为一个集成解决方案,适用于无论是个人或者各种规模的开发团队。Visual Studio 2012实现了同事间的无缝协作,提高了生产效率与专注度,最终好的点子变成了优秀的现实应用。您可以使用灵活敏捷的规划工具(如容量规划、任务板和积压工作管理)来按照您自己的进度实现增量开发技术和敏捷方法。

Visual Studio 2012 是一个综合性产品系列,适用于每一位希望升级或创建精彩应用程序的组织、团体和个人开发人员。VS2012 通过整合先前单个产品中的功能并为每个版本加入新的强大功能,简化了产品系列,并且,它更加适合用于开发Windows8 专用程序。

2.2.2 VS发展历程

1997年,微软发布了Visual Studio 97。包含有面向Windows 开发使用的Visual Basic5.0、Visual C++5.0,面向Java开发的Visual J++和面向数据库开发的Visual FoxPro,还包含有创建DHTML (Dynamic HTML) 所需要的Visual InterDev。其中,Visual Basic 和Visual FoxPro 使用单独的开发环境,其他的开发语言使用统一的开发环境。

4

1998 年,微软发布了Visual Studio 6.0。所有开发语言的开发环境版本均升至6.0。这也是Visual Basic 最后一次发布,从下一个版本(7.0) 开始,Microsoft Basic 进化成了一种新的面向对象的语言:Microsoft Basic NET。由于微软公司对于Sun 公司Java 语言扩充导致与Java 虚拟机不兼容被Sun 告上法庭,微软在后续的Visual Studio 中不再包括面向Java 虚拟机的开发环境。

2002 年,随着.NET 口号的提出与Windows XP / Office XP 的发布,微软发布了Visual Studio .NET(内部版本号为7.0)。在这个版本的Visual Studio 中,微软剥离了Visual FoxPro 作为一个单独的开发环境以Visual FoxPro 7.0 单独销售,同时取消了Visual InterDev。与此同时,微软引入了建立在.NET 框架上(版本1.0)的托管代码机制以及一门新的语言C#(读作C Sharp,意为C#)。C# 是一门建立在C++和Java 基础上的现代语言,是编写.NET 框架的语言。

.NET 的通用语言框架机制(Common Language Runtime, CLR),其目的是在同一个项目中支持不同的语言所开发的组件。所有CLR 支持的代码都会被解释成为CLR 可执行的机器代码然后运行。

.net控件是指以输入或操作数据的对象。.net控件是.net平台下对数据和方法的封装。有自己的属性和方法。属性是控件数据的简单访问者。方法则是控件的一些简单而可见的功能。过去,开发人员将C/C++ 与Microsoft 基础类(MFC) 或应用程序快速开发(RAD) 环境(如Microsoft® Visual Basic®)一起使用来创建这样的应用程序。.NET Framework 将这些现有产品的特点合并到了单个且一致的开发环境中,该环境大大简化了客户端应用程序的开发。包含在.NET Framework 中的Windows 窗体类旨在用于GUI 开发。您可以轻松创建具有适应多变的商业需求所需的灵活性的命令窗口、按钮、菜单、工具栏和其他屏幕元素。Visual Basic、Visual C++ 都被扩展为支持托管代码机制的开发环境,且Visual Basic .NET更是从Visual Basic 脱胎换骨,彻底支持面向对象的编程机制。而Visual J++ 也变为Visual J#。后者仅语法同Java 相同,但是面向的不是Java虚拟机,而是.NET Framework。

2003 年,微软对Visual Studio 2002 进行了部分修订,以Visual Studio 2003 的名义发布(内部版本号为7.1)。Visio 作为使用统一建模语言(UML)架构应用程序框架的程序被引入,同时被引入的还包括移动设备支持和企业模版。.NET 框架也升级到了 1.1。

2005 年,微软发布了Visual Studio 2005。.NET 字眼从各种语言的名字中被抹去,但是这个版本的Visual Studio 仍然还是面向.NET 框架的(版本2.0)。

这个版本的Visual Studio 包含有众多版本,分别面向不同的开发角色。同时还永久提供免费的Visual Studio Express 版本。

2007年11月,微软发布了Visual Studio 2008。

2010年4月12,微软发布了Visual Studio 2010 以及.NET Framework4.0。

2012年9月12日,微软在西雅图发布Visual Studio 2012。

2.2.3 VS 2012的六大新特性

1、VS2012和VS2010相比,最大的新特性莫过于对Windows 8 Metro开发的支持。Metro天生为云+端而生,简洁、数字化、内容优于形式、强调交互的设计已经成为未来的趋势。不过对于开发者而言,要想使用这项新功能,必须要安装Windows 8 RP版。该版本中包含了新的Metro应用程序模板,增加了JavaScript功能、一个新的动画库,并提升了使用XAML的Metro

5

应用程序的性能。

2、VS2012 RC在界面上,比Beta版更容易使用,彩色的图标和按照开发、运行、调试等环境区分的颜色方案让人爱不释手。

3、VS2012集成了ASP。NET MVC 4,全面支持移动和HTML5,WF 4.5相比WF 4,更加成熟,期待已久的状态极工作流回来了,更棒的是,它的设计器已经支持C#表达式(之前只能用https://www.360docs.net/doc/187831404.html,)。

4、VS2012支持.NET 4.5,和.NET 4.0相比,4.5更多的是完善和改进,4.5也是Windows RT 被提出来的首个框架库,.NET获得了和Windows API同等的待遇。

5、VS2012+TFS2012实现了更好的生命周期管理,可以这么说,VS2012不仅是开发工具,也是团队的管理信息系统。

6、VS2012对系统资源的消耗并不大,不过需要Windows 7/8的支持。

2.2.4 系统要求

支持的操作系统:

Windows 7 SP1(x86 和x64)

Windows 8(x86 和x64)

Windows Server 2008 R2 SP1 (x64)

Windows Server 2012 (x64)

2.2.5 硬件要求

1.6 GHz 或更快的处理器

1 GB RAM(如果在虚拟机上运行,则为1.5 GB)

10 GB 的可用硬盘空间

5400 RPM 硬盘驱动器

以1024 x 768 或更高的显示分辨率运行的支持DirectX 9 的视频卡

2.3openCV简介

2.3.1 openCV基本概念

openCV的全称是:Open Source Computer Vision Library。OpenCV于1999年由Intel建立,现在由Willow Garage提供支持。OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列C 函数和少量C + + 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。openCV在人机互动、物体识别、图象分割、人脸识别、动作识别、运动跟踪、机器人的研究等领域都有广泛的应用。

6

2.3.2 openCV的结构和内容

OpenCV主体分为五个模块,如图2-错误!未找到引用源。所示。OpenCV的CV模块包含基本的图像处理函数和高级的计算机视觉算法。ML是机器学习库,包含一些基于统计的分类和聚类工具。HighGUI包含图像和视频输入/输出的函数。CXCore包含OpenCV的一些基本数据结构和相关函数。CvAux模块中一般存放一些即将被淘汰的算法和函数(如基于嵌入式隐马尔可夫模型的人脸识别算法),同时还有一些新出现的实验性的算法和函数(如背景和前景的分割)。CvAux在Wiki中并没有很完整的文档,而在.../opencv/docs子目录下的CvAux文档也不是很完整。

图2-1 openCV的结构和内容

2.3.3 openCV的环境配置

1.安装VS 2012

2.安装openCV(我安装的目录为C:\Program Files\opencv)

3.配置windows环境变量。将C:\Program Files\opencv\build\x86\vc11\bin加入到环境变量PATH,加入后需要注销当前Windows用户(或重启)才能生效。

4.配置VS

(1)在VS右侧边资源管理器中点击属性按钮,打开属性配置管理器,选择VC+ +目录,

7

在包含目录中添加表2-1所示的三项:

表2-1 包含目录表

(2)将C:\Program Files\opencv\build\x86\vc11\lib添加到库目录中。

(3)选择链接器->输入,在依赖附加项中添加表2-2所示的各项:

表2-2 附加依赖项表

2.4openCV在本课题中的应用

2.4.1 openCV读取视频

第一、openCV读取视频的原理

OpenCV读取视频包括从视频文件和摄像头读取。读取视频其实就是读取每一帧,相当于把每一帧当做图像来读取。

第二、cvCapture结构体

8

cvCapture是一个保存图像捕获所需的信息的结构体。从摄像头和视频文件播放视频必须是从第一帧来时一帧一帧的按顺序获取,因此每获取一帧后都要保存相应的状态和参数。比如从视频文件中获取,需要保存视频文件的文件名,相应的解码器类型,下一次如果要获取将需要解码哪一帧等。这些信息都保存在cvCapture中,每获取一帧后,这些信息都将被更新,获取下一帧需要将新信息传给获取的Api接口。

第三、解码器

openCV本身支持avi格式的解码,若是其他格式的视频文件则需要安装解码器XviD-1.1.3-27042008.exe,否则运行程序时会出现无法打开文件的错误。而avi格式也有四种不同的编码方式,openCV支持的是A VI —Audio-Video.lnterleaved将与语言同步组成在一起的格式。因此avi格式的文件也有可能出现无法打开的情况。

2.4.2 openCV视频流的捕获和帧信息的获取

(1)获取视频流设备信息,示例代码如表2-3所示:

表2-3 获取视频流代码清单

统计总帧数仅对视频文件有效,但似乎不太准确。

(2)获取帧图信息,示例代码如表2-4所示:

表2-4 获取帧信息代码清单

所抓取的帧的位置有三种表达方式:距离第一帧画面的时间间隔(毫秒为单位), 或者距离第一帧画面(序列号为0)的序列数. 第三种方式是按相对比率,第一帧的相对比率为0,最后一帧的相对比率为1. 此方式仅对读取视频文件时有效。

(3)设置从视频文件抓取的第一帧画面的位置,示例代码如表2-5所示:

9

表2-5 抓取第一帧画面的代码示例

2.5 C++简介

2.5.1 C++概述

在C基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。C++进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++目前流行的编译器最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2012。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。

C++由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。

1998年国际标准组织(international standard organization, ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。C++0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C++0x已经毫无疑义地成为正式国际标准。先前被临时命名为C++0x的新标准将被称为C++ 2011。C++ 2011将取代现行的C++标准ISO/IEC 14882,它公开于1998年并于2003年更新,通称C++98以及C++03。国际标准化组织于2011年9月1日出版发布ISO/IEC 14882:2011,名称是:Information technology -- Programming languages -- C++ Edition: 3。

2.5.2 从C到C++

计算机诞生初期, 人们要使用计算机必须用机器语言或汇编语言编写程序?世界上第一种计算机高级语言诞生于1954年, 它是FORTRAN语言?先后出现了多种计算机高级语言?其中使用最广泛?影响最大的当推BASIC语言和C语言?

BASIC语言是1964年在FORTRAN语言的基础上简化而成的, 它是为初学者设计的小型高级语言?

C语言是1972年由美国贝尔实验室的D.M.Ritchie研制成功的?它不是为初学者设计的,而是为计算机专业人员设计的?大多数系统软件和许多应用软件都是用C语言编写的?

但是随着软件规模的增大, 用C语言编写程序渐渐显得有些吃力了?

10

C++是由AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的?C++保留了C语言原有的所有优点, 增加了面向对象的机制?

C++是由C发展而来的, 与C兼容?用C语言写的程序基本上可以不加修改地用于C++?从C++的名字可以看出它是C的超越和集中?C++既可用于面向过程的结构化程序设计, 又可用于面向对象的程序设计, 是一种功能强大的混合型的程序设计语言?

C++对C的“增强”,表现在六个方面:

(1) 类型检查更为严格。

(2) 增加了面向对象的机制。

(3)增加了泛型编程的机制(template)

(4)增加了异常处理

(5)增加了运算符重载

(6)增加了标准模板库(STL)

面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软件开发的效率?不要把面向对象和面向过程对立起来, 面向对象和面向过程不是矛盾的,而是各有用途?互为补充的?

学习C++, 既要会利用C++进行面向过程的结构化程序设计, 也要会利用C++进行面向对象的程序设计,更要会利用模板进行泛型编程?

2.5.3 发展历史

C++语言发展大概可以分为三个阶段:

第一阶段

从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;

第二阶段

从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;

第三阶段

从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。

2.5.4 语言特点

(一)优点

·C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。

·C++设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。

·C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。

·C++设计成尽可能与C兼容,借此提供一个从C到C++的平滑过渡。

11

·C++避免平台限定或没有普遍用途的特性。

·C++不使用会带来额外开销的特性。

·C++设计成无需复杂的程序设计环境。

出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup的《C++语言的设计和演化》(1994)里做了详尽的陈述。

C++在一定程度上可以和C语言很好的结合,甚至目前大多数C语言程序是在C++的集成开发环境中完成的。C++相对众多的面向对象的语言,具有相当高的性能。

C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。

(二)代码性能

人们一般认为,使用Java或C#的开发成本比C++低。但是,如果充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。

(三)缺点

C++由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C++的编译系统受到C++的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。

由于本身的复杂性,复杂的C++程序的正确性相当难于保证。也有人提出不支持多线程的原语等缺陷。不过有如此多的知名人士提出了如此多的缺陷,正说明C++被广泛使用和成功。c++语言由于过度的复杂性,以及与unix的文化相抵触,在unix/linux领域受到很多著名人士(比如Linux之父linus torvalds与著名黑客Eric S. Raymond)的强烈批评与抵制。

12

第3章重复视频检测算法概要设计

3.1 算法概述

在视频进入串行检测器之前,首先被分段进行视频数据缩减和特征值的提取。视频被分割成视频单元段(VU)序列,每个单元视频再提取一组特征送入串行检测器。检测器分为检测器1和检测器2,它们有不同的视频表现形式。检测器1的主要功能是视频抽取和减少检测复杂度。如果所有视频帧的像素值作为特征值,虽然准确率高,但是运算量太大,严重降低了算法的检测效率。有实验结果表明,特征抽取后数据丢失越多,准确率越低,所以寻求一个合适的提取策略去平衡检测效率和准确度是非常重要的。检测器2在检测器1的基础上进行更为精确的计算,并且具有对为重复段去伪的功能。最终串行检测器输出一个二元矩阵,矩阵元素值为0或1,1代表重复,其他为0。然后采用一个循环的搜索公式检测出重复片段的位置,最后对重复片段进行标注。

3.2 功能模块的划分

本课题采用的算法可分为三大功能模块:视频分段和特征提取模块、检测重复片段模块、标注重复片段模块。图3-1是功能模块划分示意图。

视频分段和特征提取模块的主要功能是视频文件的读取、对视频进行分段、每一帧和关键帧特征值的提取;检测重复片段模块包括检测器1和检测器2,检测器1的主要功能是视频抽取和初步计算视频单元段(VU)之间的相似度,检测器2的主要功能是在检测器的基础上进行更为精确的计算和去除伪重复片段;标注重复片段模块的主要功能是依据串行检测器输出的二元矩阵对重复片段进行搜索定位以及对重复片段进行标注。各个模块的关系是串联,前一个模块的输出作为后一个模块的输入。

13

图3-1 功能模块划分示意图

3.3 算法主程序流程

本课题研究的算法,首先是对视频文件的读取。在第2章提及openCV的视频获取方法主要是两种,摄像头读取和视频文件读取。本课题只针对视频文件的读取,利用openCV提供的cvCaptureFromFile函数对视频文件进行读取。

若成功读取到视频文件,则对视频文件进行分段处理,否则结束。对视频文件的分段处理采用固定大小的窗口(W)把视频文件分成若干个连续的视频单元段(VU)。

视频分段之后对每一帧进行特征值的提取,同时进行关键帧的特征提取,为了排除关键帧选取的偶然性,本课题采用平均帧作为关键帧的特征,平均帧是相邻V帧的平均。

提取出特征值之后,将特征值送入串行检测器1进行初步的重复性计算,再将结果送入串行检测器2进行更为精确的计算,去除伪重复片段,输出一个记录着各视频单元段重复性的二元矩阵。

最后,在得到的二元矩阵基础上进行重复片段的搜索和标注。标注出重复片段之后整个算法结束。

主程序流程图如图3-2所示。

14

图3-2 主程序流程图

3.4 算法优缺点

本课题提出了一种基于固定窗口视频分割的重复段检测算法,在减少大量运算工作的前提下,较为准确地提取图像的有效特征,大大提高了检测效率。并且采用经验阀值作为判断依据,具有很大的灵活性。但是这种检测方法相比逐帧比较,无法保证检测的准确率,关键在于检

测效率和准确率之间的取舍。

15

控制系统仿真课程设计报告.

控制系统仿真课程设计 (2011级) 题目控制系统仿真课程设计学院自动化 专业自动化 班级 学号 学生姓名 指导教师王永忠/刘伟峰 完成日期2014年6月

控制系统仿真课程设计一 ———交流异步电机动态仿真 一 设计目的 1.了解交流异步电机的原理,组成及各主要单元部件的原理。 2. 设计交流异步电机动态结构系统; 3.掌握交流异步电机调速系统的调试步骤,方法及参数的整定。 二 设计及Matlab 仿真过程 异步电机工作在额定电压和额定频率下,仿真异步电机在空载启动和加载过程中的转速和电流变化过程。仿真电动机参数如下: 1.85, 2.658,0.2941,0.2898,0.2838s r s r m R R L H L H L H =Ω=Ω===, 20.1284Nm s ,2,380,50Hz p N N J n U V f =?===,此外,中间需要计算的参数如下: 21m s r L L L σ=-,r r r L T R =,22 2 s r r m t r R L R L R L +=,10N m TL =?。αβ坐标系状态方程: 其中,状态变量: 输入变量: 电磁转矩: 2p m p s r s L r d ()d n L n i i T t JL J βααωψψβ=--r m r r s r r d 1d L i t T T ααβαψψωψ=--+r m r r s r r d 1d L i t T T ββαβψψωψ=-++22s s r r m m m s r r s s 2r r r r d d i R L R L L L L i u t L T L L ααβαα σψωψ+=+-+22 s s r r m m m s r r s s 2 r r r r d d i R L R L L L L i u t L T L L ββαββ σψωψ+=--+[ ] T r r s s X i i αβαβωψψ=[ ] T s s L U u u T αβ=()p m e s s s s r n L T i i L βααβ ψψ=-

MATLAB实验遗传算法和优化设计

实验六 遗传算法与优化设计 一、实验目的 1. 了解遗传算法的基本原理和基本操作(选择、交叉、变异); 2. 学习使用Matlab 中的遗传算法工具箱(gatool)来解决优化设计问题; 二、实验原理及遗传算法工具箱介绍 1. 一个优化设计例子 图1所示是用于传输微波信号的微带线(电极)的横截面结构示意图,上下两根黑条分别代表上电极和下电极,一般下电极接地,上电极接输入信号,电极之间是介质(如空气,陶瓷等)。微带电极的结构参数如图所示,W 、t 分别是上电极的宽度和厚度,D 是上下电极间距。当微波信号在微带线中传输时,由于趋肤效应,微带线中的电流集中在电极的表面,会产生较大的欧姆损耗。根据微带传输线理论,高频工作状态下(假定信号频率1GHz ),电极的欧姆损耗可以写成(简单起见,不考虑电极厚度造成电极宽度的增加): 图1 微带线横截面结构以及场分布示意图 {} 28.6821ln 5020.942ln 20.942S W R W D D D t D W D D W W t D W W D e D D παπππ=+++-+++?????? ? ??? ??????????? ??????? (1) 其中πρμ0=S R 为金属的表面电阻率, ρ为电阻率。可见电极的结构参数影响着电极损耗,通过合理设计这些参数可以使电极的欧姆损耗做到最小,这就是所谓的最优化问题或者称为规划设计问题。此处设计变量有3个:W 、D 、t ,它们组成决策向量[W, D ,t ] T ,待优化函数(,,)W D t α称为目标函数。 上述优化设计问题可以抽象为数学描述: ()()min .. 0,1,2,...,j f X s t g X j p ????≤=? (2)

遗传算法——耐心看完-你就掌握了遗传算法【精品毕业设计】(完整版)

遗传算法入门到掌握 读完这个讲义,你将基本掌握遗传算法,要有耐心看完。 想了很久,应该用一个怎么样的例子带领大家走进遗传算法的神奇世界呢?遗传算法的有趣应用很多,诸如寻路问题,8数码问题,囚犯困境,动作控制,找圆心问题(这是一个国外网友的建议:在一个不规则的多边形中,寻找一个包含在该多边形内的最大圆圈的圆心。),TSP问题(在以后的章节里面将做详细介绍。),生产调度问题,人工生命模拟等。直到最后看到一个非常有趣的比喻,觉得由此引出的袋鼠跳问题(暂且这么叫它吧),既有趣直观又直达遗传算法的本质,确实非常适合作为初学者入门的例子。这一章将告诉读者,我们怎么让袋鼠跳到珠穆朗玛峰上去(如果它没有过早被冻坏的话)。 问题的提出与解决方案 让我们先来考虑考虑下面这个问题的解决办法。 已知一元函数: 图2-1 现在要求在既定的区间内找出函数的最大值。函数图像如图2-1所示。 极大值、最大值、局部最优解、全局最优解

在解决上面提出的问题之前我们有必要先澄清几个以后将常常会碰到的概念:极大值、最大值、局部最优解、全局最优解。学过高中数学的人都知道极大值在一个小邻域里面左边的函数值递增,右边的函数值递减,在图2.1里面的表现就是一个“山峰”。当然,在图上有很多个“山峰”,所以这个函数有很多个极大值。而对于一个函数来说,最大值就是在所有极大值当中,最大的那个。所以极大值具有局部性,而最大值则具有全局性。 因为遗传算法中每一条染色体,对应着遗传算法的一个解决方案,一般我们用适应性函数(fitness function)来衡量这个解决方案的优劣。所以从一个基因组到其解的适应度形成一个映射。所以也可以把遗传算法的过程看作是一个在多元函数里面求最优解的过程。在这个多维曲面里面也有数不清的“山峰”,而这些最优解所对应的就是局部最优解。而其中也会有一个“山峰”的海拔最高的,那么这个就是全局最优解。而遗传算法的任务就是尽量爬到最高峰,而不是陷落在一些小山峰。(另外,值得注意的是遗传算法不一定要找“最高的山峰”,如果问题的适应度评价越小越好的话,那么全局最优解就是函数的最小值,对应的,遗传算法所要找的就是“最深的谷底”)如果至今你还不太理解的话,那么你先往下看。本章的示例程序将会非常形象的表现出这个情景。 “袋鼠跳”问题 既然我们把函数曲线理解成一个一个山峰和山谷组成的山脉。那么我们可以设想所得到的每一个解就是一只袋鼠,我们希望它们不断的向着更高处跳去,直到跳到最高的山峰(尽管袋鼠本身不见得愿意那么做)。所以求最大值的过程就转化成一个“袋鼠跳”的过程。下面介绍介绍“袋鼠跳”的几种方式。 爬山法、模拟退火和遗传算法 解决寻找最大值问题的几种常见的算法: 1. 爬山法(最速上升爬山法): 从搜索空间中随机产生邻近的点,从中选择对应解最优的个体,替换原来的个体,不断重复上述过程。因为只对“邻近”的点作比较,所以目光比较“短浅”,常常只能收敛到离开初始位置比较近的局部最优解上面。对于存在很多局部最优点的问题,通过一个简单的迭代找出全局最优解的机会非常渺茫。(在爬山法中,袋鼠最有希望到达最靠近它出发点的山顶,但不能保证该山顶是珠穆朗玛峰,或者是一个非常高的山峰。因为一路上它只顾上坡,没有下坡。) 2. 模拟退火: 这个方法来自金属热加工过程的启发。在金属热加工过程中,当金属的温度超过它的熔点(Melting Point)时,原子就会激烈地随机运动。与所有的其它的物理系统相类似,原子的这种运动趋向于寻找其能量的极小状态。在这个能量的变

测控系统综合课程设计教学大纲

《测控系统综合课程设计》教学大纲 课程编码: 060251008 学时/学分:2周/4学分 一、大纲使用说明 本大纲根据测控技术与仪器专业2017版教学计划制定 (一)适用专业:测控技术与仪器专业 (二)课程设计性质:必修课 (三)主要先修课程和后续课程: 1、先修课程:matlab、计算机过程控制技术、网络化测控系统、微机原理及应用、过程控制系统与仪表。 2、后续课程:毕业设计 (四)适用教学计划版本:2017版教学计划 二、课程设计目的及基本要求 1.进一步培养学生网络化设计的思想,加深对网络化测控系统要素和控制结构的理解。 2.针对网络化测控系统的重点和难点内容进行训练,培养学生独立完成有一定工作量的程序设计任务和系统设计任务。 3.培养学生掌握组态王等编程语言的编程技巧及上机调试程序的方法。 4.培养学生掌握控制系统中的PID算法。 5、培养学生团队合作意识和较强的人际交往能力。 课程设计一人一题,4人为一组的方式进行,分工与任务要求明确,设计题目结合现有的实验设备,着重锻炼学生的应用能力和动手能力,通过系统装置联机调试,最后完成课程设计报告。 三、课程设计内容及安排 1、课程设计内容 本次课程设计利用组态和VB软件进行温度控制系统软件设计,可采用调压控制或占空比控制两种方式,结合P、PI、PD、PID控制算法,共为学生提供多个题目选择,4名同学为1组结合现有的实验设备,自拟课设题目(需经老师核准),根据自己设计题目要求,分析系统的特点和系统特性,在实验室依据设计方案进行系统硬件电路连接,通过不同的软件编程及控制方式,可实现无线平台、监控计算机和实验对象的联机运行及控制,达到预期对温度的控制目的。每组大题目可参考如下。 题目1:基于VB的调压PI温度控制系统 设计内容:基于无线通信实验平台、电加热炉等硬件,电炉被控对象的加热采用调压控制模式,利用VB编程语言及控制算法实现此系统的方案、界面、数据采集和温度控制等的设计。 题目2:基于VB的占空比PD温度控制系统设计 设计内容:基于无线通信实验平台、电加热炉等硬件,电炉被控对象的加热采用占空比控制模式,利用VB编程语言及控制算法实现此系统的方案、界面、数据采集和温度控制等的设计。 题目3:基于组态王的调压PID温度控制系统设计 设计内容:基于无线通信实验平台、电加热炉等硬件,电炉被控对象的加热采用调压控制模式,利用组态王编程语言及控制算法实现此系统的方案、界面、数据采集和温度控制等的设计。 同组4个子题目可参看如下: (1)控制系统仿真 针对平台电热炉的被控对象,根据同组同学采用飞升曲线法建立的对象模型(一阶惯性加滞

智能家居控制系统课程设计报告样本

智能家居控制系统课程设计报告

XXXXXXXXXXXXXX 嵌入式系统原理及应用实践—智能家居控制系统(无操作系 统) 学生姓名XXX 学号XXXXXXXXXX 所在学院XXXXXXXXXXX 专业名称XXXXXXXXXXX 班级XXXXXXXXXXXXXXXXX 指导教师XXXXXXXXXXXX 成绩 XXXXXXXXXXXXX 二○XX年XX月

综合实训任务书

目录 前言 ............................................................................. 错误!未定义书签。 1 硬件设计 .................................................................. 错误!未定义书签。 1.1 ADC转换 ......................................................... 错误!未定义书签。 1.2 SSI控制数码管显示........................................ 错误!未定义书签。 1.3 按键和LED模块 ............................................. 错误!未定义书签。 1.4 PWM驱动蜂鸣器 ........................................... 错误!未定义书签。 2 软件设计 .................................................................. 错误!未定义书签。 2.1 ADC模块 ......................................................... 错误!未定义书签。 2.1.1 ADC模块原理描述 ................................ 错误!未定义书签。 2.1.2 ADC模块程序设计流程图 .................... 错误!未定义书签。 2.2 SSI 模块 ........................................................... 错误!未定义书签。 2.2.1 SSI模块原理描述 .................................. 错误!未定义书签。 2.2.2 SSI模块程序设计流程图 ...................... 错误!未定义书签。 2.3 定时器模块...................................................... 错误!未定义书签。 2.3.1 定时器模块原理描述 ............................ 错误!未定义书签。 2.3.2 定时器模块流程图................................ 错误!未定义书签。 2.4 DS18B20模块 .................................................. 错误!未定义书签。

遗传算法的C#实现及应用

,………………………………………………“………“ 实用第一/智慧密集。.....。。。。。。。。,。.。.。。。。.。。。。。.。。。。。。。。。。。.。。。..。。。。。。。。。。。。..。。。。。,。√, ≯||j—A疆蕊嗡嗡镧鹣潲瞒虢滁酗确斓蛹鹳曩jii11||||璐彀豫澡毽畿瓷罐甍谶羲|遵麓囊鬻谶赢薏篱瀑每||?i。|?≯,鬣壤鋈国潆巢镶倦奄誊缝绥舔蔑善嚣≤譬I jl。j0j。j瓷蚤尊嶙≮啪獬i毽赫馘每蛹戳j蠢。‰酶鸯峨誓曩薯|≥il ji j j。一iI|薯0I奄§畦姻镦添。每孳舔溺警jlj;|0一『j_lt-?甍遴!l邀纛纛瓣|鬣瓣◇|lii|Il||I弩酶冁醚嗡婚穆穗姆t◇9鬟湖瀵哮咚◇i谚峰岭譬ij¨¨|:鬻攀谶一≥。|?|“ji?l疆黼誊眷懿t诵蕊囊酿褥酶姆螭t豳j酶I≮媾龋穗电鹱穰誊j|。。j|。。麓国隧嫱毒撼媳誊『:i-jl||i溪誉攀lj豢篱鬣蔷淄鬻|l|一ij鼍≥l篱鬻il豢 ≤奠do≯Z处理其余的基因l城市点卜 ?j。一鼍_i『瓢j树蛹嗽N哟hbor={G_e制ea淑Nejghbor誊l|ll}ig髓瞄蝴a}弼鼯礁u确瞅e脚S攀j。 一毫?。/|l,,熊到与翦学纂蜀溉避的一个基因,并加入新染色体曩o、。潮黼溉憾rf_{la鳓m鸯,A酬Gene椭ewGAGene j删删N磅i鳓£躜r|I;¨警自赋£lI:_l§¨'|): 、。-。:,薯£酒ftP舀黼黯一一:。i j-j?i。昭铀柏舔嚣i蜩酚鳓N∞rs悄ejghboB +寥 __l蝴Ⅺ蠢lm白赠鳓f¥缓警iO戳『;j i毒j碜净磅囊i÷i;i喹哆?簿簪两ohr9哆j舀锣me{n。wchr|。而osome}:j雾雾鬻雾耩韵秘穆然取代原染色体i. 准备好以上的方法后,还要注意四个参数的设定。交叉率一般为O.8左右,变异率一般为O.05左右,群体大小、繁殖次数要根据城市数目有所变化。调试程序时,可以修改这些参数来观察优化过程的收敛快慢、最优解的跳变等。 三、程序调试 在Vs2005中建立windows组件解决方案,添加现有项:基因类(GAGene)、染色体类(GAChfomosome)、染色体比较类(chromosomecomparer.cs)、遗传算法类(GA),调试生成(ga.衄)组件。 建立gaTsP解决方案,添加现有项tspFORM.cs窗体,添加引用ga.dll。运行程序如下图所示。工具栏第一个按钮的作用是设置一个文本文件,以记录每一代群体的染色体组成及其适应度的值。红色曲线为每一群体中最优染色体的适应度的变化,从中可以看到优化过程的收敛情况。读者可以模仿本文的第二部分,利用ga.dU解决其他问题。 旅行商问题运行图 参考文献 1.陈国良、王煦法、庄镇.遗传算法及其应用.人民邮电出版社 2.李敏强.遗传算法的基本理论与应用.科学出版社 (收稿日期:2007年1月26日)

测控系统综合设计课程设计报告

测控系统综合设计课程设计题目:土壤湿度调节灌溉系统设计 院(系、部):电气与控制工程学院 班级:测控11- 1 姓名: 学号: 指导教师: 完成日期:

辽宁工程技术大学 课程设计成绩评定表

摘要 土壤湿度调节灌溉系统针对目前城市绿化、农业大棚等灌溉方面所遇到的问题而设计的一种能够精确控制土壤湿度,合理供水,达到节水、保湿、检测土壤水分等目的的控制系统。它能够协助人们用最适合的水量培育植物,既不浪费水又能使作物正常生长,这使得土壤灌溉更加科学合理,并且逐步实现自动化、智能化控制。本系统主要以单片机为核心,利用土壤湿度传感器采集湿度信号,通过继电器,电机,电磁阀等控制,实现灌溉水量的控制。 关键词:单片机;土壤湿度;灌溉;

目录 1、设计方案 (1) 1.1系统功能及实现 (1) 1.2系统主要控制与检测元件 (2) 2、硬件系统设计 (3) 2.1温度检测以及报警功能的实现 (3) 2.2土壤湿度与空气湿度检测功能的实现 (4) 2.3单片机最小系统电路 (5) 2.4硬件系统测试 (5) 3、软件系统设计 (7) 3.1程序主流程设计 (7) 3.2系统状态检测程序 (8) 3.3系统控制程序 (9) 3.4数据显示程序 (9) 3.5程序调试 (10) 4、总结 (11) 5、设计体会 (12) 参考文献 (13)

1、设计方案 自动化灌溉系统分为全自动化灌溉系统和半自动化灌溉系统。全自动化灌溉系统不需要人直接参与,通过预先编制好的控制程序和根据反映作物需水的某些参量可以长时间地自动启闭水泵和自动按一定的轮灌顺序进行灌溉。人的作用只是调整控制程序和检修控制设备。半自动化灌溉系统中在田间没有安装传感器,灌水时间、灌水量和灌溉周期等均是根据预先编制的程序而不是根据作物的土壤水分及气象状况的反馈信息来控制的。 本课程设计所研究设计的是全自动的灌溉系统,能够对土壤湿度、空气温湿度进行检测,并将数据返回经过单片机程序进行决策,判断土壤水分状况,利用部分算法控制实施对土壤灌溉的科学化管理。 1.1系统功能及实现 本系统装置主要有以下几点功能: 1、检测土壤湿度并自动浇水。 2、湿度低于设定值进行报警。 3、低温报警。室温低影响植物生长,此时需要声音提醒。 4、人机交互显示。方便使用者实时了解与花卉相关的气温湿度等参数。 5、存储历史数据,对土壤湿度在每次浇水后进行数据存储,以便提取分析,设定合理 的湿度阈值,并获取土壤湿度和空气湿度变化情况。 设计方案: 土壤湿度调节灌溉系统以STC公司生产的单片机作为系统控制核心,通过编程来控制并实现上述功能。首先,单片机由温度、湿度等传感器获取外界相关信号,并转换为数字信号进入单片机进行数据处理,通过与一些特定的条件比较后,判断此时装置的工作状态以及花卉的生长情况,一方面,将信息显示出来,另一方面,准备向执行机构发送相应动作指令。然后,针对不同情况分优先级处理,通过控制外设达到所需效果测温报警功能需要通过温度传感器获取温度值,在经过单片机程序的处理,控制蜂鸣器发声报警。 自动浇水功能,需要水泵和电磁阀共同实现。但是,先由土壤湿度检测模块收集花盆

风力摆控制系统设计报告

2015 全国大学生电子设计竞赛 风力摆控制系统(B题) 【本科组】 2015年8月15日

摘要:本设计是基于STM32F103VE单片机为核心的简易风力摆控制系统,该系统由电源供电模块,直流风机及驱动模块、角度检测模块、信息处理模块、继电器及驱动模块、蜂鸣指示模块和液晶显示模块构成。STM32F103VE通过改变PWM占空比来实现对直流风机速度及方向的控制,该风力摆控制系统能够实现题目要求,简单做直线运动、复杂做圆周运动。 关键字:风力摆角度传感器单片机自动控制系统 一.方案论证: 1.系统结构 1)机械结构如图1所示。 一长约67cm的吸管上端用万向节固定在支架上,下方悬挂4只直流风机,中间安装陀螺仪,构成一风力摆。风力摆下安装一向下的激光笔,静止时,激光笔下端距离地面18cm。 图 1 2)测控电路结构 测控电路结构如图2所示。 编码器按键

图2 2.方案比较与选择 其实整体电路架构上图已经给定,主要是几个关键部分————直流风机选型及架构、直流风机驱动电路、传感器、主控芯片选择,我们分析如下: 1)直流风机的选型 方案一:采样大电流成品直流风机,虽然风力够大,但驱动多个风机所需电流过大,单个电源难以满足要求,而且比较重,多个电机使得惯性过大难以控制。鉴于以上两点,弃用。 方案二:采用小型高速电机加螺旋桨自制直流风机,风力大,体积小,质量轻,而且性价比高。 风力摆控制系统风机质量轻,减小惯性,容易起摆;风力大,风速控制范围大,摆动角度大;体积小,减少外部的干扰;鉴于以上几点,本设计采用方案二。 STM32微处理器 角度传感器 直流风机 电机驱动电路 风机供电 OLED 液晶显示 蜂鸣器

基于FPGA的直流电机综合测控系统设计

数字系统设计论文 (EDA技术课程答辩2013秋) 基于FPGA勺直流电机综合测控系统设题目计 学院电子信息学院 专业电子信息工程 班级12047514 学号12041419,12041422 学生姓名林华,马浩杰 指导教师黄继业 完成日期2013年12月

摘要 当今,在各行业中自动化控制系统已经取得了较为广泛的发展和应用,而在现在的规模化生产中,电器传动技术以直流驱动控制技术为主流有着重要作用。一直以来,因直流电动机其转速在调节上比较灵活,调节方法简单,大范围的平滑调速较容易,控制方面性能更好等特点,所以在传动领域中拥有不可动摇的地位。它在工业机器人、数控机床、等工厂设备 自动化中得到广泛应用。在现代化的生产中,随着规模的不断扩大,各行各业对直流电机在 技术上和数量上的需求也越来越大,并在性能上要求也更高。因此,研究出高可靠性、高性能的直流电机控制系统,并且制造出高水平的系统就有着非常现实和重要的意义。 关键词:FPGA ;Verilog ;EDA ;PWM 调速

摘要 引言 1. 本课题研究背景 2. 本课题的主要研究内容及意义 二、整体设计 1. 功能要求 2. 功能模块设计 2.1. PWM脉宽调制信号发生模块22工作时钟发生器模块 2.3. 消抖动模块ERZP 2.4. 转向控制多路选择器模块 2.5. 8位寄存器模块 2.6. 7段译码模块 三、直流电机驱动控制电路顶层设计 四、总结五、参考文献

引言 1. 本课题研究背景 电机作为机电能的转换装置,其应用范围己遍及国民经济的各个领域。近些年来,随着 现代电力电子技术、控制技术和计算机技术的发展,电机的控制技术也得到了进一步的发展,电机应用已由过去简单的起停控制、提供动力为目的应用,上升到对其速度、位置、转矩等 进行精确的控制,使被驱动的机械运动符合预想的要求。采用功率器件进行控制,将预定的 控制方案、规划指令转变成期望的机械运动,这种新型控制技术己经不是传统的“电机控制”、“电气传动”而是“运动控制”。运动控制使被控机械运动实现精确的位置控制、速 度控制、加速度控制、转矩或力的控制,以及这些被控机械量的综合控制。 2. 本课题的主要研究内容及意义 本课题是以FPGA为控制核心,实现对直流电机的转速测量和转速调节,为进一步研究和优化直流电机控制方法提供基础。 设计直流电机控制系统能够充分发挥电机的特性,通过本课题,一方面训练我们在查阅 资料的基础上,了解FPGA控制的一些基本技术,掌握其控制系统的分析方法与实现;另一方面通过本次设计,设计出相应的控制系统,以实现对直流电机转速的测量和转速的调节,并以此培养自己的自学和动手能力,从而今后参加工作或进一步深造打下良好的基础。 二、整体设计 1. 功能要求 能利用FPGA控制直流电机PWM,对直流电机进行速度控制,旋转方向控制,变速控制。

matlab遗传算法学习和全局化算法【精品毕业设计】(完整版)

1 遗传算法步骤 1 根据具体问题选择编码方式,随机产生初始种群,个体数目一定,每个个体表现为染色 体的基因编码 2 选择合适的适应度函数,计算并评价群体中各个体的适应。 3 选择(selection)。根据各个个体的适应度,按照一定的规则或方法,从当前群体中选择出 一些优良的个体遗传到下一代群体 4 交叉(crossover)。将选择过后的群体内的各个个体随机搭配成对,对每一对个体,以一定 概率(交叉概率)交换它们中的部分基因。 5 变异(mutation)。对交叉过后的群体中的每一个个体,以某个概率(称为变异概率)改n 变某一个或某一些基因位上的基因值为其他的等位基因 6 终止条件判断。若满足终止条件,则以进化过程中得到的具有最大适应度的个体作为最 优解输出,终止运算。否则,迭代执行Step2 至Step5。 适应度是评价群体中染色体个体好坏的标准,是算法进化的驱动力,是自然选择的唯一依据,改变种群结构的操作皆通过适应度函数来控制。在遗传算法中,以个体适应度的大小 来确定该个体被遗传到下一代群体中的概率。个体的适应度越大,被遗传到下一代的概率 就越大,相反,被遗传到下一代的概率就越小。 1 [a,b,c]=gaopt(bound,fun)其中,bound=[xm,xM]为求解区间上届和下届构成的矩阵。Fun 为用户编写的函数。a为搜索的结果向量,由搜索的出的最优x向量与目标函数构成,b为最终搜索种群,c为中间搜索过程变参数,其第一列为代数,后边列分别为该代最好的的个 体与目标函数的值,可以认为寻优的中间结果。 2 ga函数。[X,F, FLAG,OUTPUT] = GA(fun, n,opts).n为自变量个数,opts为遗传算法控制选项,用gaoptimset()函数设置各种选项,InitialPopulation可以设置初始种群,用PopulationSize 可以设置种群规模,SelectionFcn可以定义选择函数, 3 gatool 函数用于打开,GATOOL is now included in OPTIMTOOL。 2.2 通过GUI 使用遗传算法 在Matlab 工作窗口键入下列命令>>gatool,或通过Start 打开其下子菜单Genetic Algorithm Tool,如图1。只要在相应的窗格选择相应的选项便可进行遗传算法的计算。其中fitnessfun 窗格为适应度函数,填写形式为@fitnessfun,Number of variable 窗格为变量个数。其它窗格参数根据情况填入。填好各窗格内容,单击Start 按钮,便可运行遗传算法 例子1 应用实例 已知某一生物的总量y(单位:万个)与时间t(月)之间的关系为y=k0(1-exp(-k1*t)), 统计十个月得到数据见表1,试求关系式中的k0,k1。先编写目标函数,并以文件名myfung.m

测控系统报告

目录

第一章课程设计内容与要求 1.1课程设计内容 本次课程设计首先是温度表的调试,通过观察检测一块坏的电路板画出它的电路图,并改正错误,使温度表好使;其次是学会使用板卡PCL-818HD 和PCL-730,先分组焊接一个电路板,功能是通过调节滑动变阻器改变发光二极管的亮度,之后把焊接好的电路板连接到PCL-818HD上,检测电路板的功能;最后一部分是以前一个课程设计为基础,把已经设计好的粮食烘干机电气系统连接到工业计算机上,检测粮食烘干机电气系统的工作状况,熟悉数据采集卡I\O和A\D和D\A的使用,掌握模拟量和数字量的转换;主要的课程设计内容包括: (1)设计题目总体设计方案; (2)应用工控组态软件MCGS进行硬件接口设计; (3)系统的综合硬件调试; (4)撰写课程设计论文; (5)完成课程设计论文答辩; 1.2课程设计要求 组态软件硬件接口设计要求: (1)开关量测量: 输入信号- 启动按钮、闸门正反转限位、物料位置等。 输出信号- 停止按钮、控制、显示和故障报警信号等。 (2)模拟量测量: A/D信号- 电流、转速、温度、压力、流量和频率等。 D/A信号- 电流和电压。 (3)数据采集卡:I/O 采集卡、A/D采集卡和 D/ A采集卡。 (4)数据对象:设置数据变量的名称、类型、初始值和数值范围。 (5)动画连接:数据对象的实时采集值驱动图形的动画效果。 (6)控制流程:编制脚本程序用来完成特定工艺流程的操作和处理。

(7)设备连接:通过设备窗口驱动和配置各种数据采集卡。 (8)数据处理:数据显示、数据存储、报警输出、曲线生成和安全机制等。 1.3课程设计的目的 本次课程设计主要培养学生们自己的动手能力、分析解决问题的能力,掌握工业计算机的使用方法,了解数据采集卡PCL-818HD和PCL-730及模拟量和数字量,设备驱动、设备连接和开关量测量掌握 MCGS 的使用方法和工程设计步骤。掌握 MCGS的流程控制、设备驱动、数据采集、数据处理、报表输出等解决实际工程问题的完整方案和操作方法,达到熟练使用工控设备的目的,为更好的学习专业知识打下好的基础。

遗传算法的原理及MATLAB程序实现

1 遗传算法的原理 1.1 遗传算法的基本思想 遗传算法(genetic algorithms,GA)是一种基于自然选择和基因遗传学原理,借鉴了生物进化优胜劣汰的自然选择机理和生物界繁衍进化的基因重组、突变的遗传机制的全局自适应概率搜索算法。 遗传算法是从一组随机产生的初始解(种群)开始,这个种群由经过基因编码的一定数量的个体组成,每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,其内部表现(即基因型)是某种基因组合,它决定了个体的外部表现。因此,从一开始就需要实现从表现型到基因型的映射,即编码工作。初始种群产生后,按照优胜劣汰的原理,逐代演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样,后代种群比前代更加适应环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。 计算开始时,将实际问题的变量进行编码形成染色体,随机产生一定数目的个体,即种群,并计算每个个体的适应度值,然后通过终止条件判断该初始解是否是最优解,若是则停止计算输出结果,若不是则通过遗传算子操作产生新的一代种群,回到计算群体中每个个体的适应度值的部分,然后转到终止条件判断。这一过程循环执行,直到满足优化准则,最终产生问题的最优解。图1-1给出了遗传算法的基本过程。 1.2 遗传算法的特点 1.2.1 遗传算法的优点 遗传算法具有十分强的鲁棒性,比起传统优化方法,遗传算法有如下优点: 1. 遗传算法以控制变量的编码作为运算对象。传统的优化算法往往直接利用控制变量的实际值的本身来进行优化运算,但遗传算法不是直接以控制变量的值,而是以控制变量的特定形式的编码为运算对象。这种对控制变量的编码处理方式,可以模仿自然界中生物的遗传和进化等机理,也使得我们可以方便地处理各种变量和应用遗传操作算子。 2. 遗传算法具有内在的本质并行性。它的并行性表现在两个方面,一是遗传

遗传算法与优化问题

实验十遗传算法与优化问题 一、问题背景与实验目的 遗传算法(Genetic Algorithm —GA),就是模拟达尔文的遗传选择与自然淘汰的生物进化过程的计算模型,它就是由美国Michigan大学的J、Holla nd教授于1975 年首先提出的?遗传算法作为一种新的全局优化搜索算法,以其简单通用、鲁棒性强、适于并行处理及应用范围广等显著特点,奠定了它作为21世纪关键智能计算之一的地位. 本实验将首先介绍一下遗传算法的基本理论,然后用其解决几个简单的函数最值问题,使读者能够学会利用遗传算法进行初步的优化计算? 1. 遗传算法的基本原理 遗传算法的基本思想正就是基于模仿生物界遗传学的遗传过程?它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体?这个群体在问题特定的环境里生存 竞争,适者有最好的机会生存与产生后代?后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程.群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解?值得注意的一点就是,现在的遗传算法就是受生物进化论学说的启发提出的,这种学说对我们用计算机解决复杂问题很有用,而它本身就是否完全正确并不重要(目前生物界对此学说尚有争议). (1)遗传算法中的生物遗传学概念 由于遗传算法就是由进化论与遗传学机理而产生的直接搜索优化方法;故而 在这个算法中要用到各种进化与遗传学的概念? 首先给出遗传学概念、遗传算法概念与相应的数学概念三者之间的对应关系这些概念

(2)遗传算法的步骤 遗传算法计算优化的操作过程就如同生物学上生物遗传进化的过程,主要有三个基本操作(或称为算子):选择(Selection)、交叉(Crossover)、变异(Mutation). 遗传算法基本步骤主要就是:先把问题的解表示成“染色体”,在算法中也就就是以二进制编码的串,在执行遗传算法之前,给出一群“染色体”,也就就是假设的可行解.然后,把这些假设的可行解置于问题的“环境”中,并按适者生存的原则从中选 择出较适应环境的“染色体”进行复制 ,再通过交叉、变异过程产生更适 应环境的新一代“染色体”群.经过这样的一代一代地进化,最后就会收敛到最适应环境的一个“染色体”上,它就就是问题的最优解. 下面给出遗传算法的具体步骤,流程图参见图1: 第一步:选择编码策略,把参数集合(可行解集合)转换染色体结构空间; 第二步:定义适应函数,便于计算适应值; 第三步:确定遗传策略,包括选择群体大小,选择、交叉、变异方法以及确定交叉概率、变异概率等遗传参数; 第四步:随机产生初始化群体; 第五步:计算群体中的个体或染色体解码后的适应值; 第六步:按照遗传策略,运用选择、交叉与变异算子作用于群体,形成下一代群体; 第七步:判断群体性能就是否满足某一指标、或者就是否已完成预定的迭代次数,不满足则返回第五步、或者修改遗传策略再返回第六步. 图1 一个遗传算法的具体步骤

智能家居控制系统课程设计报告

XXXXXXXXXXXXXX 嵌入式系统原理及应用实践 —智能家居控制系统(无操作系统)学生姓名XXX 学号XXXXXXXXXX 所在学院XXXXXXXXXXX 专业名称XXXXXXXXXXX 班级XXXXXXXXXXXXXXXXX XXXXXXXXXXXX 指导教师 成绩 XXXXXXXXXXXXX 二○XX年XX月

综合实训任务书 目录 前言 (1)

1 硬件设计 (1) ADC转换 (3) SSI控制数码管显示 (3) 按键和LED模块 (5) PWM驱动蜂鸣器 (6) 2 软件设计 (7) ADC模块 (7) ADC模块原理描述 (7) ADC模块程序设计流程图 (8) SSI 模块 (8) SSI模块原理描述 (9) SSI模块程序设计流程图 (10) 定时器模块 (10) 定时器模块原理描述 (10) 定时器模块流程图 (11) DS18B20模块 (11) DS18B20模块原理描述 (11) DS18B20模块程序设计流程图 (12) 按键模块 (13) 按键模块原理描述 (13) 按键模块程序设计流程图 (13) PWM模块 (13) PWM模块原理描述 (14) PWM模块程序设计流程图 (14) 主函数模块 (14) 主函数模块原理描述 (14) 主函数模块程序设计流程图 (15) 3.验证结果 (15) 操作步骤和结果描述 (15) 总结 (16)

智能家居控制系统设计 前言 当前,随着科学技术的发展,计算机、嵌入式系统和网络通信技术逐步深入到各个领域,使得住宅和家用电器设备网络化和智能化,智能家居已经开始出现在人们的生活中。智能家居控制系统(smarthome control systems,简称SCS)。它以住宅为平台,家居电器及家电设备为主要控制对象,利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设施进行高效集成,构建高效的住宅设施与家庭日程事务的控制管理系统,提升家居智能、安全、便利、舒适,并实现环保节能的综合智能家居网络控制系统平台。智能家居控制系统是智能家居核心,是智能家居控制功能实现的基础。 通过家居智能化技术,实现家庭中各种与信息技术相关的通讯设备、家用电器和家庭安防装置网络化,通过嵌入式家庭网关连接到一个家庭智能化系统上进行集中或异地的监控和家庭事务管理,并保持这些家庭设施与住宅环境的和谐与协调。家居智能化所提供的是一个家居智能化系统的高度安全性、生活舒适性和通讯快捷性的信息化与自动化居住空间,从而满足21世纪新秀社会中人们追求的便利和快节奏的工作方式,以及与外部世界保持安全开放的舒适生活环境。本文以智能家居广阔的市场需求为基础,选取智能家居控制系统为研究对象。 1 硬件设计 本系统是典型的嵌入式技术应用于测控系统,以嵌入式为开发平台,系统以32位单片机LM3S8962为主控制器对各传感器数据进行采集,经过分析后去控制各执行设备。 硬件电路部分为:微控制器最小系统电路、数据采集电路(光敏电路、温度传感器、霍尔传感器)、输出控制电路(继电器、蜂鸣器、发光二极管)和八位LED数码管显示组成。LM3S8962布局如图1-1所示,LM3S8962核心板外围电路如图1-2所示。 图 LM3S8962布局图

基于遗传算法和神经网络算法的吊车结构优化设计与实现

·制造业信息化· 图1吊车结构系统有限元模型 Fig.1The finite element model of a fixed crane Based on Genetic Algorithms and Artificial Neural Network Algorithms to Optimize the Structure Design and Implementation of Crane XUE Jia-Hai ,YU Xiao-Mo ,QING Ai-Ling ,ZHOU Wen-Jing ,YE Jun-Ke (College of Mechanical Engineering,Guangxi University,Nanning Guangxi 530004,China ) Abstract:This paper by using the finite element method,orthogonal test method,BP neural network and genetic algorithm to optimization of crane structure system.At last ,the neural network model will be optimized through the generic algorithm and the optimal parameters of the structure dynamic behavior will be obtained . Key words :finite element ;orthogonal experimental method ;BP-neural network ;genetic algorithm 0引言 随着吊车向大型化方向发展,结构在动载荷作用下的振动问题变得日益突出。因此,进行基于动态特性的优化设计,使产品在设计阶段就可以预测其动态特性,可有效减小系统的振动,提高整机工作性能。结构动力学建模方法主要有有限元法、试验模态法、混合建模法及基于人工神经网络的建模方法。基于人工神经网络的动态优化设计建模方法,是利用多层人工神经网络极强的非线性映射功能,来描述和处理动态系统中设计变量及其动态参数之间的关系。人工神经网络模型一旦建立,可取代有限元模型进行结构动态特性重分析,其分 析过程简单而直接,且远比有限元模型计算速度快,尤其适用于工程技术人员使用。由于吊车结构系统的动态特性很难用设计变量显式表达,因此用遗传算法对建立的神经网络模型寻优,计算出可行区域内动态特性最优时的设计变量及目标值。 1吊车结构系统动态特性分析 图1所示为某厂生产的固定式吊车的有限元模型。主要参数为:塔身高48.5m ,起重臂长70m ,最大起重力矩4400kN ·m 。吊车结构的弦杆、腹杆、钢丝绳及集中质量分别以空间梁单元、杆单元、弹簧单元及质量单元模拟。表1所示 为按最大起重力矩工况计算的系统前8阶固有频率。修稿日期:2012-12-21 作者简介:薛加海(1986-),男,云南彝族人,在读硕士研究生。主要研究方向:制造业管理信息化研究;于晓默(1982-),男,蒙古族人,在读博士研究生。主要研究方向:制造业管理信息化研究。 摘要:论文综合利用BP 神经网络、遗传算法有限元法以及正交试验法对吊车结构系统进行优化研究。利 用遗传算法和BP 神经网络建立复杂结构系统动态优化的计算模型,该模型可代替系统原来的有限元模型。首先对吊车起重机结构系统进行模态分析及谐响应动力学分析,找出对结构动态特性影响最大的模态频率,再利用灵敏度分析,确定对动态特性较敏感的设计变量作为神经网络的输入变量,并利用正交试验法确定神经网络训练样本,用有限元模型计算出样本点数据,建立反映结构振动特性的人工神经网络模型,最后利用遗传算法对所建立的神经网络模型寻优,得到使结构动态性能最优的设计参数。 关键词:有限元法;正交试验法;BP 神经网络;遗传算法中图分类号:TP18 文献标识码:A doi:10.3969/j.issn.1002-6673.2013.01.037 文章编号:1002-6673(2013)01-093-03 基于遗传算法和神经网络算法的吊车结构优化设计与实现 薛加海,于晓默,秦爱玲,周文景,叶俊科 (广西大学机械工程学院,广西南宁530004) 机电产品开发与创新 Development &Innovation of M achinery &E lectrical P roducts Vol.26,No.1Jan .,2013第26卷第1期2013年1月 93

温室大棚控制系统-设计报告资料

哈尔滨师范大学 物联网感知综合课程设计报告 题目:温室大棚控制系统 年级: 2013级专业:物联网工程姓名:高英亮袁昊慈指导教师:李世明杜军

温室大棚控制系统 高英亮、袁昊慈 摘要中国农业的发展必须走现代化农业这条道路,随着国民经济的迅速增长,农业的研究和应用技术越来越受到重视,特别是温室大棚已经成为高效农业的一个重要组成部分。现代化农业生产中的重要一环就是对农业生产环境的一些重要参数进行检测和控制。利用物联网的传感器技术实时采集温室环境的空气温湿度、土壤水分和光照度等因素,单片机将数据进行分析处理做出合理的控制决策,控制执行器进行自动喷灌,实现了计算机自动控制,按需、按期和按量喷灌。系统主要由温室环境信息采集模块、单片机模块和控制模块组成,采集模块包括光照度传感器和空气温湿度传感器。该系统采用传感器技术和单片机相结合,由上位机和下位机( 都用单片机实现) 构成,采用接口进行通讯,实现温室大棚自动化控制。本系统环保节能、节水、省力,具有很好的实用性和推广性。 1 引言 中国农业的发展必须走现代化农业这条道路,随着国民经济的迅速增长,农业的研究和应用技术越来越受到重视,特别是温室大棚已经成为高效农业的一个重要组成部分。现代化农业生产中的重要一环就是对农业生产环境的一些重要参数进行检测和控制。例如:空气的温度、湿度、二氧化碳含量、土壤的含水量等。在农业种植问题中,温室环境与生物的生长、发育、能量交换密切相关,进行环境测控是实现温室生产管理自动化、科学化的基本保证,通过对监测数据的分析,结合作物生长发育规律,控制环境条件,使作物达到优质、高产、高效的栽培目的。以蔬菜大棚为代表的现代农业设施在现代化农业生产中发挥着巨大的作用。大棚内的温度、湿度与二氧化碳含量等参数,直接关系到蔬菜和水果的生长。国外的温室设施己经发展到比较完备的程度,并形成了一定的标准,但是价格非常昂贵,缺乏与我国气候特点相适应的测控软件。而当今大多数对大棚温度、湿度、二氧化碳含量的检测与控制都采用人工管理,这样不可避免的有测控精度低、劳动强度大及由于测控不及时等弊端,容易造成不可弥补的损失,结果不但大大增加了成本,浪费了人力资源,而且很难达到预期的效果。因此,为了实现高效农业生产的科学化并提高农业研究的准确性,推动我国农业的发展,必须大力发展农业设施与相应的农业工程,科学合理地调节大棚内温度、湿度以及二氧化碳的含量,使大棚内形成有利于蔬菜、水果生长的环境,是大棚蔬菜和水果早熟、优质、高效益的重要环节。 目前,随着蔬菜大棚的迅速增多,人们对其性能要求也越来越高,特别是为了提高生产效率,对大棚的自动化程度要求也越来越高。由于单片机及各种电子器件性价比的迅速提高,使得这种要求变为可能。

相关文档
最新文档