TLDR;我有一些及時的多個粒子的位置資料,我想提取每個粒子的軌跡!
所以,我正在對流化床中的多個粒子進行一些影像檢測(基本上是在一個方形盒子中的一堆球體,我們將液體通過,這樣粒子開始像“流體”一樣移動,也就是球形粒子的流化床) .
這個想法是我們將一些有色粒子與一堆透明粒子一起放入,這樣我們就可以跟蹤運動中標記粒子的軌跡(目標是獲得速度、加速度、碰撞率......)。 標記粒子的影像示例
我們 這里從影像處理中得到的資料是一個測驗的處理后的位置資料,如您所見,我們為每一幀檢測粒子(如您所見,同一幀中可以檢測到多個粒子)
繪制的資料如下圖所示。請注意,我們使用單個相機來捕獲 3 Position 組件(對于那些好奇的人,使用 45 度角的鏡子) 繪制“中間”位置資料(我們已經對資料進行了一些清理) 我們可以清楚地區分軌跡,但我們也可以看到仍然存在很多“噪音”,主要問題是資料的組織方式是,對于每一幀我們檢測粒子并存盤它們的位置,并為下一幀重做同樣的事情, 問題是我們不確定 X 幀的 Particles1 是否與 X 1 幀中移動的 Particle1 相同?可以看到每幀每個粒子的索引 Particles index
我的問題是;給定繪制的資料,提取每個粒子軌跡的最佳方法是什么,記住我最終需要速度(所以我也需要時間分量)?
我考慮過使用類似于 [k-最近鄰演算法][5] 的東西,但它只對它們進行空間分類。
我看到解決這個問題的另一種方法是蠻力它并計算最小距離對并將這些對鏈接以形成軌跡?但這對我來說看起來很愚蠢,所以也許有一個聰明的演算法可以做到這一點(像演算法 xD 這樣的旅行推銷員問題?)
無論如何,我很樂意得到任何意見!
干杯,
卡梅爾
uj5u.com熱心網友回復:
我不明白你得到的測量結果有多精確。我知道您在 4-D 空間中有一組點(frame ~ time, area, X, Y)(無論區域是什么),我認為您需要將這些點拆分為集合,其中集合對應于“一個粒子的軌跡”,對嗎?
如果是這樣,在我看來,您正在尋找的是在這個 4-D 空間中的某種聚類(或者如果area沒有意義,可能是 3-D)。K-means不適合這里,我的第一個選擇是DBScan algo之類的。
uj5u.com熱心網友回復:
一般策略是從一幀到下一幀預測粒子的位置,并將新幀中的粒子與預測的粒子匹配。
0 階預測是假設粒子不移動,所以你只需使用前一幀中的位置和最近鄰搜索。
一階預測假設粒子以恒定速度進行線性運動。您可以估計最后兩幀的速度(假設您可以在這些幀之間匹配它們),并推斷到新的一幀。
二階預測將是加速度,依此類推。
您將面臨幾個困難,其中
獲得并保持正確的速度值(從前幾幀估計速度可能是有益的),
處理未在所有幀中檢測到的粒子(繼續估計它們的位置并拒絕“可疑”匹配),
兩個粒子相互交叉時的模棱兩可的匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/494695.html
