Assumimg你的車在移動,你可以嘗試估計地平面(路)。
您可以通過提取特徵(SURF而不是SIFT,速度),在幀對上匹配它們以及使用RANSAC求解單應性來獲得下降地平面估計值,因爲3d中的平面根據兩者之間的單應性相機框架。
一旦你有了你的地平面,你可以通過查看不會根據估計的單應性移動的像素集羣來識別汽車。
更復雜的方法是在地形上進行Motion from Motion結構。這只是假設它是剛性的,而不是平面的。
更新
我在想,如果你能,你將如何去尋找那些不根據估計的單應移動的像素集羣擴張?
當然。假設I
和K
是兩個視頻幀,H
是I
到K
中的功能的單應映射功能。首先,根據H
,您將I
變形爲K
,即您計算變形圖像Iw
爲Iw([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](https://i.stack.imgur.com/qWZ6x.png)
思考:
- 你可以嘗試在差分圖像中學習和分類汽車
D
代替原始圖像。這相當於學習汽車運動模式的外觀,而不是汽車看起來像什麼,這可能更可靠。
- 您可以擺脫昂貴的窗口搜索並僅在具有足夠高價值的
D
區域運行分類器。
一些補充說明:
- 從理論上講,汽車甚至應該站出來,如果他們不動,因爲他們不是平的,而是給你的現場,相機的分辨率,這種影響可能是距離太微妙了。
- 如果您願意,您可以使用Optical Flow替換我方案中的特徵提取/匹配部分。這相當於識別從地面一致的幀到幀運動「伸出」的流向量。然而,它可能容易出現光流中的異常值。您也可以嘗試從流向量中獲得單應性。
- 這很重要:無論您使用哪種方法,一旦您在一個框架中找到了汽車,您應該使用此信息來使您在連續框架中搜索這些汽車的方式更具可操作性,從而提供更接近老舊(卡爾曼濾波器等)。這就是追蹤的全部內容!
來源
2013-03-13 18:02:47
DCS
嗨DCS感謝您的回答,我想知道您是否可以擴展如何尋找不會根據估計的單應性移動的像素集羣? – 2013-03-13 23:41:12
@JonoBrogan:我更新了我的帖子來回答你的問題。 – DCS 2013-03-14 08:25:18
@JonoBrogan:我做了一個關於你的框架的實驗,它很好地工作,見上文。 – DCS 2013-03-14 08:41:50