电子工程专业毕业设计论文电子信息工程专业论文电子工程基于智能家居系统的图像采集毕业设计论文.docx
《电子工程专业毕业设计论文电子信息工程专业论文电子工程基于智能家居系统的图像采集毕业设计论文.docx》由会员分享,可在线阅读,更多相关《电子工程专业毕业设计论文电子信息工程专业论文电子工程基于智能家居系统的图像采集毕业设计论文.docx(32页珍藏版)》请在冰豆网上搜索。
电子工程专业毕业设计论文电子信息工程专业论文电子工程基于智能家居系统的图像采集毕业设计论文
摘要
本文基于使用以嵌入式技术为核心智能家居系统,针对智能家居系统中的安防监控系统,采用Linux操作系统下提供的图像采集接口进行图像采集的设计,本文主要大致内容如下:
嵌入式系统的介绍、图像采集API的介绍、图像采集模块的设计,系统的服务器模块设计。
本文首先论述了智能家居的历史背景和发展趋势及基本概述和功能,之后介绍了现如今十分火热的物联网嵌入式系统和视频监控系统的发展历程,得出采取嵌入式系统设计智能家居的图像采集模块具有十分大的优势。
采用C语言编程,图像采集模块通过Linux下视频采集接口完成对图片信息数据的采集,并使用压缩库进行压缩,通过服务器模块对图片信息发送至客户端显示,达到一个视频监控的目的。
关键字:
智能家居;嵌入式;Linux系统;图像采集
ABSTRACT
Thisarticleisbasedonembeddedtechnologyascoreofintelligenthouseholdsystem,UsingtheLinuxoperatingsystemprovidefordesignofimagesacquisitionAPIforsecuritymonitoringsysteminintelligenthousehold.inthispaper,themaincontentareasfollows:
Theintroductionofembeddedsystems、TheintroductionofimagesacquisitionAPI、Thedesignforimagesacquisitionmodule、Thedesignforservermodule.
First,thisarticlediscussesthehistoricalbackgroundanddevelopmenttrendofintelligenthomeandbasicoverviewandsomefunctions.Andthen,introduceddevelopmentoftodayisveryhotInternetofthingsandvideomonitorsystem,andgetsomeconclusionaboutuseofembeddedsystemforimageacquisitionmodulesofintelligenthouseholdhasgreatadvantage.TheimageacquisitionmodulesworkanduseLinuxvideoacquisitioninterfacetogetsomeimage,andcompressedbycompressionlibrary,andsendimagetoclienttodisplaypicturebyClanguageprogramingtoachieveagoalofmonitor.
KeyWords:
Intelligenthousehold;Embedded;Linuxsystem;imageacquisition
第1章绪论
1.1课题背景
21世纪是信息的时代,随着计算机、通信电子的飞速发展,我们的社会已经发生了巨大的变化,在前十多年的时间里,互联网已经逐步普及到世界各地,其应用越来越广泛,因为互联网的发展太快,人们也在追求者更高层次的生活方式,将科技应用到生活中。
随着物联网的概念的提出,智能化建筑也在不断地发展着,智能家居也跟着而诞生。
图像采集是智能家居系统中的视频监控系统中必不可少的一个环节,图像采集技术现在被广泛应用于身份识别、实时视频系统、监控系统等各种领域中。
现如今视频监控系统已经发展的很成熟了,因为视频监控的直观的特点,也让其在各行各业的需求量很大,也跟着科技,硬件的不断更新换代,各行各业对视频监控的要求也变高了,所以智能化的视频监控系统在以后的生活会得到更多的应用。
随着近几年物联网概念被世界各大IT巨头公司的推动下,原本不温不火的嵌入式技术如今已得到各界的肯定,包括民用,商用,工业,军用的各种控制系统,嵌入式系统是集软件和硬件为一体的一个独立、专用的实时计算机系统。
其硬件也是结合了微型处理器或者微控制器,搭载上可裁剪的系统,达到性能上的高效与可靠。
所以把嵌入式技术应用到智能家居系统中的视频监控系统中是一个非常好的选择。
1.2国内外的现状
1.2.1智能家居国内外现状
智能家居的定义是以住宅为平台,利用综合布线的技术、网络通信技术、自动控制技术、音视频技术将家庭中的家用设备集成起来,形成目标于住宅设施与家庭日程事物的管理系统,智能家居是以安全性、便利性、舒适性为主体的一个智能化生活系统。
智能家居的概念提出的很早,在20世纪80年代,电子技术初步的使用到家用电器中,慢慢地形成了住宅的电子化,人们发现这种设备能提高生活质量,于是开始把家用电器和通信设备、及安保设备的功能综合在一起,形成住宅的自动化,但是由于硬件落后,其综合设备过于庞大,后来随着通信和信息技术的发展,出现了一个控制系统,它把家用电器和通信等设备通过总线技术管理起来,这也就是现如今智能家居系统的原型。
在1984年,世界上第一栋智能化建筑诞生于美国,智能家居系统的序幕也由此拉开,各种智能家居的应用方案被以美国为首的几个经济发达国家先后提出,经过长时间地不断发展,智能家居系统在美国、德国、日本等国现都已经有了广泛的应用。
随着互联网与网联网在我国的高速推动与发展,我国国内的智能家居也呈现出了良好的发展趋势,尽管智能家居在中国国内是最近在火起来的一个新兴行业,但是,在国内有非常多的以智能家居为作为公司发展蓝图的科技公司注册,这也表明智能家居行业国内以不可抵挡之势迅速崛起。
1.2.2视频监控系统国内外现状
视频监控系统具有很长了历史了,最初是应用于安防领域,视频监控系统的技术水平已经从初期的模拟信息传输发展到了现在的数字,网络信息的传输。
根据其发展过程,大致分为了三代。
第一代,模拟视频监控系统,它同黑白摄像机、黑白电视机一同诞生,主要由摄像机、录像机、监视器等设备组成,用同轴电缆连接起来,信息数据采用模拟信号的方式传输。
这种监控系统方式功能相对简单,最直观的就是提供画面,但是控制有一定缺陷,而且容易受到干扰,传输距离近,可靠性差。
但是由于操作简单,成本较低,所以在国内外对视频监控要求不高的场合中,依旧有着使用。
第二代,数字视频监控出现在二十世纪九十年代中期,随着当时视频技术和计算机的运行速率的提高,利用计算机高速处理数据的能力,来进行视频图像数据的采集与处理,也可以使用帧格式设备显示器实现分屏显示,因为显示的高分辨率,可以大大地提高的图像质量,与模拟视频监控系统相比,是数字视频监控系统在数据的保存上,图像的质量上,和稳定性上有了很大的提升,所以在国内外的金融安防行业大多采用数字视频监控系统,但是因为数字信号传输上数据量十分庞大,现在的计算机能够处理但不能大量处理,所以造成了一种不能构建一个大型的监控系统的尴尬局面。
第三代,网络视频监控系统,近年来,随着光纤的普及,网络中的带宽也越来越大以及微处理器技术的快速发展,网络视频监控系统也出现了,它是以一个网络视频服务器为中转站,前端设备完成图像信息数据的采集,利用网络传输至网络视频服务器,再通过服务器转发给需要显示的界面,在网络中有许多的路可以走,所以这样传输线路有了非常多的选择,只要有网络的地方,就有得到图像数据信息的可能。
近年来,国内“平安城市”,“平安校园”等各种安防项目在全国范围内展开,人流量多的地方比如机场,地铁站,都已经应用到了网络视频监控系统。
总的来说,国内外的视频监控的技术已经日趋成熟,各种传输方式的视频监控系统在生活工作中也都在投入使用,但是在这个科技发达的时代,智能化、网络化、智能化是视频监控系统的必然趋势,但是在目前阶段,网络视频监控系统仍然存在着一定的问题。
1.3课题研究目的及意义
智能家居系统的出现,为人们的生活带来了不少的好处,不仅提供了更加舒适、安全、艺术的家庭生活空间,还可以帮助人们合理的安排家庭事务,提高家庭生活的效率,甚至还可以解决各种生活能源的浪费问题。
智能家居系统中的视频监控系统,为家居生活提供了安防,监控的功能。
但是目前看来,智能家居看着十分的美好,能够提升居家生活水平,但是它的费用可不低,市场上三室一厅的套房配上一套完整的智能家居设备,得花掉十万到二十万,这对很多家庭来说是没有必要的。
而且因为是在家庭中,空间有限,存在着布线复杂的问题。
综合这以上的问题,针对视频监控系统来说,选用嵌入式系统,和网络视频监控系统是一个非常好的选择,不仅能够提供完整的视频功能且可靠性高,而且利用嵌入式系统的体积小、功耗低的特性,可以很好的解决布线复杂的问题,并且能有效的降低设备成本,普及到大众化。
之所以嵌入式系统中选择了Linux操作系统,因为其免费开源,而且底层驱动提供了一套图像采集的接口,所以在完成视频监控上高效、可靠。
我相信,随着智能家居的快速发展,在未来几年的时间里,需要买房和已经买房的普通老百姓,都能装上一套完整的智能家居系统。
1.4课题设计的主要任务
此设计选用了FS4412的开发板,配套的芯片是三星公司ARMExynos4412,带有Linux操作系统的PC机一台或者装有虚拟机的PC机一台,路由器一台。
主要任务包括图像采集软件的编写,服务器的代码编写与系统硬件的调试。
硬件部分,开发板的主要作用是在上面运行上Linux操作系统,通过串口与PC机相连,可以完成调试工作,通过网线与路由器相连,让其接入到网络中,通过开发板上的USB接口,接上USB摄像头,完成图像的采集工作。
软件部分,选用Linux操作系统,需要完成的代码编写包括两部分,第一,图像采集部分,将使用Linux下V4L2(VideoforLinuxtwo,下文有详细介绍)提供的图像采集接口完成代码的编写,第二,视频服务器部分,将使用TCP/IP协议下的socket(可提供TCP输方式)编程完成代码的编写。
以上的代码编写均使用言C语言编写,编辑工具选用x86-ARM的交叉编译工具。
1.5本章小结
在本章中,主要分析此次基于智能家居系统的图像采集设计的课题研究背景以及智能家居在国内外的现状和发展前景,在最后简单介绍了本次课题设计的主要任务。
第2章方案设计
2.1总体方案设计
2.1.1总体放案设计
此次图像采集的设计是基于物联网智能家居系统,所以总体方案设计应该满足智能家居系统的要求和智能家居中视频监控系统的要求。
为了减小智能家居系统中在家庭空间的占地,所以选用嵌入式设备FS4412开发板,使用ARM-CortexA9处理器,在开发板上需要移植上Linux操作系统,操作系统下可以支持软件程序的运行。
软件部分采用分模块设计,主要模块有视频服务器模块,视频图像采集模块。
智能家居中视频监控系统需要远程视频监控的功能,所以在这里要使用到网络,在这里采用socket网络编程完成服务器的设计,考虑到可能会有多个客户端来访问,所以服务器选择用Epoll机制实现I/O多路复用,达到多连接访问的目的。
图像采集的实现选用Linux下VideoforLinuxtwo(V4L2,下文有详细介绍)提供的视频图像采集接口完成软件代码的设计,由于此次设计准备的摄像头是普通摄像头,采集到的图像数据是YUV422格式的,一个像素点是2个字节(byte),需要采集的图像分辨率为640x480,所以一帧图像的实际大小为640x480x2个字节,也就是几百KB大小,考虑到视频的流畅性,需要达到20张图片每秒,结合现在网络的带宽来看,每秒也只能收到3到4张图片,所以需要对图片进行压缩,在这里采用的Libjpeg库的压缩接口,压缩后图片格式为jpeg格式,大小为30KB到50KB之间。
2.1.2系统的总体设计框架图
系统的总体设计框架图如图2-1所示
图2-1系统总体设计框架图
2.2设计的实现期望
由于本设计是基于智能家居系统来实现,应该满足智能家居系统中视频监控系统的基本期望,在系统调试时,希望得到如下结果。
(1)程序运行期间,不会出现程序崩溃退出的情况,保证程序运行的稳定性,如果图像采集模块出问题造成不能采集图片,服务器模块也应该在运行中。
(2)程序运行时能够保证以50ms一张图片的速度正确采集到图片。
(3)每张图片采集完成后能够在本地文件夹中看到,即PC机上。
(4)采集到的图片为jpeg格式,大小在30KB到50KB之间,并且图片清晰完整,不能有图像数据混乱的情况。
(5)如果有需要显示视频,可以通过视频服务器发送数据至移动设备客户端上显示视频图像数据,并且视频不能有太大的延迟。
2.3设计所使用硬件介绍
2.3.1摄像头的介绍
本次设计选用的摄像头是环宇飞扬公司型号为UniFlyV6的摄像头,30万的像素,图像分辨率640x480,最大帧数30帧每秒,采用USB2.0接口支持。
2.3.2路由器的作用
路由器的作用是将PC机,FS4412开发板置于同一网段中,移动设备通过路由器连接WI-Fi,客户端通过正确的IP地址,就可以访问到服务器,实现与服务器数据之间的通信。
2.3.3ARM处理器及FS4412开发板的介绍
一般在嵌入式系统中,所用的处理器芯片包括单片机和ARM,考虑到单片机上不能够运行操作系统,只能够完成一些简单的运算控制,而这里需要编程和运行多线程控制,所以选择了功能更加强大ARM的芯片作为嵌入式系统的处理器,与单片机相比,ARM有体积小、低功耗、低成本、高性能的特点。
ARM(AdvancedRISCMachines)它既是一种芯片的名称,也是一个公司的名称,更可以看作是一门技术。
随着电子技术的发展,ARM公司也经历了多个发展阶段,包括ARM7,ARM9,ARM11。
ARM处理器地不断发展,使之为嵌入式技术的发展注入了新的活力,到目前为止,ARM处理器及技术的应用几乎已经深入到了各个领域,其中热门的包括了工业控制领域、无线通信领域、网络应用领域、消费类电子产品领域、成像和安全类产品。
这里使用的开发板是Farsight公司生产的FS4412,FS4412采用的处理器是三星公司生产的ARMCortexA9四核CPU的Exynos4412芯片,主频率达到了1.4GHZ到1.6GHZ,该芯片采用了最新的32nm的先进工艺制成,在运行处理的功耗方面有了很大的降低。
FS4412还采用了专业稳定的CPU内核电源管理芯片和复位芯片来保证了系统的稳定运行。
FS4412开发板如图2-2所示
此次设计使用主要硬件资源如下:
CPU:
三星Exynos4412(四核处理器),32nmHKMG,1433MHz(最多达到1.6GHz)。
RAM容量:
1GBDDR3
ROM容量:
4GBeMMC
启动方式:
:
eMMC启动、MicroSD(TF)/SD卡启动,通过拨码开关切换启动方式。
图2-2FS4412开发板
此次设计使用主要软件资源如下:
Bootloader部分:
Uboot201003,支持Fastboot下载、支持TFTP网络下载、支持SD卡烧写、支持eMMC烧写。
内核版本:
Linux3.14
FS4412接口如下:
1个电位计(可调电阻)
1个无源蜂鸣器
4个LED灯
1个加速度/陀螺仪传感器
1个SPI接口的CAN线芯片
3个串行口,包括1路5线RS232串口、2路3线RS232串口、1路TTL串口
1个温度传感器/红外接收器
1个音频接口芯片
3个USBHOST接口
1个USBOTG
1个CAN总线扩展口
1个SD/TF接口
1个20Pin摄像头接口,支持OV3640300万像素摄像头
1个网卡接口
1个HDMI,支持1080P输出
2.4系统软件方案设计
代码软件的编写在宿主机上Linux操作系统环境下进行,代码编写完成后,由交叉编译工具编译成目标机ARM平台下可执行文件,最后通过NFS(在第三章搭建开发环境中介绍)共享根文件系统至目标机。
2.4.1Linux操作系统
软件平台选用的嵌入式操作系统Linux3.14,Linux具有内核小、实时性高、源代码开放裁剪性高等优点。
由于一般嵌入式系统硬件资源比不上PC机,所以会根据实际情况进行会内核的裁剪,把需要体现功能的设备模块加载到内核,把不需要的设备模块卸载掉,然后再移植到硬件平台上。
2.4.2交叉编译工具
本次设计的主要功能都在FS4412开发板上运行实现,软件的运行环境为ARM平台,但是嵌入式系统作为目标机不具备自身开发的能力,所以需要在主机上进行代码的设计与编译,而主机自带的编译工具一般只能编译在本身平台环境下的程序,所以在这里需要用到交叉编译工具。
交叉编译就是在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,这种编译程序就称之为交叉编译工具,编译的过程叫做交叉编译。
2.4.3软件代码分模块设计
模块化程序设计,可以把整个系统功能拆分为多个模块,依次完成对每一个模块的设计,然后组装在一起,每个模块相对独立,使之受其他模块影响较小。
而且模块化设也能很少的增加与删除功能,便于程序的修改与升级。
一旦程序出现问题,也帮助了找错定位更加容易。
本次设计中软件完成的功能主要有图像采集功能,以及一个视频服务器发送数据的功能。
所以在这里采用模块化设计,别分为图像采集模块,和视频服务器模块,代码的实现上体现在使用多线程来控制。
由2.2设计的实现期望中第
(1)点,图像采集模块如果出现问题以后,服务器模块也能正常运行,所以应将线程属性设置为分离属性。
考虑到实际情况中,如果智能家居系统中视频监控服务器出现了问题,那么摄像头也没有必要再去运行,从而减少系统资源的浪费,一旦视频监控服务器重新启动后,摄像头就继续运行。
所以在代码的实现上把视频服务器模块作为主线程,在视频服务器模块一开始运行以后,就会创建子线程图像采集模块,如果视频服务器模块出现问题退出,那么子线程也会跟着退出,这样就迎合了实际情况。
2.5图像采集模块方案设计
2.5.1图像采集基本概述
图像采集的实现基于嵌入式Linux操作系统中VideoForLinuxTwo视频图像捕获驱动程序提供的一套应用接口。
通过调用该套应用接口,加上图像格式的转换,完成对图像的采集。
2.5.2VideoforLinuxtwo的介绍
VideoforLinuxtwo,以下缩写V4L2。
V4L2的前身是V4L(VideoforLinux),它是Linux内核中关于视频设备的子系统,由于早期的V4L存在着许多的缺陷,于是在1998年,BillDirks等人对其重新进行了修改与设计,并取名为VideoforLinuxtwo,它最早出现在Linux2.5.X的版本中。
V4L2相比与V4L有了更好的扩展性和灵活性,并且支持更多的硬件设备和更多的格式支持,而且因为一些历史的原因,V4L2也能够兼容V4L2,所以现在应用程序所说的V4L2编程与V4L编程实际上都是指的同一个视频采集接口V4L2。
在最早的V4L2的设计的时候,设计者的目的是要它能支持广泛的设备,不单单只是视频设备的采集,在查阅V4L2的资料中,我发现它的主要功能包括视频设备采集的接口,视频设备输出的接口,直接传输视频的接口,视频间隔消隐信号接口,收音机音频处理接口。
视频设备采集接口,它能使高频头或者摄像头完成对图像数据的采集,并且支持多种视频流格式和多种帧格式,取决于采集设备的能力。
视频设备输入接口,它可以驱动计算机从本身向外围视频设备输出图像数据,例如把计算机中的图像数据转为电视信号向电视机输入。
直接传输视频的接口,就是把连接计算机的视频采集设备采集到的图像数据直接输出到外围输出设备中,不用经过计算机CPU。
视频间隔消隐信号接口,它可以使应用软件通过该接口访问到在传输期间消隐的视频信号。
收音机音频处理接口,它可以用来处理从AM或者FM高频头设备中接受来的音频流数据。
从以上的各种功能可以看出,V4L2能做的事情非常多,视频图像数据的采集仅仅是众多功能的一部分,但是最初的V4L2也是基于视频图像采集来设计的,所以V4L2往往所做的事情也是用来完成视频图像数据的采集,这也算是它的本质工作。
2.5.3VideoforLinuxtwo的接口
V4L2的出现,使得在Linux操作系统下完成对视频设备驱动程序的开发有一套规范的接口,V4L2的设计包括两部分,一是底层的V4L2驱动程序,二是V4L2提供给用户的应用开发接口,所以V4L2视频接口就像是一座桥梁一样,为开发人员提供了清晰的模型与接口,减少了开发人员编程上的大量工作。
下面就来介绍一下给应用开发提供的图像采集常用接口,功能完成的接口大部分都是通过ioctl()文件控制传入不同的宏处理来完成,以下接口均是C语言接口。
ioctl(fd,VIDIOC_QUERYCAP,&cap)
查询视频设备的能力,能力包括驱动的名字、设备的名字、设备在系统中的位置、驱动的版本号、设备支持的操作。
ioctl(fd,VIDIOC_QUERYSTD,&std_id)
查询视频支持的制式,制式包括PAL/NTSC,在亚洲一般采用PAL,欧式使用NTSC,两者的区别在与对视频数据彩色编码、解码不同和扫描频率的不同。
ioctl(fd,VIDIOC_CROP,&crop)
设置视频图像的采集窗口大小,在crop结构中,可以设置到窗口高度和宽度,以及上下左右裁掉的图像大小。
ioctl(fd,VIDIOC_S_PRAM,&pram)
设置视频流的帧率。
iotlc(fd,VIDIOC_S_CTRL,&ctrl)
设置视频的ID命令值。
ioctl(fd,VIDIOC_S_FMT,&fmt)
设置视频捕获的格式、图像数据的高度和宽度、帧格式、和扫描方式。
在对视频设备的开发中,一般常见的捕获模式为V4L2_BUF_TYPE_VIDEO_CAPTURE(宏),即为视频捕捉模式。
ioctl(fd,VIDIOC_REQBUFS,&req)
向驱动申请一片连续的内存用于缓存视频,即视频缓冲区,req结构中可以设置视频缓冲区大小,一般设置为4,不少于3个,不能设置过大,设置过大会造成一定的延迟感。
ioctl(fd,VIDIOC_QUERYBUF,&buf)
查询驱动申请的内存信息,可以在buf结构中查询到缓存编号、捕获模式、已经使用的缓存空间大小、当前缓存的状态、缓存处理的方式。
其中缓存处理的方式一般选择映射,可以减小内核空间和用户空间的多次切换,提高视频数据采集的效率。
ioctl(fd,VIDIOC_STREAMON,&type)
驱动开始视频数据的采集,表明摄像头已经开始工作,已经开始捕获到了视频数据,但是这时候还不能够对这些数据进行处理与使用,因为视频数据并没有放到已经申请好的缓冲区中。
ioctl(fd,VIDIOC_QBUF,&buf)
将申请到的一片连续的视频缓冲区放入到捕获视频的队列中,在这些视频缓冲区中会被放入最新的捕获到的视频数据。
ioctl(fd,VIDIOC_DQBUF,&buf)
将在视频捕获队列中已经有视