2011-08-10 140 views
12

我想開發一個使用OpenCV(或Emgu CV)的「人數統計系統」。人數統計系統

請指導我如何實施或引導我使用一些示例或開源項目。

(我已經做了一些工作:提取DIFF然後門檻刪除背景,利用運動歷史和像,仍然沒有很好的效果)

編輯1:我指望較高的人流量(一打他們可能會同時通過)。

編輯2:它必須至少80%準確。人們走過幾乎5米寬的門。問題是我無法控制相機的位置或角度。相機在距離2.5米高的地方從10米距離呼喊。

謝謝

+2

您可能想指定的一些觀點:系統必須有多精確?什麼是「高人流量」?這是否意味着它有10個人的寬度,或者它是大量人們通過的1米大的拱門? – Tipx

+0

感謝您的評論。我已更新了我的問題。 –

+0

你還沒有描述「人流」的範圍。我們有多少人在聊天?多人經常同時進入嗎?你說你的系統「仍然沒有好的結果」,儘管與背景不同。你能描述你已經看到了什麼樣的結果以及爲什麼他們有問題嗎? – Gravity

回答

3

退房自帶的OpenCV的最新版本(> = 2.2)的HOG行人檢測。

請參閱modules/objdetect/src/hog.cppsamples/cpp/peopledetect.cpp在OpenCV源代碼。遺憾的是,目前還沒有官方文檔。

+0

謝謝;我已經檢查過HOG。這是不適合擁擠的流量,它是如此不可預測。 –

6

如果您將人員計數系統稱爲一個系統來統計房間中的人,那麼我建議您使用帶有2個lazers(普通lazer玩具工作)和2個光敏電阻器的微控制器來實現硬件。對於微控制器,我建議您使用Arduino。然後創建一個具有Seri​​alPort對象的C#應用​​程序,並讀取arduino通過USB發送的數據。例如,arduino將發送1給「進入房間的人」,0發送給「有人離開房間」。然後可以在C#中輕鬆完成日誌記錄和統計。

Arduiono網站:here

光敏爲$ 1:here

該解決方案是一個很大便宜,easyer比使用一個攝像頭,是一個相當不錯的品質來實現。

希望我幫你。

+0

謝謝;但我正在計算高密度人流。 –

+0

密度並不重要,野火隊一直在響應。 更具體地描述你的項目。你是指從門口進出房間的人還是其他的東西? – Bosak

+0

順便說一下,我給你的想法是我會做的,因爲我也在做一個人數統計系統。但對於有1門的人和幾乎所有人都會一個接一個地去的商店。如果你有任何進展或解決方案,請與我分享。 :) – Bosak

2

是人們唯一的一種場景「實體」的?如果情況並非如此,你是否在考慮在場景中出現其他類型的事物?因爲如果是這樣的話,你可以只計算出現在或來自現場的斑點。這可能聽起來有點天真,但我會採取某種運動圖像,按羣集中的距離分組運動像素。您的距離度量標準可能會考慮到一些限制,例如人們會「經常」站立,因此羣集中的像素應該圍繞某種迴歸線(如果相機與de floor平齊,則爲直線)。不必在場景中跟蹤他們,只是在他們進入或離開時注意他們,儘管您會遇到一些問題,例如,人們在場景中自行進入併成對或成組離開。 ..祝你好運:)

0

這真的取決於相機的位置。假設您可以獲得圖像中人物的正面輪廓:

此問題基本上是人臉檢測和識別。

尋找面孔的方法有很多,但這是我稍微熟悉的方法。

對於人臉檢測,您需要對膚色進行圖像分割。這將提取皮膚區域。 [手臂,胸部(適合那些穿V字形上衣的人),臉部,腿部等]然後,您需要將皮膚區域的輪廓與訓練過的臉部輪廓對齊。

[你需要使用特徵臉創造一個什麼樣的臉看起來像普通的資料]

如果皮膚區域排隊,不從配置文件太遠devate,那麼它被認爲是一個面對。一旦臉部被確認,然後將其添加到特徵臉數據存儲[用於識別]。爲了節省處理時間,如果您正在查找以前的臉部,您可能需要考慮限制搜索區域。 [鑑於幀速率和上次看到此人的時間]

如果您指的是「人羣流量」,我認爲您只是指人羣中人臉的密度。

現在您已確認視頻中的移動對象是一個人。現在你只需要注意一下,然後確保你不再把它們視爲一個新的人。

這種方法:真的取決於您檢測人臉區域的能力。如果視頻中的人看不起,不適合訓練的數據等等,那麼這可能不起作用。如果有人在視頻中戴太陽鏡,也可能會產生影響。 [可能會被認爲是一個「新面孔」]

0

我認爲如果你有很多閉塞的密集人羣,你必須使用一些機器學習算法,例如你可以使用隱式形狀模型來獲取特徵。