基于树莓派的智能监控系统设计与实现

2023-08-30 03:17陈梦丹张宏伟
计算机测量与控制 2023年8期
关键词:灰度监控智能

张 玥,张 琦,陈梦丹,王 轩,张宏伟

(1.西安工程大学 电子信息学院,西安 710048;2.西安慧金科技有限公司,西安 710061)

0 引言

随着生活环境和生活质量的提高,人们的隐私安全保障意识越来越强,因此监控系统在日常生活中使用的领域越来越广,例如道路交通监控、刑事侦查、智能家居等领域。但是,目前市场上绝大多数监控系统仅仅只是简单地将摄像头所拍摄到的内容录制并存储下来。它的优点是能够将所有的视频全部保存,并且可以随时查阅,然而其弊端也非常明显,例如:保存的视频过多会占据大量的存储空间;智能化程度不高,对于有失窃、外来人员闯入等危险行为不能进行及时报警。因此,自带报警功能的智能监控系统受到越来越多人的青睐。

最初的第一代监控系统是基于闭路电视实现的模拟图像监控设备[1],此方案是借助电缆把图像采集设备和监控显示端相连,从而实现模拟视频数据的发送。20世纪90年代,数字视频压缩编码技术正式被应用于监控领域,出现了第二代数字视频监控系统。它可以将模拟数据转化为数字数据,在突破传送电缆线长度限制的情况下,视频采集清晰度和系统的抗干扰性能得到有效提高。但由于第二代监控设备采用计算机作为图像数据运算和视频显示端,传输距离仍然受限,整套监控系统体积大、成本高,维护困难[2]。随着图像采集设备、视频编码器、中央处理器等设备的不断改进与发展,视频监控领域也进入到第三代智能视频监控时代。智能监控系统以图像处理、模式识别和计算机视觉技术为基础,在监控系统中增加智能视频分析模块,借助计算机强大的数据处理能力过滤掉视频画面无用或干扰信息、自动识别不同物体,分析抽取视频源中关键有效信息,快速准确的定位事故现场,判断监控画面中的异常情况,并以最快和最佳的方式发出警报或触发其它动作,从而有效进行事前预警,事中处理,事后及时取证的全自动、全天候、实时监控的智能系统。

智能监控系统市场前景广阔,国外对其研究的相对较早。卡内基梅隆大学VSAM团队在1997年研发了一种端到端的多摄像头监控系统,该系统能够自动收集和传播实时信息[3]。2005年,美国Tyco公司为道达尔炼油厂开发的“区域监控器”软件模块,可以实时显示炼油厂内各站点数据,且能详细统计现场工作人员出勤情况[4]。2020年,AXIS针对斯洛伐克Mochovce核电站研发的智能监控系统,将摄像头和报警系统互连。该系统一方面能够在发现河中有漂浮物的时候自动报警;另一方面能够监控现场生产设备的状态,当发生故障或缺陷时,及时报警。目前,除CMU、麻省理工外,奥地利Graz理工大学的嵌入式智能摄像机研究小组、IBMS3(smart surveillance system)、Intel IRISNET项目等,都是各行业中的佼佼者。

相对于国外,我国的监控系统研究起步较晚,早期的一些产品大多用于交通监控、商场监控、保密室监控等。截止到2021年,我国超过1.76亿个监控摄像头用于城市监控与报警系统0。近年来,随着海康威视、大华股份、汉邦高科等公司的陆续上市,国产的智能监控产品越来越多。例如海康威视,针对发电、电网、石油化工产业、煤矿产业等研发了安全生产管理平台,这些监控平台以视频采集为基础,结合人工智能、物联网技术实现智能监控功能,在提高工厂效率的同时有效预防生产事故[6]。这些大企业研发的智能监控系统大多用于大型工厂,几乎没有针对家庭安防、保密室等小型场所、体积小、价格低廉、实时性高、稳定性强、带自动报警功能的智能监控系统。针对此,本文研究设计一款小型智能监控系统,该系统选用树莓派4 B搭建硬件平台,搭载Linux操作系统,基于Python开发环境,结合图像采集模块,采用关联帧差分运动目标检测算法作为核心算法,实现运动目标检测。当系统检测到有目标闯入视野范围内时,开始录制目标闯入后的视频,并将目标闯入后400帧视频发送到指定邮箱,实现报警功能。

