匈牙利演算法和卡爾曼濾波器

2021-10-01 07:12:19 字數 919 閱讀 7150

1.匈牙利演算法

**分配問題(assignment problem):**假設有n個人和n個任務,每個任務可以任意分配給不同的人,已知每個人完成每個任務要花費的代價不盡相同,那麼如何分配可以使得總的代價最小。

**匈牙利演算法(又叫km演算法)**就是用來解決分配問題的一種方法,它基於定理:

如果代價矩陣的某一行或某一列同時加上或減去某個數,則這個新的代價矩陣的最優分配仍然是原代價矩陣的最優分配。

演算法步驟(假設矩陣為nxn方陣):

1、對於矩陣的每一行,減去其中最小的元素

2、對於矩陣的每一列,減去其中最小的元素

3、用最少的水平線或垂直線覆蓋矩陣中所有的0

4、如果線的數量等於n,則找到了最優分配,演算法結束,否則進入步驟5

5、找到沒有被任何線覆蓋的最小元素,每個沒被線覆蓋的行減去這個元素,每個被線覆蓋的列加上這個元素,返回步驟3

2.卡爾曼濾波器:

卡爾曼濾波被廣泛應用於無人機、自動駕駛、衛星導航等領域,簡單來說,其作用就是基於感測器的測量值來更新**值,以達到更精確的估計。

在目標跟蹤中,需要估計track的以下兩個狀態:

**均值(mean):**表示目標的位置資訊,由bbox的中心座標 (cx, cy),寬高比r,高h,以及各自的速度變化值組成,由8維向量表示為 x = [cx, cy, r, h, vx, vy, vr, vh],各個速度值初始化為0。

**協方差(covariance ):**表示目標位置資訊的不確定性,由8x8的對角矩陣表示,矩陣中數字越大則表明不確定性越大,可以以任意值初始化。

卡爾曼濾波分為兩個階段:(1) **track在下一時刻的位置,(2) 基於detection來更新**的位置。

卡爾曼濾波器

協方差 用於表示兩個變數的總體誤差,如果兩個變化趨勢一致則協方差為正值,變化趨勢不一致則為負值。從直觀上來看,協方差表示的是兩個變數總體誤差的期望。由k 1時刻的最優值和系統輸入計算k時刻的系統 值。根據k 1時刻的系統協方差 k時刻系統協方差。根據 k時刻 協方差矩陣的 值計算卡爾曼增益。根據狀態...

Python 卡爾曼濾波器實現

去年我們在設計一款新產品的時候,由於選用定製開發的乙個soc器件,導致我們在用adc讀取經由這個soc晶元放大後的訊號時,出現了極其不穩定的情況。正常情況下adc讀取出來的訊號應當為一條平穩的直線,而現實上讀取出來的訊號確上下波動極其大,遠遠超出了我們理論計算水平。雖然後來通過大量的研究分析,得出時...

卡爾曼濾波器原理和matlab實現

以其中的一篇參考資料為例 卡爾曼濾波器的遞迴過程 估計時刻k 的狀態 x k ax k 1 bu k 這裡,u k 是系統輸入,在專案中,一維輸入訊號a 1 計算誤差相關矩陣p,度量估計值的精確程度 p k a p k 1 a q 這裡,q e 是系統雜訊的協方差陣,即系統框圖中的wj的協方差陣,q...