4

我一直在研究一個項目一段時間,以檢測和跟蹤(移動)從無人機捕獲的視頻中的車輛,目前我正在使用一個SVM訓練本地特徵的袋特徵表示從車輛和背景圖像中提取。然後,我使用滑動窗口檢測方法嘗試對圖像中的車輛進行本地化,然後我會跟蹤這些車輛。問題是這種方法的速度很慢,我的探測器不如我想象的那麼可靠,所以我得到了很多誤報。車輛分割和跟蹤

因此,我一直在考慮試圖從背景中分割汽車以找到大致的位置,以便在應用分類器之前減少搜索空間,但我不知道如何解決此問題,並希望有人能夠幫助?

此外,我一直在閱讀有關使用圖層進行運動分割的知識,使用光流技術通過流模型對幀進行分割,是否有人對此方法有任何經驗,如果可以,請提供一些信息,將適用於我的問題。

下面是一個樣本視頻的兩幀

幀0: enter image description here

框架5: enter image description here

回答

11

Assumimg你的車在移動,你可以嘗試估計地平面(路)。

您可以通過提取特徵(SURF而不是SIFT,速度),在幀對上匹配它們以及使用RANSAC求解單應性來獲得下降地平面估計值,因爲3d中的平面根據兩者之間的單應性相機框架。

一旦你有了你的地平面,你可以通過查看不會根據估計的單應性移動的像素集羣來識別汽車。

更復雜的方法是在地形上進行Motion from Motion結構。這只是假設它是剛性的,而不是平面的。


更新

我在想,如果你能,你將如何去尋找那些不根據估計的單應移動的像素集羣擴張?

當然。假設IK是兩個視頻幀,HIK中的功能的單應映射功能。首先,根據H,您將I變形爲K,即您計算變形圖像IwIw([x y]')=I(inv(H)[x y]')(大致爲Matlab表示法)。然後你看看平方或絕對差異圖片Diff=(Iw-K)*(Iw-K)。根據單應性H移動的圖像內容應該略有差異(假設圖像之間的恆定照度和曝光)。違反H如移動汽車的圖像內容應該脫穎而出。

對於Diff中的高誤差像素組,我將從簡單的閾值開始(「大於X的每個像素差異大於X是相關的」,可能使用自適應閾值)。閾值圖像可以通過形態學操作(擴張,侵蝕)進行清理,並與連接的組件聚集在一起。這可能太簡單了,但它很容易實現第一次嘗試,而且應該很快。想看更多的東西請看Clustering in Wikipedia。 2D Gaussian Mixture Model可能很有趣;當你用前一幀的檢測結果初始化它時,它應該非常快。

我對你提供的兩個框架做了一個小實驗,我不得不說我自己有多驚訝它有多好。 :-) 左圖:您發佈的兩幀之間的差異(用顏色編碼)。 右圖:將它們與單應性匹配後的幀之間的差異。其餘的區別顯然是動車,而且它們對於簡單的閾值處理來說足夠強大。您當前使用的,可以野趣它與我的建議相結合的辦法

Frame differences before and after image alignment

思考:

  • 你可以嘗試在差分圖像中學習和分類汽車D代替原始圖像。這相當於學習汽車運動模式的外觀,而不是汽車看起來像什麼,這可能更可靠。
  • 您可以擺脫昂貴的窗口搜索並僅在具有足夠高價值的D區域運行分類器。

一些補充說明:

  • 從理論上講,汽車甚至應該站出來,如果他們不動,因爲他們不是平的,而是給你的現場,相機的分辨率,這種影響可能是距離太微妙了。
  • 如果您願意,您可以使用Optical Flow替換我方案中的特徵提取/匹配部分。這相當於識別從地面一致的幀到幀運動「伸出」的流向量。然而,它可能容易出現光流中的異常值。您也可以嘗試從流向量中獲得單應性。
  • 這很重要:無論您使用哪種方法,一旦您在一個框架中找到了汽車,您應該使用此信息來使您在連續框架中搜索這些汽車的方式更具可操作性,從而提供更接近老舊(卡爾曼濾波器等)。這就是追蹤的全部內容!
+0

嗨DCS感謝您的回答,我想知道您是否可以擴展如何尋找不會根據估計的單應性移動的像素集羣? – 2013-03-13 23:41:12

+0

@JonoBrogan:我更新了我的帖子來回答你的問題。 – DCS 2013-03-14 08:25:18

+0

@JonoBrogan:我做了一個關於你的框架的實驗,它很好地工作,見上文。 – DCS 2013-03-14 08:41:50

1
  1. 如果汽車在你的視野的數量始終保持不變,但走動,那麼你可以使用光流...它會給你很好的效果對靜止背景......如果數量的汽車正在改變,那麼你需要在OpenCV中調用GoodFeaturestoTrack函數,並在一定數量的幀後再次使用光流跟蹤汽車。
  2. 您可以使用背景建模來爲背景建模,因此汽車始終是您的前景。最簡單的示例是幀差異...減去之前的幀當前幀。 diff(x,y,k) = I(x,y,k) - I(x,y,k-1)。當您的汽車在每個車架中移動時,您將獲得他們的位置。
  3. 這兩個過程將正常工作,因爲你有我仍然背景我想.. check this link找到光流可以做什麼。