1 系统结构及原理

智能监控系统主要由主控模块、显示模块、图像采集模块、电源模块、邮箱系统共五部分组成,系统总体结构如图1所示。

图1 智能监控系统结构设计框图

主控模块是整个控制系统的核心部分,负责系统控制、数据接收、数据分析和计算、数据传输等工作。图像采集模块作为系统的数据输入,通过摄像头的拍摄,把图像的数据传输到主控模块,完成图像采集功能。显示模块用来显示图像采集模块拍摄到的实时画面。电源模块为系统提供电能,使系统能够正常工作。邮箱系统用来接收有目标闯入后系统录制的400帧视频,实现系统报警功能。

1.1 系统硬件选型

1)主控模块。系统主控模块可采用AT89C51单片机、FPGA或STM32系列嵌入式微控制器,其优势在于体积小、运算速度快、价格低廉,但系统集成度不高,需要设计多个外部电路和连接多种外部设备,系统复杂度高,在日常使用中容易出现故障。而基于Linux的树莓派4 B控制系统具有4 GB的RAM和高性能64位四核处理器,能够通过运行相应的操作系统,实现远程遥控和云端管理,通过一对micro-HDMI端口支持分辨率高达4 K的双显示屏,支持 HEVC 视频 4 Kp60 硬解码,高达双频2.4/5.0 GHz无线局域网,具有蓝牙5.0、千兆以太网、USB 3.0和PoE功能,并能够与Camera V2摄像头模块完全相互兼容[7-8]。同时,其价格便宜,集成度高,运算速度快,扩展性丰富,使用方便。因此,将其作为智能监控系统的主控模块,能够在降低系统复杂程度的基础上,降低系统成本。

2)图像采集模块。树莓派具有良好的扩展功能,能够与Camera V2摄像头模块完全相互兼容,因此图像采集模块可采用体积较小的CameraV2照相机模块。其核心元件是1个500 W像素的CMOS传感器,最大分辨率为2 592*1 944,支持每秒高达30帧的1 080 p视频拍摄,可以用一条15芯的排线与树莓派4B控制系统专用的CSI接口直连,能够有效提高系统集成度。

3)显示模块。系统显示可以使用VNC远程连接的方式把树莓派的系统界面远程连接在PC端,也可以使用IPS高清显示屏,通过HDMI连接线与核心控制模块进行连接。本研究选用MP13508显示屏作为智能监控系统显示模块。该显示模块采用3.5英寸电阻触摸TFT屏,分辨率为480*320,并且包含SPI+HDMI接口,可与树莓派4 B控制系统直连,具有结构简单、体积小、重量轻、便于隐蔽和安装等优势,能够满足系统设计需求。

4)电源模块。电源模块选用具有Type C接口且能够把100~240 V、50/60 Hz、0.6 A的交流电转换为5 V、3 A的电源适配器。Type C接口可与树莓派4 B控制系统直连,结构简单,使用方便。

2 算法分析

2.1 图像预处理算法分析

图像预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而提高特征提取、图像分割、匹配和识别的可靠性[9]。系统对图像预处理包括图像灰度化处理和滤波处理。

灰度化处理是将彩色图像转换为灰度图像的过程,是图像处理的根基。相对于彩色图像,灰度图像占内存更小,运算速度更快,且图像经过灰度化处理后可以在视觉上增加对比,突出目标区域。因此,系统将图像灰度化处理作为图像预处理初始步骤。常见的图像灰度化处理方法有分量法、平均值法和加权平均法。分量法是根据应用需要直接选择彩色图像R、G、B三分量中某一个分量,将其作为灰度值进行处理,通常选择3个分量中数值最大的分量。平均值法是计算彩色图像R、G、B三分量全部数值的平均值,将其作为灰度值,进而获得灰度图像。加权平均法是根据人眼对绿色敏感最高,对蓝色敏感最低,将彩色图像的R、G、B三分量以不同的权重进行加权平均,如公式(1)所示:

