一种识别向河道内倾倒污水的实时视频监控算法的制作方法

文档序号:17589511发布日期:2019-05-03 21:38阅读:243来源:国知局
一种识别向河道内倾倒污水的实时视频监控算法的制作方法

本发明涉及水利、环保及视频图像处理领域,特别是一种识别向河道内倾倒污水的实时视频监控算法。



背景技术:

河流作为承载生命的摇篮和人类的生活息息相关,人们不仅仅从中获取生活必须的水和食物等资源,也把生活污水等排放到河流中去。城市中下水道会收集污水进行处理后再排放,因此对下游的影响可控,但是如果居民将生活污水未经处理直接倾倒在河流中,容易造成水环境和水生态的破坏。如果是生活污水外的工业污水,更会威胁到居民的用水安全。在遍布监控摄像头的今天,利用视频图像进行污水倾倒的识别可以利用现有的硬件设备,借助图像处理技术可以无需人工进行24小时的全天识别。

最原始的视频监控方法是利用监督人员的人眼进行捕捉,缺点是无法做到多路监控长时间的监督,且人力资源有限。利用机器学习的方法进行样本的训练和分类,是一种通用的识别方法,这种方法需要采集倒水、泼水真实情况的样本,并且需要挑选有代表性的负样本(也就是正常无倒水的场景)以进行二分类的训练。在真实样本有限的情况下,需要对正负样本进行平衡以及模型的调试。另外一种思路是人为设计识别方法,对特定的目标情况进行识别。机器学习的方法需要收集大量的正样本,这项工作量极大。本身真实的倾倒污水的行为就不多见,如果自己模拟和实际的泼水场景还是有很大差别的。此外模型的调试很困难,绝大部分的时候都是负样本(正常无倒水的情况)的场景,因此正负样本极不平衡。通常对正负样本不平衡的场合可以使用异常检测的机器学习方法,但无法区分目标场景(泼水倒水)和其他异常情况。因此使用机器学习方法会给整个模型带来很大的不确定性。



技术实现要素:

有鉴于此,本发明的目的是提出一种识别向河道内倾倒污水的实时视频监控算法,能够对所有区域进行扫描判断,利用空间上和时间上的局部整体一致性来解决水体和刚性物体在空中飞行落下过程区别带来的识别困难问题,并且本发明计算量小,复杂度可控,轻松做到实时的识别。

本发明采用以下方案实现:一种识别向河道内倾倒污水的实时视频监控算法,包括以下步骤:

步骤s1:提取记录仪视频流中的单帧图像作为输入图像,即当前帧图像,并使用高斯滤波处理输入图像,用以减少图像噪声;

步骤s2:使用混合高斯模型对当前帧图像进行建模,提取当前帧图像中的前景像素,得到当前帧图像中的动态像素,即前景二值图图像;

步骤s3:将步骤s2中得到的前景二值图图像进行8*8像素的合并,得到注意力图像pa,所述注意力图像pa的尺寸是原始输入图像尺寸的1/8;

步骤s4:提供上一帧图像的注意力图像pa与步骤s3中的注意力图像pa结合,计算每一个像素的注意力流向,得到前景流向图像pd;

步骤s5:提供上一帧图像的流向图像pd和上一帧图像的历史图像ph与步骤s3中所述的当前帧图像的注意力图像pa结合,计算流向历史,同时生成历史图像ph;

步骤s6:提供上一帧图像的总距离图像pl与步骤步骤s3中所述的当前帧图像的注意力图像pa结合,计算流向距离,同时生成总距离图像pl;

步骤s7:判断像素的历史长度是否达到预设长度,如果是则满足;

步骤s8:输入河道位置信息,用以判断是否向河道内泼水,并且终点在河内;若是则满足;

步骤s9:当同时满足步骤s7与步骤s8时,记录仪记录这条轨迹作为结果,并且发出警报。

进一步地,所述步骤s3具体为:将8*8小窗口内的数值为1的像素进行统计,作为新图像中一个像素的灰度值;窗口和窗口之间不重叠,则原始图像的长宽都缩小8倍,该图形的强度能够模拟人眼对动态区域的关注度。

