2015-07-11 19 views
1

我在水面上放了一個小白球。風使白球在水中移動。我想用opencv來檢測和跟蹤球。由於背景(水面)是單色的,球也是單色的。我只用hsv中的顏色並設置一個閾值來檢測白色(球)。我認爲這種方式比camshift,tld,Optical flow方法更簡單更好。現在我有一個問題,我發現白色發現球,但有時風很強,水波會發生在球后面。就像PIC如下使用opencv檢測水面白球的最佳方法是什麼?

enter image description here

波也有白色的單純皰疹病毒。所以當我用findcontours來獲得球的邊緣時,我會得到包括球和波的邊緣。我試圖用腐蝕和擴張來消除波浪噪音,但我無法得到一個好的結果。我現在不知道。你能幫助並向我展示如何以更好的方式消除浪潮? 我不確定使用顏色來檢測球是我的最佳選擇。也許我應該嘗試camshift,tld,光流法?你能向我展示你的想法嗎?提前致謝!

回答

1

我現在想不出一個完美的解決方案,但我可以建議你一個至少可以幫助你檢測球的策略。

整個場景的光流可以幫助您找到所有像素或選定關鍵點的速度。一旦你找到你的場景的速度,那麼你需要設置一個閾值,以便在場景的速度更高時停止檢測球。

波浪 - >水快速移動 - >像素速度增加(沿x或y方向) - >光流將告訴您這種情況 - >通過HSV方法停止球檢測。

換句話說,只有在水流速度不是很快的情況下,才能應用您現有的基於HSV方法的球檢測方法,並且您可以使用光流法來知道速度。

+0

非常感謝!你的意思是我應該用光流檢測水的速度和hsv的方法來檢測球。但是當水快速移動時,我應該用光流來檢測球不只是速度還是光流只是用於速度檢測?所以當水移動速度很快,我應該使用另一種方法? –

+0

我的意思是找到每幀中所有像素的速度。如果速度低於閾值(這意味着沒有波),那麼使用HSV方法來檢測球。如果速度超過閾值,則停止使用HSV檢測球。在這種情況下,使用其他方法(目前我不知道哪種方法)。 – skm

+0

非常感謝 –

相關問題