f(x,y)=0.299*R(x,y)+0.578*

G(x,y)+0.114*B(x,y)

(1)

式中,R(x,y)、G(x,y)、B(x,y)分别表示像素点(x,y)的R、G、B值,f(x,y)表示图像像素点(x,y)处理后的灰度值。

通常分量法转换的灰度图像亮度较高,平均值法产生的灰度图像比较柔和,加权平均法得到的灰度图像效果最好。因此,选择加权平均法作为图像灰度化处理方法。

经过灰度化处理的图像,一般存在噪声、阴影等问题,为了提升图像质量,更好地把目标与背景进行分割,减少图像噪声、阴影对运动目标检测效果的影响,需要对图像进行滤波处理。常用的滤波方法有均值滤波、高斯滤波和中值滤波。

均值滤波是图像处理中常用的手段,从频率域观点来看均值滤波是一种低通滤波器,高频信号将会去掉。理想的均值滤波是用每个像素和它周围像素计算出来的平均值替换图像中每个像素,从而帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。中值滤波是将像素点灰度值设置为相邻窗口范围内各点中值,属于非线性平滑滤波的一种,一定程度上中值更能反映规定范围内的真实值,使得邻域范围内像素值近似于真实值从而消除孤立的噪声点。高斯滤波是对图像进行加权平均的过程,图像中每一个像素点的值由其自身和邻域内其它像素值经过加权平均后得到,类似于卷积。高斯滤波属于线性平滑滤波的一种,滤波后的图像平滑程度取决于标准差,它输出的是领域像素的加权平均值,同时离中心越近的像素权重越高。综合考虑,高斯滤波保留细节的能力相对其余两种方法会更好一点,并且高斯滤波可以通过加权值的改变,调节其性能。因此,系统选择高斯滤波算法对图像进行滤波处理。

2.2 运动目标检测算法分析

智能监控系统实现的基础是运动目标检测,而运动目标检测的核心在于通过分析视频图像序列,把运动目标从实时变化的背景图像中快速准确地分离出来[10-11]。在不考虑光照变化、噪声干扰的情况下,能引起序列图像中相邻两帧对应像素的像素值发生变化的因素只有目标的运动。因此,根据序列图像中相邻两帧或者几帧中对应像素点像素值的变化可以得到运动目标的运动信息。经典的运动目标检测算法有:光流法、背景差分法和帧间差分法[12]。

基于光流法的运动目标检测利用运动目标相对于背景图像运动时存在运动位置矢量场来检测出运动目标的位置[13]。光流法抗噪性差,容易受噪声、遮挡、光照强度、物体阴影等因素影响,且算法复杂,运算时间长,实时效果差[14],难以满足系统实时性要求。

背景差分法是将当前每一帧图像的像素值与之前存好的背景图像的像素值进行差分,差分图像与预先设定的阈值进行比较,如果差分图像像素值大于阈值则为运动目标,如果小于阈值,则为背景区域[15]。背景差分法能够较快地检测到运动目标,实时性高,但容易受到环境干扰,背景帧的构造和更新将花费大量的时间[16],不适用于背景快发变化的场景。