进一步地,所述步骤s4包括以下步骤:

步骤s41:预设局部区域大小为10*10,即以某个像素为中心-5到+5的区域;计算上一帧注意力图像pa’每个像素对前帧注意力图像pa区域的影响,即计算当前帧注意力图像pa对应的局部区域内强度总和;将pa’中某个像素的强度除以所述强度总和得到系数t;

步骤s42:计算当前帧注意力图像pa每一像素即位置对10*10区域内的上一帧强度流入量:将步骤s41中当前帧强度总和乘以上一帧每个像素的系数;

步骤s43:统计每个方向的流入强度:预设水流的向上流量总和为t1,水流的向下流量总和为t2;比较t1和t2得到当前帧注意力图像pa注意力强度在每个位置的流向;从而得到当前帧注意力图像pa的流向图pd。

进一步地,所述步骤s5包括以下步骤:

步骤s51:获取当前帧注意力流向图pd的中每个位置,并在10*10的区域内,在上一帧注意力流向图pd’中的相对位置上进行统计;

步骤s52:分别统计向上方向和向下方向的像素,每个像素均乘以上一帧注意力的强度总和;分别将向上方向和向下方向的乘积进行累积,比较两个累积量的强度,如果上一帧目标区域向下的强度大于向上的强度,则当前帧保持流向,并累计上一帧的历史;如果上一帧目标区域向下的强度小于向上的强度,则当前帧未保持流向执行步骤s53;

步骤s53:如果当前帧未保持流向,则当前帧的历史为0;

步骤s54:将持续流向的像素,按当前帧位置流向找到上一帧对应区域,并找到相同流向的像素,统计像素的平均历史,将平均历史值加1作为这个位置的新的历史值;

步骤s55:将每个位置的历史记录成一张历史图像ph保存下来。

进一步地,步骤s52中所述的强度为由上一帧注意力图的强度pa’来加权。

与现有技术相比,本发明有以下有益效果:

1、本发明利用前景提取和注意力图像,可以有效地减少搜索时间,提高算法效率。

2、本发明捕捉液体飞行的过程,有利于取证,可以避免误判的问题。

3、本发明利用局部的简化模型,可以判断出帧和帧之间的流动方向,建立起联系。这种误差不会随着时间的累积而增加,准确度佳。其效果和人眼对两帧之间的建立起的流动方向符合。

4、本发明考察持续保持向下流动的识别,排除大部分干扰,

5、本发明利用河道位置的信息能够轻松将行人、汽车等干扰排除。

6、本发明利用两帧之间的下落距离可以判断出其速度,并且计算量小,复杂度可控,轻松做到实时的识别。

附图说明

图1为本发明实施例的流程图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

如图1所示,本实施例提供了一种识别向河道内倾倒污水的实时视频监控算法,包括以下步骤:

步骤s1:提取记录仪视频流中的单帧图像作为输入图像,即当前帧图像,并使用高斯滤波处理输入图像,用以减少图像噪声;

步骤s2:使用混合高斯模型对当前帧图像进行建模,提取当前帧图像中的前景像素,得到当前帧图像中的动态像素,即前景二值图图像;

步骤s3:将步骤s2中得到的前景二值图图像进行8*8像素的合并,得到注意力图像pa,所述注意力图像pa的尺寸是原始输入图像尺寸的1/8;

步骤s4:提供上一帧图像的注意力图像pa与步骤s3中的注意力图像pa结合,计算每一个像素的注意力流向,得到前景流向图像pd;

步骤s5:提供上一帧图像的流向图像pd和上一帧图像的历史图像ph与步骤s3中所述的当前帧图像的注意力图像pa结合,计算流向历史,同时生成历史图像ph;

步骤s6:提供上一帧图像的总距离图像pl与步骤步骤s3中所述的当前帧图像的注意力图像pa结合,计算流向距离,同时生成总距离图像pl;

步骤s7:判断像素的历史长度是否达到预设长度,如果是则满足;

