1

我想從運動相機中分離出移動物體,以便稍後可以對它們應用一些進一步的處理算法,但我似乎已經變得有點卡住了。使用光流識別移動物體

到目前爲止,我正在使用OpenCV並從PyrLKOpticalFlow獲取稀疏的光流。我正在從事的一般想法是找到與圖像中背景點不同移動的特徵,然後找到這些不同移動特徵的聚類作爲移動對象進行進一步跟蹤/處理。我的問題是,雖然我發現了一些使用這種策略的學術論文,但迄今爲止,我還沒有找到一種簡單的方法來完成自己的工作。

使用此光流數據檢測移動照相機中的移動物體的方法是什麼?這甚至是最好的方法嗎?或者我可能忽略了一些更簡單的方法?

回答

2

我設法找到一種或多或少做我想在OpenCV中的方法。

與GoodFeaturesToTrackDetector和PyrLKOpticalFlow(給我prevPts和nextPts)兩個連續圖像之間找到稀疏光流分後,我使用findHomography與RANSAC到運動估計因相機移動,同時排除異常值,由於獨立地移動的物體。然後,我使用perspectiveTransform來扭曲prevPts來解釋相機運動(給我變形的Pts)。然後,我可以將warpedPts與nextPts進行比較,以便找到移動的對象。

最終的結果是,即使相機移動,如果對象是靜止的,那麼在變形的Pts和nextPts中的點之間沒有太大的變化,而當追蹤的點在移動的物體上時有明顯的變化。從運動的接近性和相似性的角度來看,只是將移動點分組。

0

首先 - 正如我從理論中記住的那樣 - 光流實際上在移動相機(不是靜止場景&移動物體)時效果最好。這是合理的,因爲它在鄰域像素內假設相同的流量。這將是一個很好的起點,你可以閱讀有關盧卡斯卡納德方法來了解發生了什麼。

其次,您的問題不是要跟蹤某些功能,而是要檢測場景中的某些移動物體。爲此,您可能需要去dense optical flow,而不是稀疏集。如果你的場景仍然存在,背景扣除也是一個很大的可能性。

+0

我的問題是,對於這個應用程序,我們需要保持所有運行儘可能接近實時(我們正在使用的攝像頭爲15 FPS)。雖然使用密集的光流將會很不錯,但是在我和其他處理之間,我需要爲每個幀運行,即使在GPU上執行大部分處理時,也沒有足夠的時間來處理它。 – 2014-11-17 15:08:19

+0

所以你需要去LK方法,gridwise像素選擇和大概找到運動部分。那麼動態背景減法呢?我不知道它是否在opencv中實現 – baci 2014-11-17 22:36:33