帧间差分法又被称时间差分法,是一种利用序列图像相邻帧的相关性,将相邻的两帧或者几帧图像进行差分计算并阈值化以获取运动目标检测的方法[17]。帧间图像信号的变化往往包含了丰富的目标运动信息,这是视频图像中对运动目标进行分割的基础[18-20]。由于运动目标与背景在像素值上的差异,且运动目标在不同的图像帧中的位置不同,当视频中存在移动物体时,相邻帧之间对应像素灰度值会有差异,求取相邻帧灰度差的绝对值,如果没有运动目标存在,则差值图像表现出来均为0,如果有运动目标存在,则差值图像变现为非0,这样就可判断是否有运动目标存在,同时大致计算得到运动目标的位置、轮廓和移动路径等。 帧间差分法的优点是算法简单,程序实现复杂度低,稳定性高,对光线等场景变化不敏感,适应性强,适用场景多。缺点是不能提取运动目标完整图像,只能提取目标边界且边界轮廓粗,比实际目标大,目标内部有“空洞”;对于运动速度较快的目标,容易出现“鬼影”现象或被检测为两个不同的运动目标。对于运动速度缓慢的目标不敏感[21],当目标在视频流中前后两帧几乎完全重叠时,会出现漏检现象,系统检测准确性不高,需要对其进行改进,才能满足智能监控系统设计要求。

2.2.1 基于关联帧差分运动目标检测算法

三帧差分法(TFMD,three-frame difference method)是帧间差分法的一种,是通过对图像序列连续几帧图像做差分运算从而获取运动目标轮廓的方法。该方法在一定程度上优化了运动物体双边,粗轮廓的现象,相比之下,TFMD比相邻帧间差法更适应于物体移动速度较快的情况,且检测精度更高。TFMD就是取连续的3帧图像进行2次差分运算,再将2次差分得到的结果进行与运算即可得到运动目标[22]。相对于其它几种常用的运动目标检测算法而言,三帧差分法具有计算量小、抗干扰能力强等优点,能够得到比两帧差分运动目标检测更精确的结果,但检测结果仍然会出现空洞现象。为了能够提高智能监控系统的准确性,论文研究的智能监控系统采用基于关联帧差分运动目标检测算法,该算法的基础是TFMD,具体实现原理如图2所示。

图2 基于关联帧差分运动目标检测算法原理图

记fk(x,y)为序列图像第k帧图像中坐标为(x,y)像素点的像素值;fk-1(x,y)为序列图像第k-1帧图像中坐标为(x,y)像素点的像素值;fk+1(x,y)为序列图像第k+1帧图像中坐标为(x,y)像素点的像素值。

1)通过相邻两帧图像颜色特征的巴氏距离,根据式(2)算相邻两帧图像之间的相似度:

(2)

其中:Fk(i)和Fk-1(i)为提取出来的第k帧和第k-1帧图像的颜色特征向量;S的值越接近1,表明两帧图像越相似。

2)当第k帧和第k-1帧图像的相似度大于设定阈值T1时,再用式(3)、式(4)算相邻2帧图像之间的差分值:

Dk(x,y)=|fk+1(x,y)-fk(x,y)|

(3)

Dk-1(x,y)=|fk(x,y)-fk-1(x,y)|

(4)

3)考虑到光照、噪声等外部因素造成的图像像素值的微弱变化,可利用最大类间方差(OTSU)得到自适应阈值T2,将差分图像和该阈值T2作比较,当差值大于该阈值时认为该像素点属于运动目标,否则属于背景。对差分结果进行二值化处理,如式(5)、式(6)所示:

(5)

(6)

4)对dk(x,y)和dk-1(x,y)取与运算,得到含有运动对象和两帧差分图像重叠部分的二值图像Mk(x,y),如式(7)所示:

Mk(x,y)=dk(x,y)∩dk-1(x,y)

(7)

5)统计二值图像Mk(x,y)中灰度值为1的像素点的个数m。若m小于设定阈值T3,则判定当前帧无运动目标,跳过该帧执行下一帧检测;若m大于设定阈值T3,则判定当前帧有运动目标,开始录像,并开始检测下一帧图像。

3 智能监控系统系统软件设计

3.1 系统软件设计总体思路

智能监控系统总体程序设计主要由初始化程序、运动目标检测程序、视频录制程序和邮件发送程序四部分组成。