步骤s8:输入河道位置信息,用以判断是否向河道内泼水,并且终点在河内;若是则满足;

步骤s9:当同时满足步骤s7与步骤s8时,记录仪记录这条轨迹作为结果,并且发出警报。

在本实施例中,所述步骤s3具体为:将8*8小窗口内的数值为1的像素进行统计,作为新图像中一个像素的灰度值;窗口和窗口之间不重叠,则原始图像的长宽都缩小8倍,该图形的强度能够模拟人眼对动态区域的关注度。

在本实施例中,所述步骤s4包括以下步骤:

步骤s41:预设局部区域大小为10*10,即以某个像素为中心-5到+5的区域;计算上一帧注意力图像pa’每个像素对前帧注意力图像pa区域的影响,即计算当前帧注意力图像pa对应的局部区域内强度总和;将pa’中某个像素的强度除以所述强度总和得到系数t;

步骤s42:计算当前帧注意力图像pa每一像素即位置对10*10区域内的上一帧强度流入量:将步骤s41中当前帧强度总和乘以上一帧每个像素的系数;

步骤s43:统计每个方向的流入强度:预设水流的向上流量总和为t1,水流的向下流量总和为t2;比较t1和t2得到当前帧注意力图像pa注意力强度在每个位置的流向;从而得到当前帧注意力图像pa的流向图pd。

在本实施例中,所述步骤s5包括以下步骤:

步骤s51:获取当前帧注意力流向图pd的中每个位置,并在10*10的区域内,在上一帧注意力流向图pd’中的相对位置上进行统计;

步骤s52:分别统计向上方向和向下方向的像素,每个像素均乘以上一帧注意力的强度总和;分别将向上方向和向下方向的乘积进行累积,比较两个累积量的强度,如果上一帧目标区域向下的强度大于向上的强度,则当前帧保持流向,并累计上一帧的历史;如果上一帧目标区域向下的强度小于向上的强度,则当前帧未保持流向执行步骤s53;

步骤s53:如果当前帧未保持流向,则当前帧的历史为0;

步骤s54:将持续流向的像素,按当前帧位置流向找到上一帧对应区域,并找到相同流向的像素,统计像素的平均历史,将平均历史值加1作为这个位置的新的历史值;

步骤s55:将每个位置的历史记录成一张历史图像ph保存下来。

在本实施例中,步骤s52中所述的强度为由上一帧注意力图的强度pa’来加权。

较佳的,本实施例的目标是捕捉液体(目标物体)在向河道内泼洒行为中飞行的过程,结合河道区域(目标区域)来判定发生了向河道倾倒液体的行为。由于液体不是刚体,无法利用形状、大小、颜色等建立起前后帧的联系,所以实施例不对具体物体进行跟踪,而是对所有区域进行扫描判断,利用空间上和时间上的局部整体一致性来解决水体和刚性物体在空中飞行落下过程区别带来的识别困难。

特别的,在本实施例中算法分为三个主要部分:

第一部分包含ab两步,是对视频图像进行转换,形成的图像作为后续步骤的操作对象。先用a步利用混合高斯模型对前景进行提取,排除视频中静态物体的干扰。再用b步对前景二值图进行转换,模拟人眼对动态部分的感受强度,因此命名为注意力图像。这两步的好处是排除非目标像素的干扰,也缩小图像的分辨率,可以快速找到动态变化强烈的位置,大大提高效率。并且也是出于“水无常形”的考虑,相当于对一个小区域内进行简化滤波,放弃对精细面积的考虑。

第二部分包括步骤cde,也是最关键的一步,我们需要利用得到的注意力图像结合上一帧记录的几张图像,判断出每一个像素的流向、保持流向所持续的时间(历史)以及总的下落距离。

第三部分是判断是否落入河道区域以及后处理的部分,包含步骤fg。这部分结合已知的位置信息判断倒出的水体最后是否落到我们感兴趣的区域。由于之前的处理是对每一个像素进行的,所以返回结果的时候需要合并为一个结果信息,即是否发生泼水和倒水行为,而结果信息还要包含发生的大致位置和范围。

