zoukankan      html  css  js  c++  java
  • 建模

    分析与求解:

    对于问题1:题目要求在不包含动态背景、摄像头稳定拍摄的监控视频中提取前景信息。

    首先需要对前景和背景进行明确的定义:前景是指画面中能够表现出一定的空间关系或者人物关系的目标;背景是指陪体,往往是整个环境的组成部分。由于题目中已知背景信息几乎稳定不变,而帧差法恰恰适用于运动目标和背景的灰度相差较多,并且背景变化很小的视频图像处理。因此,可以采用帧差法对监控视频进行简单却有效的处理,以相邻帧之间像素点灰度值的差值作为判断依据,进行前景目标的提取。I(t)表示第t帧的某个像素点的灰度值,则该像素点的计算如下:

    |I(t)-I(t-1)|<T           背景

    |I(t)-I(t-1)|>=T          前景

    当然,在实现上会有一些优化方法,比如三帧差法等。

    此外,这样计算出的前景主要集中在目标的边缘,还需要使用MATLAB中自带的膨胀、腐蚀、填充和滤波等函数进行图像的形态学处理。可以给一个我做的效果图:

     

    效果其实算不上太好,但基本实现了目标。帧差法相关的代码,以及后面还会介绍到的混合高斯模型的代码,都可以使用Github中的开源项目:

    https://github.com/underdoeg/ofxBGS

     

     

    对于问题2:动态背景、摄像头稳定的视频。

    主要须要解决的是消除动态背景在前景提取时的影响,这里可以使用混合高斯模型,同样使用的是上面链接给出的代码。

    混合高斯模型的核心思想是:背景中的每个像素点在各个帧中的灰度值服从一定的统计分布规律,而任意形状的概率分布均可以使用多个高斯分布去近似拟合。所以,我们可以对任一像素点进行建模:

                                                                          

     

    X表示该像素点灰度值,η为高斯概率密度函数,w属于不同函数的权重,μ和Σ分别是t时刻第n个高斯模型的均值向量和协方差矩阵。

    在获得概率分布函数后,可以对新来的像素点进行判断,如果与现有模型的某个分布相匹配,则认为该像素点是背景;否则提取为前景。通过这种方式,可以尽可能消除背景抖动的影响,当然,最后也需要卡尔曼滤波和形态学处理等操作。展示一个结果:

                                                                       

     

    其实可以发现,因为腿后面草的颜色跟裤子太像,还是很难提取完全的。

    对于问题3:在摄像头晃动的情况下提取前景目标。

    这个问题其实麻烦很多了,摄像头的晃动会导致背景变化剧烈,使用高斯混合模型基本上已经很难做到前景目标有效提取。网上经常说的一个思路是使用光流法,获得每一帧的运动场,通过运动场判断出物体的运动变化,进而提取前景。但我经过实现测试后发现,效果其实跟混合高斯差距真的不大,当然,这有可能是因为官方给的视频实在太抖了。

     

    最后呢,我是想了个比较取巧的办法:一方面仍然使用混合高斯模型进行前景提取;另一方面使用Faster RCNN进行目标框定。框就作为一个噪声消除的依据,然后有效提取出前景目标。

    关于Faster RCNN的描述网上已经非常多了,我就不废话了,有兴趣的可以直接看别人的博客,铺天盖地的不怕找不到。我用的代码是Shaoqing Ren在Github上的开源项目:https://github.com/ShaoqingRen/faster_rcnn

    最后稍微展示一下我做的效果吧:

                                                                    

     

     

    对于问题4:多角度视频的前景提取。

    这一部分其实最理想的做法是用POM算法,但是一方面是时间问题,一方面代码确实比较复杂,我并没有实现出来,只采用了一个很简化的方法,这里就不献丑了。给出POM的链接,有兴趣的可以研究一下指点指点我:

    http://cvlab.epfl.ch/cms/site/cvlab2/lang/en/software/pom/index.php

    http://cvlab.epfl.ch/cms/site/cvlab2/lang/en/research/surv/multi-people-tracking

    对于问题5:异常事件预测。

    这个题我没有在网上找到比较靠谱的算法,就自己简单的设计了一个,代码我写的太丑了,只给大家说下思路好了:基本思想还是使用Faster RCNN,以框的坐标代表人的位置,以帧间框的移动预测人的运动情况,再使用向量相关的一些计算和聚类的算法,预测出群体性事件。这里的关键之处是聚类的方式,还有向量运算后对事件的判断规则。

    基本上就这么个思路做下来了这次数模,之前并没有接触过CV,本以为靠着之前泛泛的了解能把前几问迅速解决的,结果惨不忍睹。索性四天里两天没睡,还是做完了,期待能有好的结果。

    总结一下经验呢,第一是慎重选题,还是要充分查阅资料再做决定;第二个呢,平时还是多动手实现代码,光看别人的博客看出花也没用。

  • 相关阅读:
    .net注册iis
    hdu 1081To The Max
    hdu 1312Red and Black
    hdu 1016Prime Ring Problem
    hdu 1159Common Subsequence
    hdu 1372Knight Moves
    hdu 1686Oulipo
    hdu 1241Oil Deposits
    hdu 1171Big Event in HDU
    hdu 4006The kth great number
  • 原文地址:https://www.cnblogs.com/ziyoufeixiang/p/7588853.html
Copyright © 2011-2022 走看看