目錄
完整代碼和數(shù)據(jù)下載鏈接:基于卡爾曼濾波的視頻跟蹤,基于卡爾曼濾波的運(yùn)動(dòng)小球跟蹤(代碼完整,數(shù)據(jù)齊全)資源-CSDN文庫(kù) https://download.csdn.net/download/abc991835105/88738577
卡爾曼濾波原理
RBF的定義
RBF理論
易錯(cuò)及常見問題
RBF應(yīng)用實(shí)例,基于rbf的空調(diào)功率預(yù)測(cè)
代碼
結(jié)果分析
展望
摘要
卡爾曼濾波原理,基于卡爾曼濾波的視頻跟蹤,基于卡爾曼濾波的運(yùn)動(dòng)小球跟蹤
卡爾曼原理
卡爾曼濾波(Kalman filtering)是一種利用線性系統(tǒng)狀態(tài)方程,通過系統(tǒng)輸入輸出觀測(cè)數(shù)據(jù),對(duì)系統(tǒng)狀態(tài)進(jìn)行最優(yōu)估計(jì)的算法。由于觀測(cè)數(shù)據(jù)中包括系統(tǒng)中的噪聲和干擾的影響,所以最優(yōu)估計(jì)也可看作是濾波過程。數(shù)據(jù)濾波是去除噪聲還原真實(shí)數(shù)據(jù)的一種數(shù)據(jù)處理技術(shù),Kalman濾波在測(cè)量方差已知的情況下能夠從一系列存在測(cè)量噪聲的數(shù)據(jù)中,估計(jì)動(dòng)態(tài)系統(tǒng)的狀態(tài)。由于它便于計(jì)算機(jī)編程實(shí)現(xiàn),并能夠?qū)ΜF(xiàn)場(chǎng)采集的數(shù)據(jù)進(jìn)行實(shí)時(shí)的更新和處理,Kalman濾波是目前應(yīng)用最為廣泛的濾波方法,在通信,導(dǎo)航,制導(dǎo)與控制等多領(lǐng)域得到了較好的應(yīng)用。
卡爾曼的定義
傳統(tǒng)的濾波方法,只能是在有用信號(hào)與噪聲具有不同頻帶的條件下才能實(shí)現(xiàn).20世紀(jì)40年代,N.維納和A.H.柯爾莫哥羅夫把信號(hào)和噪聲的統(tǒng)計(jì)性質(zhì)引進(jìn)了濾波理論,在假設(shè)信號(hào)和噪聲都是平穩(wěn)過程的條件下,利用最優(yōu)化方法對(duì)信號(hào)真值進(jìn)行估計(jì),達(dá)到濾波目的,從而在概念上與傳統(tǒng)的濾波方法聯(lián)系起來,被稱為維納濾波。這種方法要求信號(hào)和噪聲都必須是以平穩(wěn)過程為條件。60年代初,卡爾曼(R.E.Kalman)和布塞(R. S.Bucy)發(fā)表了一篇重要的論文《線性濾波和預(yù)測(cè) 理論的新成果》,提出了一種新的線性濾波和預(yù)測(cè)理論,被稱之為卡爾曼濾波。特點(diǎn)是在線性狀態(tài)空間表示的基礎(chǔ)上對(duì)有噪聲的輸入和觀測(cè)信號(hào)進(jìn)行處理,求取系統(tǒng)狀態(tài)或真實(shí)信號(hào)。
這種理論是在時(shí)間域上來表述的,基本的概念是:在線性系統(tǒng)的狀態(tài)空間表示基礎(chǔ)上,從輸出和輸入觀測(cè)數(shù)據(jù)求系統(tǒng)狀態(tài)的最優(yōu)估計(jì)。這里所說的系統(tǒng)狀態(tài),是總結(jié)系統(tǒng)所有過去的輸入和擾動(dòng)對(duì)系統(tǒng)的作用的最小參數(shù)的集合,知道了系統(tǒng)的狀態(tài)就能夠與未來的輸入與系統(tǒng)的擾動(dòng)一起確定系統(tǒng)的整個(gè)行為。
卡爾曼濾波不要求信號(hào)和噪聲都是平穩(wěn)過程的假設(shè)條件。對(duì)于每個(gè)時(shí)刻的系統(tǒng)擾動(dòng)和觀測(cè)誤差(即噪聲),只要對(duì)它們的統(tǒng)計(jì)性質(zhì)作某些適當(dāng)?shù)募俣?,通過對(duì)含有噪聲的觀測(cè)信號(hào)進(jìn)行處理,就能在平均的意義上,求得誤差為最小的真實(shí)信號(hào)的估計(jì)值。因此,自從卡爾曼濾波理論問世以來,在通信系統(tǒng)、電力系統(tǒng)、航空航天、環(huán)境污染控制、工業(yè)控制、雷達(dá)信號(hào)處理等許多部門都得到了應(yīng)用,取得了許多成功應(yīng)用的成果。例如在圖像處理方面,應(yīng)用卡爾曼濾波對(duì)由于某些噪聲影響而造成模糊的圖像進(jìn)行復(fù)原。在對(duì)噪聲作了某些統(tǒng)計(jì)性質(zhì)的假定后,就可以用卡爾曼的算法以遞推的方式從模糊圖像中得到均方差最小的真實(shí)圖像,使模糊的圖像得到復(fù)原。
卡爾曼理論
RBF神經(jīng)網(wǎng)絡(luò)算法是由三層結(jié)構(gòu)組成,輸入層至隱層為非線性的空間變換,一般選用徑向基函數(shù)的高斯函數(shù)進(jìn)行運(yùn)算;從隱層至輸出層為線性空間變換,即矩陣與矩陣之間的變換。
rbf神經(jīng)網(wǎng)絡(luò)原理是用RBF作為隱單元的“基”構(gòu)成隱含層空間,這樣就可以將輸入矢量直接映射到隱空間,而不需要通過權(quán)連接。當(dāng)RBF的中心點(diǎn)確定以后,這種映射關(guān)系也就確定了。
RBF是一種前饋型的神經(jīng)網(wǎng)絡(luò),也就是說他不是通過不停的調(diào)整權(quán)值來逼近最小誤差的,的激勵(lì)函數(shù)是一般是高斯函數(shù)和BP的S型函數(shù)不一樣,高斯函數(shù)是通過對(duì)輸入與函數(shù)中心點(diǎn)的距離來算權(quán)重的。
簡(jiǎn)而言之,RBF神經(jīng)網(wǎng)絡(luò)其實(shí)就是,具有不同激活函數(shù)和應(yīng)用方向的前饋網(wǎng)絡(luò)。
狀態(tài)估計(jì)
狀態(tài)估計(jì)是卡爾曼濾波的重要組成部分。一般來說,根據(jù)觀測(cè)數(shù)據(jù)對(duì)隨機(jī)量進(jìn)行定量推斷就是估計(jì)問題,特別是對(duì)動(dòng)態(tài)行為的狀態(tài)估計(jì),它能實(shí)現(xiàn)實(shí)時(shí)運(yùn)行狀態(tài)的估計(jì)和預(yù)測(cè)功能。比如對(duì)飛行器狀態(tài)估計(jì)。狀態(tài)估計(jì)對(duì)于了解和控制一個(gè)系統(tǒng)具有重要意義,所應(yīng)用的方法屬于統(tǒng)計(jì)學(xué)中的估計(jì)理論。最常用的是最小二乘估計(jì),線性最小方差估計(jì)、最小方差估計(jì)、遞推最小二乘估計(jì)等。其他如風(fēng)險(xiǎn)準(zhǔn)則的貝葉斯估計(jì)、最大似然估計(jì)、隨機(jī)逼近等方法也都有應(yīng)用。
狀態(tài)量
受噪聲干擾的狀態(tài)量是個(gè)隨機(jī)量,不可能測(cè)得精確值,但可對(duì)它進(jìn)行一系列觀測(cè),并依據(jù)一組觀測(cè)值,按某種統(tǒng)計(jì)觀點(diǎn)對(duì)它進(jìn)行估計(jì)。使估計(jì)值盡可能準(zhǔn)確地接近真實(shí)值,這就是最優(yōu)估計(jì)。真實(shí)值與估計(jì)值之差稱為估計(jì)誤差。若估計(jì)值的數(shù)學(xué)期望與真實(shí)值相等,這種估計(jì)稱為無偏估計(jì)。卡爾曼提出的遞推最優(yōu)估計(jì)理論,采用狀態(tài)空間描述法,在算法采用遞推形式,卡爾曼濾波能處理多維和非平穩(wěn)的隨機(jī)過程。
卡爾曼應(yīng)用實(shí)例
##基于卡爾曼濾波的視頻跟蹤,基于卡爾曼濾波的運(yùn)動(dòng)小球跟蹤
function kalmanFilterForTracking
showDetections(); %調(diào)用detections函數(shù),檢測(cè)小球
%能容易地觀察整個(gè)對(duì)象的軌跡,我們覆蓋所有視頻
%幀到一個(gè)圖像,“+”標(biāo)志著質(zhì)心計(jì)算表明
%使用blob分析。
showTrajectory(); %調(diào)用showTrajectory函數(shù)來顯示跟蹤的軌跡
frame = []; % 視頻幀
detectedLocation = []; % 檢測(cè)的位置
trackedLocation = []; % 跟蹤的位置
label = ‘’; % 小球的標(biāo)簽
utilities = []; % 讀取視頻之前的取參數(shù)設(shè)置
%%
% 跟蹤一個(gè)對(duì)象的過程如下所示。
function trackSingleObject(param)
%創(chuàng)建實(shí)用工具用于閱讀視頻,檢測(cè)運(yùn)動(dòng)物體,
%和顯示結(jié)果。
utilities = createUtilities(param);
isTrackInitialized = false;
while ~isDone(utilities.videoReader)
frame = readFrame();
% 檢測(cè)小球.
[detectedLocation, isObjectDetected] = detectObject(frame);
if ~isTrackInitialized
if isObjectDetected
%首次發(fā)現(xiàn)一個(gè)球時(shí)。
%通過初始化跟蹤,創(chuàng)建卡爾曼濾波器
initialLocation = computeInitialLocation(param, detectedLocation);
kalmanFilter = configureKalmanFilter(param.motionModel, ...
initialLocation, param.initialEstimateError, ...
param.motionNoise, param.measurementNoise);
isTrackInitialized = true;
trackedLocation = correct(kalmanFilter, detectedLocation);
label = 'Initial';
else
trackedLocation = [];
label = '';
end
else
% 用卡爾曼濾波跟蹤小球
if isObjectDetected % 小球被檢測(cè)出來.
%通過調(diào)用預(yù)測(cè)降低測(cè)量噪聲
predict(kalmanFilter);
trackedLocation = correct(kalmanFilter, detectedLocation);
label = 'Corrected';
else %小球丟失后 預(yù)測(cè)小球的位置
trackedLocation = predict(kalmanFilter);
label = 'Predicted';
end
end
annotateTrackedObject();
end
showTrajectory();
end
結(jié)果
文章來源:http://www.zghlxwxcb.cn/news/detail-788024.html
擴(kuò)展
如果需要改進(jìn),歡迎掃描二維碼聯(lián)系文章來源地址http://www.zghlxwxcb.cn/news/detail-788024.html
到了這里,關(guān)于基于卡爾曼濾波的視頻跟蹤,基于卡爾曼濾波的運(yùn)動(dòng)小球跟蹤的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!