0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用开源软件MJPG_Streamer实现数字化的视频监控系统设计

电子设计 作者:电子设计 2018-11-02 08:58 次阅读

1 引言

近年来,随着计算机技术、光电技术、数字图像处理技术、嵌入式技术和网络通信技术的不断发展,高度集成的数字化、网络化、智能化的数字视频技术已经了取代传统的模拟视频监控技术。目前,世界各国对视频监控的需求与应用不断扩大,推动着全球视频监控市场迅速的发展。根据市场调查公司IMSResearch的预测,全球视频监控市场将从2008年的115亿美元增加至2015年的377亿美元,年复合增长率达到20.4%.在这一市场中,监控摄像头、服务器、编码器以及软件是视频监控系统的主角。

本文提出一种基于ARM+Linux嵌入式平台的的智能视频监控系统,充分利用开源操作系统和开源免费软件MJPG_Streamer的特点,实现了在线实时监控。同时提出了一种目标检测算法,该算法在后台运行,实现了智能控制,能够对入侵目标进行语音报警。该监控适合针对一些特定场合的监控。

2 系统硬件平台

视频监控系统以S3C2440处理器为核心,外围器件有Flash、SDRAM以太网卡DM9000、声卡UDA1341以及CMOS接口摄像头OV9650,在Linux环境下对摄像头采集到的原始图像帧进行处理以及压缩,通过网络协议传输到PC上位机进行显示。系统硬件平台结构如图1所示。

应用开源软件MJPG_Streamer实现数字化的视频监控系统设计

3 构建ARM+Liunx嵌入式平台

在系统硬件平台上构建嵌入式Liunx系统,需要引导程序BootLoader和Linux源码,本系统需要移植bootloader源码,然后用Jtag接口将其烧写到Flash中,从Flash中启动,引导在PC机上交叉编译后的Linux镜像及根文件系统,之后启动Linux系统。

3.1 网卡和声卡驱动移植

