2011-05-11 49 views
0

我對OpenCV比較陌生,我正在開發一個項目,我需要計算網格上的對象數量。網格是圖像的背景,每個空間都有一個對象,或者沒有;我需要統計目前的數字,而且我不知道從哪裏開始。我在這裏和其他地方搜索,但似乎無法找到我在找什麼。我將需要跟蹤未來網格的空間數量,因此我最終還需要知道每個網格空間是否被佔用或空置。我還沒有要求一個編碼的例子,但是有沒有人知道任何來源或教程來完成這個任務,或者是一個類似的嗎?謝謝你的幫助!使用OpenCV計算網格上的對象

更多詳細信息:圖像將來自穩定安裝的攝像機,物體的形狀相對一致,但尺寸和顏色各不相同。

回答

1

我先回答幾個問題:

  1. 將一個對象被完全封閉在一個網格單元?或者它可以放置在網格線的頂部嗎? (換句話說,物體是否會隱藏相機的一條線?)
  2. 一個單元格中是否會有多個物體?
  3. 對象是否可以佔用多個單元格? (與問題1密切相關)

給出這些問題的合理答案,我相信問題可以分解爲兩部分:首先確定每個網格空間的中心。爲了計算對象,您可以對該區域進行採樣,看看是否有任何「不背景」的東西。

然後,您可以假定網格空間由四個強大的,定期放置的角落特徵定義。 (爲了討論,我假設你已經根據需要進行了初始圖像準備:直方圖均衡,降噪高斯模糊等)。從那裏,您可以嘗試一些OpenCV的方法來查找角落(哈里斯角落探測器,cvGoodFeaturesToTrack等)。很可能你可以借用OpenCV的平方查找示例中的一些技術(samples/c/square.c)。對於這個任務,假定網格中心只是每組「相鄰」(或足夠接近)拐角的質心就足夠了。

或者,您可以使用霍夫變換來識別圖像中的主要水平線和垂直線。然後,您可以確定交點以確定每個網格單元的範圍。這種實現可能更具挑戰性,因爲從「附近」頂點推斷結構(或鄰接)以找到網格中心似乎更困難。

+0

一般來說,對象在很大程度上(儘管不總是完全)在網格內,但單元格中的多個對象將僅被視爲一個對象。我正在考慮爲每個方塊加載一個帶有ROI座標的預配置文件,該文件不會移動或改變方向,然後使用空白網格間隔圖像與對象。這會起作用嗎?另外,有沒有辦法知道一個單元格的完整程度(找到了多少差異),所以我可以將它設爲閾值以避免噪音或太小的物體? – Matt 2011-05-17 22:56:44

+0

先驗信息總是好的!如果您能確信投資回報率不會改變,您的問題就會大不相同。正如你注意到的那樣,你可以從觀察圖像中「減去」空ROI。我建議按百分比確定佔用狀態(這很直觀,易於計算)。鑑於上述情況,您知道ROI中的像素數量,並且可以計算「亮」像素的數量(在二進制閾值操作之後)。 – Throwback1986 2011-05-18 14:56:56