跟蹤斑點我有減去
攝像機的輸入的背景和提取乾淨的斑點的EMGU(OpenCV的包裝器)程序。
現在我需要一些能夠跟蹤這些斑點併爲它們分配ID的東西。
任何建議/圖書館?
感謝,
SW與OpenCV的
Q
與OpenCV的
2
A
回答
3
好,如果你有,你想跟蹤你可以嘗試Particle Filter多個對象。
粒子濾波器基本上是在圖像上「處理」粒子,每個粒子都有一定的權重。在每個時間步驟中,通過將這些權重與當時對象的實際測量值進行比較來更新這些權重。在下一個時間步驟中,高重量的粒子將在其方向上處理更多的粒子(在方向上添加一個輕微的隨機部分)。 經過幾個時間步後,粒子將圍繞物體測量位置分組。這就是爲什麼這種方法有時也被稱爲優勝劣汰的方法的生存...
所以這整個事情建立一個圓:
Initialization ----> Sampling
> \
/ >
Updating Prediction
< /
\ <
Association
因此,這提供了在給定場景跟蹤對象的好方法。進行多對象跟蹤的一種方法是在所有對象上使用這一個粒子濾波器,這將起作用,但是當您嘗試爲對象提供ID時以及當對象相互交叉時會有缺點,因爲粒子云可能會丟失一個對象並且遵循另一個對象。
爲了解決這個問題,你可以嘗試使用混合粒子濾波器(Vermaak et al。[2003])。這個通過一個單獨的粒子過濾器跟蹤每個對象(當然有更少的必要粒子)。
上好的紙可以在這裏找到:http://www.springerlink.com/content/qn4704415gx65315/ (我還可以與其他一些東西提供給您的是,如果你喜歡,如果你會講德語我甚至可以給你介紹我在大學舉辦有關前一陣子)
編輯:
忘了提:既然你嘗試做這在OpenCV中:據我知道有凝結算法的實現(如果你使用一個第一個粒子濾波器在整個圖像上)是OpenCV發行版的一部分,雖然它可能已經過時了一點。 OpenCV中可能有更新的粒子過濾器,但如果不是,你會在Google上找到很多結果,如果你尋找OpenCV和粒子過濾器
希望有幫助...如果沒有,請繼續詢問.. 。
2
你可以簡單地適應的EMGU CV例子,讓 VideoSurveillance命名空間的用途之一:
public partial class VideoSurveilance : Form
{
private static MCvFont _font = new MCvFont(Emgu.CV.CvEnum.FONT.CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0);
private static Capture _cameraCapture;
private static BlobTrackerAuto<Bgr> _tracker;
private static IBGFGDetector<Bgr> _detector;
public VideoSurveilance()
{
InitializeComponent();
Run();
}
void Run()
{
try
{
_cameraCapture = new Capture();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return;
}
_detector = new FGDetector<Bgr>(FORGROUND_DETECTOR_TYPE.FGD);
_tracker = new BlobTrackerAuto<Bgr>();
Application.Idle += ProcessFrame;
}
void ProcessFrame(object sender, EventArgs e)
{
Image<Bgr, Byte> frame = _cameraCapture.QueryFrame();
frame._SmoothGaussian(3); //filter out noises
#region use the background code book model to find the forground mask
_detector.Update(frame);
Image<Gray, Byte> forgroundMask = _detector.ForgroundMask;
#endregion
_tracker.Process(frame, forgroundMask);
foreach (MCvBlob blob in _tracker)
{
frame.Draw(Rectangle.Round(blob), new Bgr(255.0, 255.0, 255.0), 2);
frame.Draw(blob.ID.ToString(), ref _font, Point.Round(blob.Center), new Bgr(255.0, 255.0, 255.0));
}
imageBox1.Image = frame;
imageBox2.Image = forgroundMask;
}
}
相關問題
- 1. 與OpenCV的
- 2. 與OpenCV的
- 3. 與OpenCV的
- 4. 與OpenCV的
- 5. 與opencv的C++
- 6. 與OpenCV的(JAVA)
- 7. OpenCV的努力的ARToolKit與OpenCV的
- 8. 與OpenCV的Python的
- 9. 與OpenCV的問題
- 10. 提取與OpenCV的
- 11. 麻煩與OpenCV的
- 12. 閱讀與OpenCV的
- 13. 過程與OpenCV的
- 14. 與OpenCV的蟒蛇
- 15. 提取與OpenCV的
- 16. 不能與OpenCV的
- 17. OpenCV與Visual C++
- 18. OpenCV與OpenNi
- 19. Opencv與Android- OCR
- 20. MATLAB與OpenCV
- 21. OpenCV與Android
- 22. 錯誤與OpenCV
- 23. Android與OpenCV
- 24. FaceRecognizer與openCV
- 25. OpenCV C++與Android
- 26. FFTW與OpenCV cvDFT
- 27. OpenCV 2.4.2與QT
- 28. Python的OpenCV的matchTemplate與蒙
- 29. OpenCV的建設與iOS的
- 30. 顯示的OpenCV與wxPython的
這幾個問題用的OpenCV的BlobTrackerAuto。它只適用於BGR圖像,非常慢,並且沒有辦法只用於跟蹤斑點(沒有Forground-extraction部分)。 – 2011-02-05 18:48:57