注意,下面具体步骤中得到的中间图像需要在下一帧的流程中使用。例如当前帧注意力强度图pa,要保存下来传入下一帧进行计算。在下一帧的流程中pa标注为pa’。

具体实施步骤如下:

a:对视频流进行逐帧分析,提取单帧图像作为算法的输入,使用高斯滤波处理输入图像以减少图像的噪音,使用混合高斯模型对视频进行建模,提取当前帧图像中前景像素,这步会得到图像中的当前帧的动态像素,也就是前景图像(区别于静态的像素为背景)。这一步也可以用帧差法、光流法等其他方法替代。使用混合高斯模型耗时短,且能够对周期性运动的干扰物体例如晃动的树木和水面进行排除。

b:对于上一步得到的前景图像,进行8*8像素的合并,得到注意力图像pa。具体做法是:由于上一步拿到的前景图像是二值图像,把8*8小窗口内的数值为1的像素进行统计,作为新图像中一个像素的灰度值。窗口和窗口之间不重叠,这样原始图像的尺寸在长宽都缩小8倍,该图形的强度能够模拟人眼对动态区域的关注度。下面的步骤中所有生成的中间图像和使用到的图像,尺寸都是原始视频图像的1/8,不再赘述。把这张图像保存下来供下一帧使用。

c:用上一步得到的注意力图像pa,结合之前记录在内存中的上一帧注意力图像pa’,判断出每一个位置(缩小1/8后)的方向,得到一张前景流向图像pd。这里做一个假设:注意力的强度是从上一帧流到当前帧的,每一个位置(像素)都接收来自上一帧这个位置周围固定区域内的强度,每一个位置也流向下一帧周围固定区域的位置,没有新的强度生成或消失(实际不可能,只是做一个简化但是不影响效果),至于流出的量以及接收的量和对应位置的强度成比例(也是一种不影响结果的简化),这样做就可以捕捉流动的效果。具体为:

c1:把考察的局部区域大小设为10*10,也就是某个位置(坐标)周围-5到+5的区域。这里默认的是1080p分辨率的视频,对于其他分辨率做适当修改即可。

c2:先计算上一帧注意力图像pa’每个像素对当前帧pa四周的影响,也就是计算出当前帧注意力图像pa对应的局部区域内强度总和,把pa’中该位置的强度除以这个总和得到一个系数,下一步考察当前帧pa的时候就可以按pa的强度乘以这个系数,计算出一个近似的流入量。

c3:计算当前帧pa每一位置,对周围10*10区域内的上一帧强度流入量。按c2描述,只需要以当前帧强度乘以上一帧每个位置的系数即可。

c4:这一步要统计每个方向的流入强度。由于需要捕捉水在空中下落的过程,因此只需要对垂直方向敏感即可。用两个临时变量来分别记录向上、向下的流量总和。

c5:比较这两个临时变量,就可以得到当前帧pa注意力强度在每个位置的流向,这里只分向上还是向下。

需要注意的是,这一步我们是用一个简化的模型来模拟一个流动的过程,因为只和上一帧结果由联系,因此这种不精确性不会累积下去。

由于重力的作用,泼水、倒水的过程水是一个持续下落的过程,因此这种近似方法足够捕捉这样的一个过程。实际操作中对于下落水体的最下端部分有非常好的效果,而其他部分可能方向性不好计算,但是也足够我们用来判断泼水的过程。

c6:这样就得到当前帧注意力图像的流向图pd,已知每个位置是向上流的还是向下流的。这张图需要保存起来供下一帧的计算使用。

d:步骤c中只建立起两帧之间的联系,但我们的目标是捕捉水从容器到河里的整个过程,因此需要把连续向下的过程捕捉到。用“历史”来表明其保持同一方向运动的时间长度。

d1:考察当前帧注意力流向图pd中每个位置,以10*10的范围内,在上一帧注意力流向图pd’中的相对位置上进行统计。用两个临时变量来累积比较上一帧流向在两个方向上的强度,这个强度由上一帧注意力图的强度pa’来加权。判断出是否保持流向。

