2013-03-10 46 views
1

我有一個表格,其中一列的幀編號和另一列的相應顏色刻度。我發現他們使用openCV。 一些框架具有非常高的價值和非常低的休息。我怎樣才能提取非常高的峯值幀?僅提取分佈中的峯值

這是分佈圖,我試圖使用高斯平滑,然後在下面的圖上進行閾值處理。

Plot

我得到這個結果。

Plot1

現在我應該怎麼處理?

回答

1

基本上你正在尋找一個峯值查找器... MATLAB有一個峯值查找功能來尋找峯值... 我沒有在OpenCV中找到任何現成的API for this,所以我實現了MATLAB的峯值查找器...算法去這種方式...

  1. 初始假設或先驗知識可以一),你可以有「否」的分佈峯值b)您的峯值是由最小窗口「W」,即不分離兩個峯值比'w'更接近。
  2. 我可以電話給你窗口的實現。從數據點開始。將其位置標記爲當前索引並檢查其左側和右側長度「w」是否存在大於當前索引值的值。
  3. 如果是移動到這一點。使目前的指數和重複2.
  4. 如果沒有那麼它的本地最大值。將ur當前索引移動'w'長度並重復2直到達到數據集結束。

嘗試實現這一點,並檢查MATLAB幫助的峯峯值。如果沒有運氣,我可以發佈代碼..

編輯編輯後看到你編輯的圖形看起來圖形有明確的最大峯值,因此你可以做的是跟蹤圖形的dy/dx的符號。最大峯值是dy/dx的符號從正向負變化的點...在代碼語言中

vector<double> array_of_max_peak; 
if (sign(x(n+1) - x(n))) > 0 
    array_of_max_peak.push(x(n)); 
+0

幾乎所有的峯值查找器都是這種算法的衍生物。 – 2013-03-10 18:36:29

+0

@rotating_image我嘗試了一些峯值發現的其他方法。首先,我做了平滑,然後進行閾值處理。我在上面的問題中添加了一個圖表。 – 2013-03-28 06:07:55