初始化程序主要将需要用到的所有模块进行引用,为后续程序的运行提供初始化和必要的库函数。运动目标检测程序用到的基于关联帧差分运动目标检测算法,首先对图像进行灰度化和高斯滤波预处理,然后计算相邻帧的相似度,若相似度满足设定的阈值,则将序列图像相邻3帧的图像进行差值处理,将得到差值的绝对值进行与运算后输出到一张新的图片中,将新的图像进行腐蚀与膨胀,通过阈值函数处理如果超过阈值则输出有运动目标的信号。当检测到有运动目标时,视频录制程序开始运行,录制运动目标闯入监控视野后的400帧视频,并将所录制的视频保存到指定文件夹中。邮件发送程序需要用到子程序中的SMTP协议配置,采用单独的线程来运行。当视频录制完成后,邮件发送程序将其发送到预先设定好的邮箱内。

3.2 系统软件配置

智能监控系统软件配置包括树莓派操作系统和编程环境两部分。操作系统选择树莓派官方支持的Raspberry Pi OS作为操作系统,只需将系统镜像文件烧录至TF卡即可。

树莓派选用Python编程语言。Python是一种面向对象的开源跨平台程序设计语言,包含各种区域的代码,如单元测试、线程、图像处理、操作系统接口和协议、Web服务工具等。这种类型的代码可以消除智能监控系统编写冗长代码的需要,同时能够把其它语言编写的各种模块,尤其是C/C++语言编写的模块,很轻松地联结在一起,语法清晰简单,调用方便[23]。

监控程序主要调用OpenCV库函数来实现。OpenCV是Intel的一个开源免费视觉库,其内部函数库是由C/C++编写的,具有量清、高效的特点[24]。OpenCV库函数内部提供的大量API接口可实现图像去噪、边缘检测、角点检测、色彩变换、形态学处理等功能,同时支持图像文件数据以及摄像头数据的输入,图像以及视频文件的输出功能。模块功能强大,调用方便,能够满足各类图像处理需求。

SMTP是一种可靠且有效的电子邮件传输协议,主要用于系统之间的邮件信息传递,并能够提供有关来信的通知,操作简单、方便。因此,系统选用SMTP协议实现报警邮件发送功能。在设计系统程序之前,需要设置用户的邮箱将SMTP协议开启,之后可获得邮箱授权码和邮箱服务器地址,这对于之后设计发送邮件报警程序至关重要。

3.3 系统软件实现流程图

智能监控系统软件实现流程如图3所示。初始化程序模块首先需要打开摄像头,然后设置帧数和读取当前背景,其次检测是否捕获视频流,如果未捕获视频流则说明未开启摄像头,则重新开启摄像头,直至开启成功。

图3 智能监控系统软件流程图

初始化程序配置完成后,运动目标检测程序首先对捕获的图像进行灰度化和高斯滤波处理。然后,计算相邻两帧图像的相似度,如果前一帧(第k-1帧)图像与当前帧(第k帧)的相似度、当前帧(第k帧)与后一帧(第k+1 帧)图像的相似度均大于阈值T1,则对相邻两帧图像进行差分运算得到差分图像Dk(x,y)与Dk-1(x,y),否则重新计算下一帧图像与相邻帧的相似度。其次考虑到光照、噪声等外部因素造成的图像像素值的微弱变化,将差分图像与利用最大类间方差(OTSU)得到自适应阈值T2进行比较得到二值图像dk(x,y)和dk-1(x,y)。 最后,对dk(x,y)和dk-1(x,y)取与运算,得到含有运动对象和两帧差分图像重叠部分的二值图像Mk(x,y),并统计二值图像Mk(x,y)中灰度值为1的像素点的个数m。若m小于设定阈值T3,则判定当前帧无运动目标,跳过该帧执行下一帧检测;若m大于设定阈值T3,则判定当前帧有运动目标,则开始录像,并开始检测下一帧图像。

当检测到有物体闯入后,视频录制程序开始运行,并在指定的文件夹保存400帧的视频。如果第一次运行没有找到保存的视频的文件夹,则会自动创建一个新的文件夹,后续录制的视频都会保存在这个文件夹,为邮件发送程序提供检索文件。视频录制并保存完整后,显示屏上会显示录像结束。