例如当前帧某个位置为{x0,y0},且流向向下,那么就在上一帧流向图pd’中考察坐标在x∈{x0-5,x0+5},y∈{y0-5,y0}的区域。分别统计向下、向下的像素,每个像素乘以上一帧注意力的强度。比较两个累积量的强度,如果上一帧目标区域向下的强度大与向上的强度,那么就说当前帧保持流向。

d2:如果当前帧未保持流向,那么把当前帧的历史设为0。如果保持流向,则需要累积之前之前帧的历史。

d3:对于持续流向的像素,按当前帧位置流向找到上一帧对应区域(例如该像素流向向下,就在其相对的上部进行统计,类似d1),找到相同流向的像素,统计这些像素的平均历史(即按目标位置在ph’上的值进行平均)。把这个历史平均值之加1作为这个位置的新的历史值。

d4:把每个位置的历史记录成一张图像ph保存下来,这样得到的图中值就能够反映流入的强度保持这个方向多久。

特别的,对于一个泼水、倒水的问题,一般下落的过程有15帧以上,考虑到历史这个值会被平均拉低一些,因此选择5作为阈值。并且在这个问题中只要考虑向下的持续运动即可。在实际情况种,步骤d可以滤除绝大部分的非目标像素。因此仅仅凭借流量历史图像,就能够把泼水的过程分离出来。

e:如果当前帧这个位置的历史为0,那么不需要计算距离,直接设为0即可。对于历史不为0的位置,和步骤d类似,对于每个像素,找到对应方向的范围内,相同方向的位置(同步骤d3中的查找方式),统计其在垂直方向的距离平均,以及加上这些位置上一帧的距离pl的平均,就可以得到一个持续下落的距离,这个值代表当前帧这个像素保持下落的长度,把每个像素计算出的距离记录在一张图上pl。

例如假设当前考察的是位置{x0,y0},其流向向下,那么如果在上一帧流向图中{x0-1,y0-4}位置,其流向也向下,那么在垂直方向的距离是4。把所有符合的距离都加起来除以个数,再考察所有符合条件的位置他们的距离图pl’中的距离加起来除以个数,把这两个值相加就是{x0,y0}的持续下落距离。

需要说明的是,这一步对识别并不是必须的,但是可以增加准确性,以及我们可以知道水体下落大概的距离,这样就可以在图像中画出发生泼水的大致区域。

f:考察步骤d中找到的持续历史足够长的像素,利用外部输入的河道位置mask图,可以判断出是否发生了向河道内泼水的行为。河道位置识别并不是本实施例的重点,这里视为已标注图像。由于其在重力作用下速度很快,也可以利用这一点,使用步骤e的距离来轻松排除例如行船的干扰,但这不是本实施例的重点。

g:利用步骤d中符合历史长度条件的像素,结合河道位置图的判断,如果在河道内找到符合阈值的像素,把这些像素记录下来。在一定的时间范围内,相对靠近区域内找到的像素都合并起来。直到一定的时间间隔内,例如24帧(1秒)没有发现新的像素,那么就作为一个结果推送出去。可以统计这些像素的重心,以及步骤e的距离,画出一个正方形框,就是发生泼水的区域,有利于取证人员快速找到发生的位置。

较佳的,本实施例,利用视频图像的动态检测识别泼洒的水体,通过跟踪倒出过程中水体的轨迹过程来判断是否发生了向河道内泼水和倒水的行为。使用混合高斯模型进行前景的提取,并且通过合并二值图的方式来得到类似人眼注意力的强度图。利用计算局部近似流向的方式来建立起前后帧注意力流动的过程。建立起前后帧之间的关联。利用前后帧流向来和注意力强度来判断是否保持向一个方向运动。将保持流动方向的像素继承来自前一帧的历史和距离,建立起保持同向的流动的长时关联。对未保持流向的像素,其历史和距离做打断处理,排除非目标事件的干扰。利用保持流向的时间长度和河面标注位置进行综合判断,识别向河道泼水和倒水的过程。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1