1. 程式人生 > >粒子濾波總結(摘來總結)

粒子濾波總結(摘來總結)

OpenCV中實現了粒子濾波的程式碼,位置在opencv\cv\src\cvcondens.cpp檔案

粒子濾波跟蹤器的資料結構:

typedef struct CvConDensation
{
int MP; // 測量向量的維數: Dimension of measurement vector
int DP; // 狀態向量的維數: Dimension of state vector
float* DynamMatr; // 線性動態系統矩陣:Matrix of the linear Dynamics system
float* State; // 狀態向量: Vector of State
int SamplesNum; // 粒子數: Number of the Samples
float** flSamples; // 粒子向量陣列: array of the Sample Vectors
float** flNewSamples; // 粒子向量臨時陣列: temporary array of the Sample Vectors
float* flConfidence; // 每個粒子的置信度(譯者注:也就是粒子的權值):Confidence for each Sample
float* flCumulative; // 權值的累計: Cumulative confidence
float* Temp; // 臨時向量:Temporary vector
float* RandomSample; // 用來更新粒子集的隨機向量: RandomVector to update sample set
CvRandState* RandS; // 產生隨機向量的結構陣列: Array of structures to generate random vectors
} CvConDensation;

與粒子濾波相關的幾個函式:
cvCreateConDensation:用於構造上述濾波器資料結構
cvReleaseConDensation:釋放濾波器
cvConDensInitSampleSet:初始化粒子集
cvConDensUpdateByTime:更新粒子集

前期準備:

人工指定跟蹤目標,程式計算跟蹤目標的特徵,比如可以採用目標的顏色特徵。比如開始自動計算該區域色調(Hue)空間的直方圖,即為目標的特徵。直方圖可以用一個向量來表示,所以目標特徵就是一個N*1的向量V。

 原理:

對任意如下的狀態方程

x(t)=f(x(t-1),u(t),w(t))

y(t)=h(x(t),e(t))

其中的x(t)為t時刻狀態,u(t)為控制量,w(t) 和e(t)分別為模型噪聲和,觀測噪聲。

前一個當然是狀態轉移方程,後一個是觀測方程。那麼對於這麼一個問題粒子濾波怎麼來從觀測y(t),和x(t-1),u(t) 濾出真實狀態x(t)呢?

濾波的預估階段:粒子濾波首先根據x(t-1) 和他的概率分佈生成大量的取樣,這些取樣就稱之為粒子。那麼這些取樣在狀態空間中的分佈實際上就是x(t-1) 的概率分佈了。好,接下來依據狀態轉移方程加上控制量可以對每一粒子得到一個預測粒子。所有的預測粒子就代表了涉及哪些引數化的東西。

進入校正階段來:有了預測粒子,當然不是所有的預測粒子都能得到我們的時間觀測值y對不,越是接近真實狀態的粒子,當然獲得越有可能獲得觀測值y對吧。於是我們對所有的粒子得有個評價了,這個評價就是一個條件概率P(y|xi

),直白的說,這個條件概率代表了假設真實狀態x(t)取第i個粒子xi時獲得觀測y的概率。令這個條件概率為第i個粒子的權重。如此這般下來,對所有粒子都進行這麼一個評價,那麼越有可能獲得觀測y的粒子,當然獲得的權重越高。好了,預測資訊融合在粒子的分佈中,觀測資訊又融合在了每一粒子的權重中。

最後採用重取樣演算法,去除低權值的粒子,複製高權值的粒子。所得到的當然就是我們說需要的真實狀態x(t)了,而這些重取樣後的粒子,就代表了真實狀態的概率分佈了。

下一輪濾波,再將重取樣過後的粒子集輸入到狀態轉移方程中,直接就能夠獲得預測粒子了。

對於重取樣的目的,是為了解決序列重要性取樣(SIS)存在的退化現象,即幾步迭代之後,許多粒子的權重變得很小,大量的計算浪費在小權值的粒子上。解決退化問題的一般辦法就是重取樣原理,基本思想就是對後驗概率密度再取樣,保留複製權重大的粒子,剔除權重小的粒子。

有許多重取樣(resampling)方法,它決定了粒子濾波演算法的計算複雜度。

經過幾次迭代,除一個粒子以外,所有的粒子只具有微小的權值,稱為退化問題。退化現象意味著大量的計算工作都被用來更新那些對的估計幾乎沒有影響的粒子上。減小這一不利影響的首要方法是增加粒子數目。因為粒子濾波的實質是大數定理,取足夠多的樣本就可以使樣本均值以概率1趨於數學期望。在實際應用中,為了獲得對後驗分佈更高的逼近精度,需要適當地增加粒子個數。降低該現象影響的最有效方法是選擇重要性函式和採用重取樣方法。 (1)重要性函式選擇        選取好的重要性概率密度函式可以有效抑制退化問題,從而減小需要的粒子數目,提高執行速度。出於降低重要性權值的方差、提高抽樣效率的目的,重要性概率密度函式應儘可能地接近系統狀態後驗概率。選取重要性函式的準則是使重要性權重的方差最小。 (2)重取樣        重取樣演算法是降低粒子匱乏現象的另一種方法,其思想是通過對粒子和相應權表示的概率密度函式重新取樣,增加權值較大的粒子數。其方法是 對後驗密度的離散近似表示式(6)再進行一次採 樣,生成一個新的粒子集,該粒子集構成後驗密度離 散近似的一個經驗分佈。在取樣總數仍保持為的情 況下,權值較大的樣本被多次複製,從而實現重取樣過程。顯然,重取樣過程是以犧牲計算量和魯棒性來降低粒子數匱乏現象。