由于在Linux内核中提供了以太网卡DM9000设备驱动功能层主要的数据结构和函数,所以在实际移植网络设备驱动程序时,要完成的工作就是根据实际以太网卡DM9000参数修改相应的内核代码。同样,在Linux内核源码中的标准音频编程模型已经包含一套完整的内核驱动程序模块,为各种各样的声卡提供了统一并且简单易用的编程接口,如open()、read()、ioctl(()等函数,所以在声卡UDA1341移植过程中对内核源码做简单修改即可。

3.2 语音播放功能的实现

完成了声卡驱动移植后,为了方便对音频文件的播放,停止等操作进行控制,还需要移植专业的高精度解码器Madplay.Madplay是一个根据MAD算法写的MP3播放器,解码效果相当出色,而且支持命令行,特别适合于在嵌入式系统使用。移植过程中分别编译zlib库、libid3tag库和libmad库,最后编译madplay源码并且把编译出来的madplay下载到系统中即可,之后就可以对录制好的音频文件进行播放。

嵌入式平台构建完成后,先后用命令ifcongfig和madplay进行网卡和语音模块测试,从图2可以看出Linux系统启动成功,网卡和声卡驱动配置成功了,并且可以使用Madplay播放器播放录制的音频文件。

应用开源软件MJPG_Streamer实现数字化的视频监控系统设计

应用开源软件MJPG_Streamer实现数字化的视频监控系统设计

4 MJPG_Streamer功能的实现

MJPG_Streamer是一款免费的视频流服务器软件,采用的是V4L2视频设备开发框架,它能够将从摄像头采集到的图像以JPEG格式通过TCP/IP网络协议传输到上位机进行显示。

4.1 MJPG_Streamer移植

在MJPG_Streamer源码目录中,把所有Makefile文件的CC=gcc改为CC=arm-linux-gcc,然后进行编译,生成的主要组件及功能如下:

input_uvc.so组件:主要完成了摄像头图像的抓取,同时将原始YUV 格式图像转换和压缩为JPEG格式图像。

input_control.so组件:主要完成对支持调整方向摄像头的转动方向的控制。例如云台控制器,云台控制是为了实现多角度监控的功能。

output_http.so组件:这是一个功能完整的WEB服务器,它将压缩后的JPEG 图像以HTTP视频数据服务流形式输出。

output_file.so组件:这个组件的功能是将压缩后的JPEG图像存储到特定的文件夹下,用来抓拍和存储网络摄像机监控中的静态图像。

4.2 目标检测算法的研究

基于帧间差分法对光照变化干扰不敏感,提取前景目标容易产生“空洞”的现象,而背景减法对光照变化较敏感的现象,本文提出了一种结合三帧差分算法和背景减法的目标检测算法。经过与目前常用的算法相比,例如混合高斯模型和改进的混合高斯模型,本文的算法不仅降低了运算的复杂度,适合在ARM 平台运行,同时又可以达到准确检测的效果。算法实现流程如下:

(1)建立背景模型,提取前景目标先把采集到的彩色图像利用式(1)转为灰度图,取前n帧图像,对每个位置像素的像素值求均值作为背景像素,表示为式(2)。利用当前帧减去背景帧得到包含前景的图像,根据阈值Th对图像进行二值化处理得到T(x,y),如式(3)、(4)所示。

应用开源软件MJPG_Streamer实现数字化的视频监控系统设计

式中,Th代表阈值,T(x,y)代表二值化后图像。

考虑到摄像头固定,背景像素灰度值变化比较缓慢,而前景目标像素灰度值变化相对较快。为了让背景模型适应光照缓慢的变化,需要对背景模型进行实时更新。其中a为背景更新率,取值范围是(0,1)。

Bn+1(x,y)=(1-a)Bn(x,y)+apn(x,y) (5)在差分图像S(x,y)中大量存在的是具有较高灰度值的前景像素和具有较低灰度值的背景像素。

所以,提出一种阈值根据当前差分帧S(x,y)自动更新的方法。

求出当前差分帧S(x,y)图像灰度的最大值和最小值,求得二者均值T.利用均值将图像分为目标和背景两部分,利用式(6)求出两部分均值k1和k2,最后由式(7)得到阈值Th.

应用开源软件MJPG_Streamer实现数字化的视频监控系统设计

(2)利用三帧差分算法提取目标选取连续三帧图像Dk-1(x,y),Dk(x,y)和Dk+1(x,y),进行两两差分得到D1(x,y)和D2(x,y),二值化处理后,二者进行与运算,提取前景目标。

(3)前景目标融合将背景减法的前景图像T(x,y)和三帧差分算法得到图像D(x,y)进行或运算,该运算利用了背景减法的优点,避免了单独利用三帧差法带来的空洞现象。同时发挥三帧差法对动态背景变化适应性强的特点。

(4)前景目标形态学处理由于融合后的图像Q(x,y)中存在着噪声点和一些空洞,有必要对图像进行中值滤波,然后交替的应用开运算和闭运算,起到既去毛刺又填充的双滤波目的。

根据本文的算法,采用静止的摄像头采集视频序列。图3所示为在Visual C++2005平台上的仿真结果。根据结果可得,本文算法能完整的提取运动目标,有效的消除空洞,检测结果准确。

(4)前景目标形态学处理由于融合后的图像Q(x,y)中存在着噪声点和一些空洞,有必要对图像进行中值滤波,然后交替的应用开运算和闭运算,起到既去毛刺又填充的双滤波目的。

根据本文的算法,采用静止的摄像头采集视频序列。图3所示为在Visual C++2005平台上的仿真结果。根据结果可得,本文算法能完整的提取运动目标,有效的消除空洞,检测结果准确。此时系统可以快速的检测到入侵物体,同时用Madplay播放录制好的音频文件进行语音报警。智能监控实现流程如图4所示。

应用开源软件MJPG_Streamer实现数字化的视频监控系统设计

4.4 监控平台测试

在Linux平台输入以下命令,启动监控系统。在PC上位可以通过MJPG_Streamer软件自带的图形界面进行显示,也可以通过网页浏览器进行页面显示。经试验,当有物体进入场景时,能够快速的进行语音报警。当平台测试完毕后,把MJPG_Streamer设置为在Linux启动后自动运行。见图5.

5 结束语

本文设计的基于软件MJPG_Streamer视频监控系统,具有实时性好,远程监控,上位机简易,开发周期短,易于实现的特点。系统实现了语音报警的功能,充分利用了ARM 平台的特性,不需要设计额外的语音模块电路。系统的目标检测功能已完成,下一个研究方向是利用软件MJPG_Streamer对云台控制的支持,实现模式识别和跟踪算法,使系统的功能更强大,应用范围更广。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5359

    浏览量

    170945
  • 视频监控
    +关注

    关注

    17

    文章

    1706

    浏览量

    64887
  • 计算机
    +关注

    关注

    19

    文章

    7390

    浏览量

    87680
收藏 人收藏

    评论

    相关推荐

    【OK210试用体验】进阶篇(1)视频图像采集之MJPG-streamer编译(Ubuntu系统下)

    下编译一、嵌入式视频图像开源库 在嵌入式系统中,常用的视频图像处理开源系统有:luvcview、
    发表于 09-06 00:29

    【OK210试用体验】进阶篇(2)视频图像采集之MJPG-streamer编译(arm移植)

    本帖最后由 gjianw217 于 2015-9-20 21:03 编辑 上一篇(【OK210试用体验】进阶篇(1)视频图像采集之MJPG-streamer编译(Ubuntu系统下))进行了
    发表于 09-20 20:49

    怎样在树莓派上安装使用mjpg-streamer

    mjpg-streamer是一个远程摄像头软件,树莓派很多应用都需要用到它。这里向大家介绍如何让树莓派使用mjpg-streamer获取u***摄像头视频。一、下载
    发表于 01-11 16:52

    韦东山第三期视频监控mjpg_streamer实验的注意事项--最终能看到结果

    本文摘录于本文博客:http://blog.csdn.net/chengdong1314/article/details/50402408这是原来视频给出的步骤:讲解mjpg-streamer
    发表于 11-13 23:43

    【EVB-T335开发板试用体验】【结项帖】移植mjpg-streamer实现监控(上)

    解什么是mjpg-streamer,首先我们先来了解一下以下概念:在嵌入式系统中,常用的视频图像处理开源系统有:luvcview、chees
    发表于 05-01 10:11

    【BPI-M64试用体验】MJPG-streamer移植实现简单监控

    Input_screen.so(5)在源码目录下有start.sh,这个脚本里有一些MJPG-streamer的使用方法及说明,可以执行start.sh脚本运行视频服务器,首先注释掉所有行,然后添加以下几行:export
    发表于 06-22 17:39

    Dragonboard410c Android USB Camera使用:mjpg-streamer 在ubuntu16.04安装与使用(二)

    指令mjpg-streamer还有很多开启指令,具体的指令请看start.sh脚本,这个脚本里面包含了一些基本指令,例如打开的视频设备号,和图像是否保存等。也可以直接输入帮助命令查看./mjpg-streamer –help或者
    发表于 09-28 11:51

    迅为-iMX6ULL开发板-移植mjpg-streamer实现远程监控

    本章节使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\97_章节使用资料。本章节介绍移植 MJPG 库和 mjpg-streamer 服务器到迅为 i.MX6ULL
    发表于 11-02 14:16

    数字化监控系统的特点及功能

    ,无时空限制。  ◆数字化监控图像,控制及报警信息数字化后进入计算机,可以充分利用高科技手段进行系统管理和图像处理。  ◆广域:可以
    发表于 12-11 14:10

    【米尔MYS-8MMX开发板免费试用】+ 使用mjpg-streamer和UVC摄像头搭建网络摄像头

    开源项目:https://sourceforge.net/projects/mjpg-streamer/目前项目已经迁移到github,这个版本增加了树莓派的支持:https://github.com
    发表于 09-07 18:49

    mjpg-streamer网络监控软件简析

    mjpg-streamer是一个开源的网络监控软件
    发表于 12-15 07:08

    rk3288视频服务器MJPG_Streamer移植简析

    1、firefly-rk3288视频服务器MJPG_Streamer移植MJPG_Streamer 是一个开源的轻量级的视频传输服务器应用项
    发表于 04-08 16:33

    【米尔-STM32MP135开发板-入门级MPU试用】基于mjpg\\-streamer实时监控

    CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/bruceou/application/mjpg_streamer
    发表于 09-12 23:02

    开源视频服务器软件MJPG-streamer研究

    针对嵌入式设备在进行多媒体数据处理时存在的资源限制问题,采用了一种开源视频服务器软件MJPG-streamer完成多媒体数据的处理及存储,基于该软件
    发表于 04-05 16:20 88次下载
    <b class='flag-5'>开源</b><b class='flag-5'>视频</b>服务器<b class='flag-5'>软件</b><b class='flag-5'>MJPG-streamer</b>研究

    详解视频服务器软件MJPG-streamer

    MJPG-streamer是一个轻量级的视频服务器软件。一个可以从单一输入组件获取图像并传输到多个输出组件的命令行应用程序。 该软件可应用在基于IP协议的网络中,从网络摄像机中获取并传
    发表于 10-24 15:14 0次下载
    详解<b class='flag-5'>视频</b>服务器<b class='flag-5'>软件</b><b class='flag-5'>MJPG-streamer</b>