OpenCV 視訊人數統計研究
最近有空研究了一下基於Opencv的視訊人數統計。總結了一下,視訊人數統計系統的工作流程主要包括以下幾個部分:
1.視訊捕獲
從視訊源(攝像頭或視訊檔案)獲取到視訊影象資料。
2.目標提取(背景建模、前景分析)
由視訊影象分割出視訊影象中的運動區域。
常見的方法:高斯背景建模,幀差法,三幀差法。
3.目標識別(模式識別、特徵點分析)
根據目標特徵分析得到具體目標。比如人臉識別、頭肩部識別等。
OpenCV裡可以使用Haar特徵 、級聯分類器來進行目標檢測。但分類器的訓練需要從事先準備好的成百或上千張正面或反面樣本中訓練得到,整個過程會比較複雜,這種方法應該會達到很好的檢測效果 。OpenCV也自帶了一些已經訓練好的包括人眼、人臉和人體的分類器(位於OpenCV安裝目錄\data\haarcascades目錄下,分類器是XML型別的檔案),可以直接使用這些分類器來進行影象檢測,但由於使用的環境不同,這些分類器不一定是最優的,檢測效果不一定會很好,這些現成的分類器只是提供了一個基本的參考,在實際使用時,還需要根據實際環境對分類器中的配置引數做一些調整和優化才能使檢測結果比較準確。當然,此種方式的開銷也會大,而且只有OpenCV2.0版本以上才支援,因此在嵌入式領域,這並不是一個很好的方式。
4.目標跟蹤
檢測目標在每一幀的空間位置。從而得到目標的運動估計。
基本方法:
直方圖特徵匹配:根據目標區域的顏色直方圖特徵進行目標匹配。分別對運動目標的前後兩幀計算顏色分佈的直方圖,如果兩者的顏色直方圖最接近,則認為目標匹配成功。
運動目標連續性匹配:利用相鄰兩幀影象中待匹配的目標在時間和空間上的相關性。由於視訊中相鄰兩幀間時間間隔很短,可以認為在相鄰兩幀間目標是做勻速運動。這樣,可以根據當前目標的運動速度和方向來預計目標在下一幀的位置,如果下一幀的所有運動目標中存在與待匹配目標的預期位置最接近的,則認為目標匹配成功。
OpenCV裡可以使用CamShift演算法直接對彩色影象進行跟蹤。它的基本原理也是通過直方圖特徵來進行目標匹配。測試了一下,在對我使用的視訊進行跟蹤時,效果不是很理想,會出現誤跟蹤的情況,沒有達到預期的效果,而且CamShift演算法是直接對彩色影象進行跟蹤,開銷會比較大,這裡並不是說CamShift演算法不好,其實視訊影象處理本身就跟具體的外界環境有關,每一種影象演算法一般都是針對特定的環境,並不是通用的,在某些環境下,比如目標物體的顏色跟環境差異比較明顯,CamShift演算法可能會達到比較好的效果。
5.軌跡分析
根據目標的運動軌跡計算出目標的運動方向和位移等,判斷目標是進入還是離開指定區域,從而對目標進行數目統計。
程式設計實現
以下是採用運動目標連續性匹配演算法實現的視訊人數統計系統截圖。開發環境是Opencv2.3.0+VS2005。
具體演算法參考了論文《一種基於人頭特徵的人數統計方法研究》 作者:顧德軍 伍鐵軍,論文介紹的很詳細。這裡就不再鰲述了。測試視訊檔案從優酷(地址:http://v.youku.com/v_show/id_XMTY2MDY1OTk2.html)上找到,從視訊檔案可以看出拍攝視訊攝像頭的是斜向下安裝,此種方式得到的二值影象的人頭特徵不是很明顯,因而不太好利用人頭特徵來進行目標識別。這裡只是簡單利用了運動目標面積大小來做了匹配,當多人之間互相有重疊或包含其它物體時,就不能很好的區分開來。
一種改進的方法是攝像頭採用頭頂式的安裝,這樣經過二值化處理的人頭特徵應該會比較明顯一些,而且人頭之間不會有重疊的現象,準確率會更大一些。但由於沒有該環境下的視訊資料,因次沒辦法來驗證識別率到底如何。如果有對這方面感興趣的朋友,可以一起來交流學習。
參考文獻:
1.《一種基於人頭特徵的人數統計方法研究》 作者:顧德軍 伍鐵軍
2.《基於視訊的客流技術系統的研究》 作者:田京雷 畢勝
3.《智慧視訊中基於機器學習的自動人數統計》 作者:賈彗星 章毓晉
---------------------
作者:firehood
來源:CSDN
原文:https://blog.csdn.net/firehood_/article/details/8279014
版權宣告:本文為博主原創文章,轉載請附上博文連結!
相關推薦
OpenCV 視訊人數統計研究
最近有空研究了一下基於Opencv的視訊人數統計。總結了一下,視訊人數統計系統的工作流程主要包括以下幾個部分: 1.視訊捕獲 從視訊源(攝像頭或視訊檔案)獲取到視訊影象資料。 2.目標提取(背景建模、前景分析) 由視訊影象分割出視訊影
OpenCV視訊分析與物件跟蹤C++(四)視訊中移動物件統計
#include <opencv2/opencv.hpp> #include <opencv2/xfeatures2d.hpp> #include<opencv2/face.hpp> #include<iostream&
用HttpSessionListener與HttpSessionBindingListener實現在線人數統計
response size 監聽 參數 對象 ner 當前在線 想法 ignore 作者1:try出愛的異常 作者2:長安散人 下午比較閑(其實今天都很閑),想了一下在線人數統計方面的實現,上網找了下這方面的知識,最初我的想法是,管理session,
QQ在線人數統計圖數據解析
bin 部分 .com qq在線 click con 統計圖 新疆 漢字 轉載請註明出處:http://blog.csdn.net/xiaoy_h/article
1075: 聚餐人數統計
nbsp 題目 sca scan swe fine 男人 data clas 題目描述 馬克思手稿中有這樣一道趣味數學題:男人、女人和小孩總計n個人,在一家飯店裏吃飯,共花了cost先令,每個男人各花3先令,每個女人各花2先令,每個小孩各花1先令,請用窮舉法編程計算男人、
學習筆記之——Opencv視訊處理模組
視訊訊號是重要的視覺資訊來源。視訊由一系列影象構成,這些影象稱為幀。幀以固定的時間間隔獲取(稱為幀速率,通常用幀/秒表示)。大多數計算機視覺方面的應用都是基於視訊來處理的,為此本博文作為Opencv視訊處理模組的學習筆記~ 幀的資料型別也是Mat。 讀取視訊序列。要從視訊序列讀取幀,只需
OpenCV視訊目標跟蹤及背景分割器
目標跟蹤 本文主要介紹cv2中的視訊分析Camshift和Meanshift。 目標: 學習Meanshift演算法和Camshift演算法來尋找和追蹤視訊中的目標物體 Meanshift演算法: meanshift演算法的原理很簡單。假設你有一堆點集,例如直方圖反向
實用程式碼Python(四)Opencv視訊
程式碼 import matplotlib.pyplot as plt import cv2 cap=cv2.VideoCapture(0) # Define the codec and create VideoWriter object fourcc = cv2.VideoWrite
Opencv 視訊
Opencv讀取視訊資料下載 OpenCV中常見的視訊方式是while迴圈讀取,可是,當遇到巢狀迴圈呢 1、常見的while迴圈 ,沒有巢狀迴圈 cv::VideoCapture capture(“d:/test/demo.avi”); if (!capture.isOpened
仿【數字】無限上下滾動增加數值-計數器-仿直播人數統計
css: .sdvm_num{! font-size: 14px;color:red;display:inline-block;vertical-align:middle;margin-left:8px;} .sdvm_num i{width:70px;height:52p
Opencv視訊分析---使用背景減法方法
理論 背景減法(BS)是用於通過使用靜態相機生成前景蒙版(即,包含屬於場景中的運動物件的畫素的二值影象)的常用且廣泛使用的技術。 顧名思義,BS計算前景蒙版,在當前幀和背景模型之間執行減法,包含場景的靜態部分,或者更一般地說,考慮到觀察場景的特徵,可以將所有內容視為背景。
【備忘】從基礎到深度學習OpenCV視訊教程計算機視覺影象識別實戰Python C C++
├─第01講 工欲善其事必先利其器-影象處理基礎 │ cv第一次資料.rar │ 第一課.mkv │ ├─第02講 初探計算機視覺 │ cv_第一二講.pdf │ cv第二次資料.rar │ 第二課.mkv │
OpenCV視訊讀取播放,視訊轉換為圖片
幾個有關視訊讀取的函式: VideoCapture::VideoCapture VideoCapture可以從檔案中或者攝像頭中讀取視訊,這是提供給C++的介面的,C的介面是CvCapture結構。 <span style="white-s
ZZULIOJ.1075: 聚餐人數統計
1075: 聚餐人數統計 題目描述 馬克思手稿中有這樣一道趣味數學題:男人、女人和小孩總計n個人,在一家飯店裡吃飯,共花了cost先令,每個男人各花3先令,每個女人各花2先令,每個小孩各花1先令,請用窮舉法程式設計計算男人、女人和小孩各有幾個。 輸入 輸入兩個正
opencv 視訊中人臉檢測
opencv 視訊中人
線上人數統計,解決了關閉瀏覽器視窗,釋放session的問題
在頁面裡頁設定一個退出按鈕.呼叫quit.jsp=它的內容是:h>我們用一個quit.jsp來處理使用者退出系統的操作,quit.jsp負責登出session,及時釋放資源。>D6T©達內科技論壇 -- 達內科技論壇 uj&B ·登出session。Z5K&©達內科技論壇 --
使用HttpSessionListener和ServletContextListener實現線上人數和歷史訪問人數統計的問題
以下是我的程式,但是重新開啟瀏覽器線上人數不會變化,歷史訪問人數只會在開啟Tomcat報錯重啟伺服器後才會變化 package com.test.listener; import javax.servlet.ServletContext; import javax.ser
OpenCV視訊播放操作
使用VideoCapture類實現視訊播放: #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc,
Java監聽器實現網站線上人數統計
1.監聽器定義 監聽器也叫Listener,是Servlet的監聽器,它可以監聽客戶端的請求、服務端的操作等。通過監聽器,可以自動激發一些操作,比如監聽線上的使用者的數量。 2.常見的監聽器 1)ServletContextAttribut
【Jsp】利用Application物件實現訪問人數統計功能
利用Application物件實現訪問人數的統計很常見,但是一些書籍講解這一技術的時候,往往沒有做完整。一旦伺服器重啟,由於Application會被銷燬,重新建立,人數統計則會再一次從零開始。解決方法,個人認為,應該同時利用到資料庫,這樣無論伺服器要重啟或者遭遇到停機什麼