初始狀態的問題: 咱們一開始對x(0)一無所知對吧,那咱們就認為x(0)在全狀態空間內平均分佈唄。於是初始的取樣就平均分佈在整個狀態空間中。然後將所有采樣輸入狀態轉移方程,得到預測粒子。嘿嘿再評價下所有預測粒子的權重,當然我們在整個狀態空間中只有部分粒子能夠獲的高權值咯。馬上重取樣演算法來了,去除低權值的,將下一輪濾波的考慮重點立馬縮小到了高權值粒子附近。

 a)均勻的放:即在整個影象平面均勻的撒粒子(uniform distribution);b)在上一幀得到的目標附近按照高斯分佈來放,可以理解成,靠近目標的地方多放粒子,遠離目標的地方少放粒子。

粒子濾波的核心思想是隨機取樣+重要性重取樣。既然我不知道目標在哪裡,那我就隨機的撒粒子吧。撒完粒子後,根據特徵相似度計算每個粒子的重要性,然後在重要的地方多撒粒子,不重要的地方少撒粒子。所以說粒子濾波較之蒙特卡洛濾波,計算量較小。這個思想和RANSAC演算法真是不謀而合。RANSAC的思想也是(比如用在最簡單的直線擬合上),既然我不知道直線方程是什麼,那我就隨機的取兩個點先算個直線出來,然後再看有多少點符合我的這條直線。哪條直線能獲得最多的點的支援,哪條直線就是目標直線。缺點:嚴重依賴於對初始狀態的估計。可能很快收斂或者很快發散(由於僅在似然方程中用到了觀測值)

粒子濾波分類:

1.經典粒子濾波(Sampling Importance Resampling,SIR)

         補充:序貫重要性取樣(sequential importance sampling,SIS)是重要性取樣的擴充套件。

2.正則粒子濾波(Regularized Particle Filter,RPF)

        是為了解決由重取樣引入的新問題而提出的一種改進的粒子濾波。當通過序貫重要性取樣後引起粒子退化問題時,前面提到可以用重取樣的方法來減小退化的影響,但是引入重取樣策略同時也引入了新的問題,即粒子匱乏問題,經過若干次迭代之後,所有粒子都趨向於同一個粒子,導致粒子的多樣性喪失。這是因為在重取樣過程中,粒子是從離散分佈中取樣取得的,而不是從連續分佈中取樣得到的。

正則粒子濾波正是為了解決上述問題而提出的。它與SIR粒子濾波的區別在於:在重取樣過程中,SIR從離散近似的分佈中重取樣,而正則粒子濾波則從連續近似的分佈中重取樣。

根據正則化在選擇步驟之前還是之後,RPF分為Post-RPF和Pre-RPF。

3.輔助粒子濾波(Auxiliary Particle Filter, APF)

        Pitt和Shephard在標準SIR濾波演算法的基礎上提出了輔助粒子濾波。與標準序列重要性重取樣(SIR)演算法相比,APF也是以序列重要性取樣(SIS)演算法為基礎,只是選擇了不同的重要性密度函式。

        與SIR濾波演算法相比,輔助粒子濾波演算法的優勢在於它在k-1時刻的樣本集合上隨機抽取了一些點,抽取時以當前的觀測資料為條件,這樣可以更加接近真實的狀態。

4.高斯粒子濾波(Gaussian Particle Filter,GPF)

        Jayesh和Petar提出的,將高斯濾波和粒子濾波結合,稱為高斯粒子濾波。該方法的前提是用高斯分佈來近似後驗分佈,它比其它的高斯濾波方法適用性更強,能處理更多非線性動態系統問題;而與一般的粒子濾波相比,因為GPF用高斯分佈近似後驗分佈,所以只要所用的高斯分佈是正確的,就不會產生粒子退化問題,就不需要對粒子進行重取樣,從而使演算法的計算量降低,複雜度也降低。

        高斯粒子濾波比其它高斯濾波有更好的效能,而與一般的粒子濾波相比計算量大大減小,複雜度降低。但是高斯濾波在後驗分佈不能用高斯分佈近似的非線性動態空間模型或者非線性系統非加性高斯噪聲模型時,濾波性不能令人滿意。

5.邊緣化粒子濾波(Marginalized Particle Filter,MPF)