邮件发送程序需要用到邮箱的SMTP协议。在执行将录制的视频发送到指定邮箱之前,需提前开启指定邮箱的SMTP协议并获得邮箱服务器地址和密码。邮件发送程序为单独的线程,在程序运行中,不受其它模块的影响。

4 实验结果与分析

本研究设计的智能监控系统以Raspberry Pi 4B开发板为硬件平台并以Python3语言为基础结合OpenCV实现。树莓派出厂时是不具备操作系统的,因此在系统进行实验测试之前,需要给树莓派中烧录系统。在树莓派官网下载烧录系统的工具包,这款工具包可以轻松的为树莓派镜像烧录系统,只需要一步就可以自动的安装好,不需要更多操作。系统烧录完成后,需要对树莓派开发板进行运行环境的搭建,包括OpenCV和SMTP协议的安装等。系统需要在之后每次启动时都要打开摄像头,因此需要在软件搭建环境中将摄像头设置成开机自启动模式。

4.1 图像采集功能测试

摄像头功能完好与否是智能监控系统成功运行的基础。因此,在软件环境搭建完成并成功登陆系统后,需要对摄像头拍照范围和清晰度进行测试。运行摄像头拍照程序,若摄像头能够正常工作,则屏幕上会显示拍照结果,如图4所示,否则摄像头有问题,需进行维修或更换。

图4 摄像头测试图

4.2 智能监控系统测试

智能监控系统识别率受环境的光线强弱、拍摄角度、拍摄背景等因素的影响,因此为了更好地测试系统的功能是否全面,需要进行正常亮度情况下、昏暗环境下以及不同目标进入监控范围时系统是否都能够正常工作。

4.2.1 正常光线下测试

正常光线下智能监控系统测试结果如图5所示,其中图(a),(c),(e)为3个目标闯入监控范围的测试结果;图(b),(d),(f)为发送到指定邮箱的结果显示。

图5 正常光线下智能监控系统测试结果

实验结果表明:本研究设计的智能监控监控系统能够在正常光线下完成目标检测、保存目标闯入视频并将视频发送到指定邮箱报警功能。

4.2.2 昏暗光线下测试

昏暗光线下智能监控系统测试结果如图6所示,其中图(a),(c),(e)为3个目标闯入监控范围的测试结果;图(b),(d),(f)为发送到指定邮箱的结果显示。

图6 昏暗光线下智能监控系统测试结果

实验结果表明:本研究设计的智能监控监控系统能够在昏暗光线下完成目标检测、保存目标闯入视频并将视频发送到指定邮箱报警功能。

正常光线和昏暗光线下测试结果表明:本研究设计的智能监控系统不仅能够顺利执行监控、报警等任务,还可以在不同光线强度、不同目标闯入下正常工作,稳定性高、实时性强,满足智能监控系统设计需求。

5 结束语

以智能监控系统为实践项目,设计并开发了一套具备自动报警功能的智能监控系统。该系统选用树莓派4B搭建硬件平台,搭载Linux系统,基于Python开发环境,采用灰度加权平均法及高斯滤波算法对图像进行预处理,基于关联帧差分运动目标检测算法,结合图像采集模块,实现运动目标检测;当系统检测到有目标闯入时,开始录制目标闯入后的400帧视频;视频录制完成后发送到指定邮箱,实现自动报警功能。在正常光线和昏暗光线下对系统功能进行测试,实验结果表明在不同光线强度、不同目标闯入情况下,系统能够准确识别目标闯入,实现监控、报警功能,实时性强、稳定性高,具有广阔的市场应用前景。

猜你喜欢
灰度监控智能
采用改进导重法的拓扑结构灰度单元过滤技术
The Great Barrier Reef shows coral comeback
基于灰度拉伸的图像水位识别方法研究
你被监控了吗?
Zabbix在ATS系统集中监控中的应用
智能前沿
智能前沿
智能前沿
智能前沿
基于最大加权投影求解的彩色图像灰度化对比度保留算法