2016-10-23 145 views
0

這個問題困擾了我很長一段時間。基本車輛計數程序包括:1.識別車輛。 2.通過功能跟蹤車輛。然而,如果在時間t發現車輛#1,則在t + 1時程序開始追蹤車輛,但是#1也可以通過識別過程找到,然後t + 2程序將兩個車輛跟蹤,但實際上只是框架中的一個#1。公認的車輛如何避免重複檢測?使用opencv跟蹤車輛軌跡

在此先感謝!

回答

1

如果我理解正確,則擔心檢測到您已跟蹤的對象(缺少檢測器/跟蹤器通信)。在這種情況下,您可以:

  • 前檢查 - 檢測過程中排除的區域,在那裏你已經跟蹤物體或
  • 後的檢查 - 丟棄檢測對象,是附近跟蹤者(如果出於某種原因您的方法無法進行「選擇性」檢測)

有幾種可能的實現方式。

  1. 面膜。創建一個二進制掩碼,其中靠近被跟蹤對象的區域被「標記」(例如,在跟蹤對象附近的區域和其他地方的零區域)。給定這樣一個掩碼,在檢測到特定位置之前,您可以快速檢查是否有某個事件正在被跟蹤,並放棄檢測(預檢方法)或刪除檢測到的對象,如果堅持使用後檢查的方法。

  2. 蠻力。計算特定位置與每個跟蹤位置之間的距離(您也可以檢查重疊區域和其他特徵)。然後,您可以丟棄與已經跟蹤的對象太接近和/或類似的檢測。

讓我們考慮哪種方式更好(以及何時)。

  1. 面膜需要O(ñ)操作所有跟蹤的對象添加到面具和O(中號)操作來檢查所有感興趣的位置。這是O(Ñ + 中號)= O(MAX(Ñ中號)),其中Ñ跟蹤對象的數量,M是檢查位置(檢測到的物體,例如數)。哪個號碼(NM)將取決於您的應用程序。額外的內存也需要保存二進制掩碼(通常它不是很重要,但它又取決於應用程序)。

  2. 蠻力需要O(Ñ * 中號)操作(每種中號位置抵靠Ñ候選選中)。它不需要額外的內存,並允許在檢查過程中執行更復雜的邏輯。例如,如果對象在一幀內突然改變大小/顏色/任何內容 - 我們可能不應該跟蹤它(因爲它可能是一個完全不同的遮擋原始對象的對象),而是執行其他操作。

綜上所述:

  1. 面膜是漸近更好,當你有很多的對象。如果在檢測過程中進行滑動窗口搜索等操作幾乎是必不可少的,並且可以排除某些區域(因爲在這種情況下,您可能會有很大的空間)。您可能會使用預檢
  2. 蠻力是確定的,當你有幾個對象,需要做涉及不同屬性的檢查。使用後檢查是最有意義的。

如果您正好需要的東西其間的 - 你必須在面膜更有創意,要麼編碼對象屬性不知何故(達到恆定的查找時間),或使用更復雜的數據結構(加快「蠻力「搜索)。