zoukankan      html  css  js  c++  java
  • 【计算机视觉】【视频开发】遗留物检测中的物体遗留和移除检测

    在智能视频监控系统中,遗留物检测是一个很重要的应用,对遗留物的检测基本上都是采取对前景掩膜对应的背景区域不进行更新,这往往又会导致其他的问题,如背景模型的鲁棒性和对环境的适应性等。而且在对遗留物检测中,如果背景中的物体移除,有时又需要对该移除物体对应的背景区域进行更新。这里介绍一种判断物体是遗留还是移除的检测算法,也可以参考论文“moving object detection,tracking and classification for smart video survleillance”。

           对于标注为遗留或移除的前景区域,取其外接矩形对应的对应的背景区域,记为R,然后将该区域向外围扩展,在背景中取一个包含R区域的区域S,计算这两个区域的颜色均值Ar和As,然后求这两个均值的比值,从而进一步判断物体是遗留还是移除。判断准则如下:

                                                                                  

             如果这两个区域的均值的比值满足上式,则认为该区域是物体移除,需要进一步对该区域对应的背景模型进行更新;否则,就是物体遗留,对该区域对应的背景模型不进行更新。为什么该中判断准则有效呢? 在实际中,场景中的背景趋向于同一化,即同一场景的邻近区域比较相似(在室内的情况更是如此),如果是物体遗留,则会引起场景中背景的较大变化,导致均值的变化,进一步直接影响均值比值的较大变化;而物体的移除,则使得移除物体位置变成场景的本来模样,则其均值与其邻域附近的区域的均值很接近;如此,就可以进一步对场景中的物体遗留和移除进行判断。

          实现代码如下:

    // 返回2表示遗留,1表示移除  
    int detectLeftRemove(Mat& background, Rect& rect)  
    {     
        int returnVal = -1;  
        Rect surroundRect;  
        surroundRect.x = std::max(0,rect.x-15); // 外移10个像素  
        surroundRect.y = std::max(0,rect.y-15);  
      
        if ( (surroundRect.y+rect.height+30) > background.rows )   
            surroundRect.height = background.rows- surroundRect.y;    
        else  
            surroundRect.height = rect.height+30;  
      
        if ( (surroundRect.x+rect.width+30) > background.cols )    
            surroundRect.width = background.cols- surroundRect.x;     
        else  
            surroundRect.width = rect.width+30;   
        Scalar S1 = mean(background(rect));  
        Scalar S2 = mean(background(surroundRect));  
        double dist1 = norm(S1);  
        double dist2 = norm(S2);  
        double ratio = 0.0;  
        if ( dist1>= dist2 )  
            ratio = dist2/dist1;  
        else  
            ratio = dist1/dist2;  
      
        if (ratio>=0.85 && ratio<=1.0)    // 相近表示离开( Remove )   
            returnVal = 1;        
        else      // 否则表示遗留(Left)     
            returnVal = 2;    
          
        return returnVal;     
    }  


    http://blog.csdn.net/kezunhai/article/details/9241737

  • 相关阅读:
    使用MobaXterm远程连接Ubuntu,启动Octave,界面不能正常显示
    ABP .Net Core 日志组件集成使用NLog
    ABP .Net Core Entity Framework迁移使用MySql数据库
    ABP前端使用阿里云angular2 UI框架NG-ZORRO分享
    阿里云 Angular 2 UI框架 NG-ZORRO介绍
    Visual Studio 2019 Window Form 本地打包发布猫腻
    VS Code + NWJS(Node-Webkit)0.14.7 + SQLite3 + Angular6 构建跨平台桌面应用
    ABP .Net Core 调用异步方法抛异常A second operation started on this context before a previous asynchronous operation completed
    ABP .Net Core To Json序列化配置
    .Net EF Core数据库使用SQL server 2008 R2分页报错How to avoid the “Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.”
  • 原文地址:https://www.cnblogs.com/huty/p/8517254.html
Copyright © 2011-2022 走看看