国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

opencv學(xué)習(xí)記錄2-Kalman濾波

這篇具有很好參考價(jià)值的文章主要介紹了opencv學(xué)習(xí)記錄2-Kalman濾波。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

貝葉斯濾波

1.理論

貝葉斯推斷方法的關(guān)鍵是任何推斷都必須且只須根據(jù)后驗(yàn)分布,而不能再涉及樣本分布

opencv 卡爾曼濾波,opencv,python,計(jì)算機(jī)視覺,Powered by 金山文檔
opencv 卡爾曼濾波,opencv,python,計(jì)算機(jī)視覺,Powered by 金山文檔

2.貝葉斯濾波的基本方法:

opencv 卡爾曼濾波,opencv,python,計(jì)算機(jī)視覺,Powered by 金山文檔

優(yōu)缺點(diǎn):

  • 優(yōu)點(diǎn):可以有效濾除噪聲,得到比較精準(zhǔn)的狀態(tài)估計(jì)

  • 缺點(diǎn):需要做無窮積分,大多數(shù)情況下沒有解析解

opencv 卡爾曼濾波,opencv,python,計(jì)算機(jī)視覺,Powered by 金山文檔

卡爾曼濾波是它的改進(jìn)版)

opencv 卡爾曼濾波,opencv,python,計(jì)算機(jī)視覺,Powered by 金山文檔
opencv 卡爾曼濾波,opencv,python,計(jì)算機(jī)視覺,Powered by 金山文檔

實(shí)例

利用opencv自帶的kalmanfilter類實(shí)現(xiàn)對(duì)鼠標(biāo)軌跡的跟蹤

步驟

卡爾曼濾波器算法分為兩個(gè)階段:

  1. 預(yù)測(cè):使用由當(dāng)前點(diǎn)計(jì)算的協(xié)方差來估計(jì)目標(biāo)的新位置

  1. 更新:記錄目標(biāo)的位置,并為下一次循環(huán)計(jì)算修正協(xié)方差

kalman = cv2.KalmanFilter(4, 2)

表示Kalman濾波器轉(zhuǎn)移矩陣維度為4,測(cè)量矩陣維度為2

(因?yàn)闋顟B(tài)量有4個(gè):x,y方向分別的位移和速度,可觀測(cè)的量有2個(gè):x,y方向的位移)

測(cè)量矩陣:

opencv 卡爾曼濾波,opencv,python,計(jì)算機(jī)視覺,Powered by 金山文檔

轉(zhuǎn)移矩陣:

opencv 卡爾曼濾波,opencv,python,計(jì)算機(jī)視覺,Powered by 金山文檔

例:

kalman.measuremenMatrix = np.array([[1, 0, 0, 0], [0, 1, 0, 0]], np.float32)
kalman.transitionMatrix = np.array([[1, 0, 1, 0], [0, 1, 0, 1],
                                    [0, 0, 1, 0], [0, 0, 0, 1]], np.float32)

過程噪聲和測(cè)量噪聲以一個(gè)經(jīng)驗(yàn)值估計(jì)(來源csdn)

kalman.processNoiseCov = np.array([[1, 0, 0, 0], [0, 1, 0, 0],
                                   [0, 0, 1, 0], [0, 0, 0, 1]], np.float32) * 0.003
kalman.measurementNoiseCov = np.array([[1, 0], [0, 1]], np.float32) * 0.5

具體操作:

  1. 初始化數(shù)組,存放測(cè)量坐標(biāo)和鼠標(biāo)運(yùn)動(dòng)預(yù)測(cè)的數(shù)據(jù)

  1. 傳遞進(jìn)當(dāng)前測(cè)量的坐標(biāo)值

  1. 修正卡爾曼濾波預(yù)測(cè)結(jié)果

  1. 調(diào)用kalman類的predict,得到預(yù)測(cè)值矩陣(用來估算目標(biāo)位置

  1. 將上一次測(cè)量值和當(dāng)前測(cè)量值連線;將上一次預(yù)測(cè)值和當(dāng)前預(yù)測(cè)值連線

注意:

  • Kalman這個(gè)類需要初始化下面變量:

轉(zhuǎn)移矩陣,測(cè)量矩陣,控制向量(沒有的話,就是0),過程噪聲協(xié)方差矩陣,測(cè)量噪聲協(xié)方差矩陣,后驗(yàn)錯(cuò)誤協(xié)方差矩陣,前一狀態(tài)校正后的值,當(dāng)前觀察值。

  • cv2.KalmanFilter(4,2)表示轉(zhuǎn)移矩陣維度為4,測(cè)量矩陣維度為2

  • 卡爾曼濾波模型假設(shè)k時(shí)刻的真實(shí)狀態(tài)是從(k ? 1)時(shí)刻的狀態(tài)演化而來,符合下式:

        X(k) = F(k) * X(k-1) + B(k)*U(k) + W(k)

其中

F(k) 是作用在xk?1上的狀態(tài)變換模型(/矩陣/矢量)。

B(k) 是作用在控制器向量uk上的輸入-控制模型。

W(k) 是過程噪聲,并假定其符合均值為零,協(xié)方差矩陣為Qk的多元正態(tài)分布。

完整代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-630076.html

import cv2
import numpy as np

# 創(chuàng)建一個(gè)畫圖區(qū)域
frame = np.zeros((700, 700, 3), np.uint8) 

# 初始化測(cè)量坐標(biāo)和鼠標(biāo)運(yùn)動(dòng)預(yù)測(cè)的數(shù)組
last_measurement = current_measurement = np.array((2, 1), np.float32)
last_prediction = current_prediction = np.zeros((2, 1), np.float32)

# 用來繪制跟蹤結(jié)果
def mousemove(event, x, y, s, p):
    global frame, current_measurement, measurements, last_measurement, mcurrent_prediction, last_prediction
    # 把當(dāng)前預(yù)測(cè)存儲(chǔ)為上一次預(yù)測(cè)
    last_prediction = current_prediction 
    # 把當(dāng)前測(cè)量存儲(chǔ)為上一次測(cè)量
    last_measurement = current_measurement

   
    current_measurement = np.array([[np.float32(x)], [np.float32(y)]]) 
    # 用當(dāng)前測(cè)量來校正卡爾曼濾波器
    kalman.correct(current_measurement) 
    # 計(jì)算卡爾曼預(yù)測(cè)值,作為當(dāng)前預(yù)測(cè)
    current_prediction = kalman.predict() 

    # 上一次測(cè)量坐標(biāo)
    lmx, lmy = last_measurement[0], last_measurement[1] 
    # 當(dāng)前測(cè)量坐標(biāo)
    cmx, cmy = current_measurement[0], current_measurement[1] 
    # 上一次預(yù)測(cè)坐標(biāo)
    lpx, lpy = last_prediction[0], last_prediction[1] 
    # 當(dāng)前預(yù)測(cè)坐標(biāo)
    cpx, cpy = current_prediction[0], current_prediction[1] 

    # 繪制從上一次測(cè)量到當(dāng)前測(cè)量以及從上一次預(yù)測(cè)到當(dāng)前預(yù)測(cè)的兩條線
    # 藍(lán)色為測(cè)量值
    cv2.line(frame, (int(lmx), int(lmy)), (int(cmx), int(cmy)), (255, 0, 0)) 
    # 粉色為預(yù)測(cè)值
    cv2.line(frame, (int(lpx), int(lpy)), (int(cpx), int(cpy)), (255, 0, 255)) 

cv2.namedWindow("kalman_tracker")
cv2.setMouseCallback("kalman_tracker", mousemove)

# 4:狀態(tài)數(shù),包括(x,y,dx,dy)坐標(biāo)及速度(每次移動(dòng)的距離);2:觀測(cè)量,能看到的是坐標(biāo)值
kalman = cv2.KalmanFilter(4, 2)
# 系統(tǒng)測(cè)量矩陣
kalman.measurementMatrix = np.array([[1, 0, 0, 0], [0, 1, 0, 0]], np.float32)
# 狀態(tài)轉(zhuǎn)移矩陣
kalman.transitionMatrix = np.array([[1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 1, 0], [0, 0, 0, 1]], np.float32) 
# 系統(tǒng)過程噪聲協(xié)方差
kalman.processNoiseCov = np.array([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]], np.float32)*0.03

while True:
    cv2.imshow("kalman_tracker", frame)
    key = cv2.waitKey(1) & 0xFF
    if key == ord('q'):
        break
cv2.destroyAllWindows()

到了這里,關(guān)于opencv學(xué)習(xí)記錄2-Kalman濾波的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 卡爾曼濾波學(xué)習(xí)筆記

    卡爾曼濾波學(xué)習(xí)筆記

    從直觀上來看,卡爾曼濾波是把兩個(gè)存在誤差的結(jié)果 融合 在一起,得到一個(gè)從數(shù)學(xué)上可以得到證明的 最優(yōu)估計(jì)值 。 而這兩個(gè)存在誤差的結(jié)果,一個(gè)是從理論上推導(dǎo)出來的,稱之為 先驗(yàn)估計(jì)值 ;一個(gè)是用傳感器測(cè)量出來的,稱之為 測(cè)量值 。它們之所以存在誤差,是因?yàn)榍?/p>

    2024年02月11日
    瀏覽(20)
  • 卡爾曼濾波的Python實(shí)現(xiàn)

    卡爾曼濾波的Python實(shí)現(xiàn)

    為了在Python編程環(huán)境下實(shí)現(xiàn)卡爾曼濾波算法,特編寫此程序 主要用到了以下3個(gè)模塊 numpy(數(shù)學(xué)計(jì)算) pandas(讀取數(shù)據(jù)) matplotlib(畫圖展示) 代碼的核心是實(shí)現(xiàn)了一個(gè)Kf_Params類,該類定義了卡爾曼濾波算法的相關(guān)參數(shù) 然后是實(shí)現(xiàn)了一個(gè)kf_init()函數(shù),用來初始化卡爾曼濾波算

    2024年02月12日
    瀏覽(17)
  • 在Matlab/Simulink搭建卡爾曼kalman模塊化模型

    在Matlab/Simulink搭建卡爾曼kalman模塊化模型

    ? ? ? ?Kalman濾波是一種利用線性系統(tǒng)狀態(tài)方程,通過系統(tǒng)輸入輸出觀測(cè)數(shù)據(jù),對(duì)系統(tǒng)狀態(tài)進(jìn)行最優(yōu)估計(jì)的算法。算法優(yōu)點(diǎn)在于計(jì)算量小,能夠利用前一時(shí)刻的狀態(tài)或可能的測(cè)量值來得到當(dāng)前時(shí)刻下狀態(tài)的最優(yōu)估計(jì)。觀測(cè)數(shù)據(jù)中包括系統(tǒng)中的噪聲和干擾的影響,所以最優(yōu)估計(jì)

    2024年02月08日
    瀏覽(28)
  • 【簡歷完善】- SLAM - 第一篇:卡爾曼濾波的學(xué)習(xí)

    【簡歷完善】- SLAM - 第一篇:卡爾曼濾波的學(xué)習(xí)

    場(chǎng)景:晚上你需要從自己的臥室去上廁所,你知道家里的布局,了解自己的步長,但是沒有燈。你如何才能走到廁所呢? “預(yù)測(cè)” = “估計(jì)”。下面所說的預(yù)測(cè)和估計(jì)就是一回事。不同博客里面這兩個(gè)詞語大概意思也是一致的。 比如,你摸黑走了10步,你“估計(jì)”你“大概”

    2024年02月14日
    瀏覽(23)
  • 快速上手的Python版二維卡爾曼濾波解析

    快速上手的Python版二維卡爾曼濾波解析

    卡爾曼濾波是最好的線性濾波,但是需要推導(dǎo)的公式教多,也很細(xì),這里推薦一個(gè)B站博主視頻講解的關(guān)于卡爾曼濾波,講的很好,很細(xì),適合小白學(xué)習(xí),鏈接地址為:添加鏈接描述。如果完全沒接觸過卡爾曼濾波的,建議從第一集開始學(xué)習(xí)。 下面是我跟著這位博主學(xué)習(xí)后,

    2023年04月16日
    瀏覽(21)
  • 卡爾曼濾波簡介 —— 一維卡爾曼濾波

    卡爾曼濾波簡介 —— 一維卡爾曼濾波

    ????????在本章中,我們將在一個(gè)維度上推導(dǎo)出卡爾曼濾波。本章的主要目標(biāo)是簡單直觀地解釋卡爾曼濾波的概念,而不使用可能看起來復(fù)雜和令人困惑的數(shù)學(xué)工具。 ????????我們將逐步推進(jìn)卡爾曼濾波方程。 ????????在本章中,我們推導(dǎo)出沒有過程噪聲的卡爾曼

    2024年02月09日
    瀏覽(19)
  • 基于卡爾曼濾波的信號(hào)處理以及圖像追蹤Python實(shí)現(xiàn)

    基于卡爾曼濾波的信號(hào)處理以及圖像追蹤Python實(shí)現(xiàn)

    這篇文章將由淺入深,從最簡單的信號(hào)處理開始,到計(jì)算機(jī)視覺圖像跟蹤的應(yīng)用。該文章使用Python語言,在進(jìn)行視覺處理時(shí),并未使用opencv自帶的api,而是從矩陣運(yùn)算進(jìn)行逐步處理,更易于理解。 網(wǎng)上現(xiàn)在能看到的原理解釋都很詳細(xì),這里就不多介紹。本人理解卡爾曼濾波的

    2024年02月05日
    瀏覽(26)
  • 【狀態(tài)估計(jì)】卡爾曼濾波器、擴(kuò)展卡爾曼濾波器、雙卡爾曼濾波器和平方根卡爾曼濾波器研究(Matlab代碼實(shí)現(xiàn))

    【狀態(tài)估計(jì)】卡爾曼濾波器、擴(kuò)展卡爾曼濾波器、雙卡爾曼濾波器和平方根卡爾曼濾波器研究(Matlab代碼實(shí)現(xiàn))

    ???????? 歡迎來到本博客 ???????? ??博主優(yōu)勢(shì): ?????? 博客內(nèi)容盡量做到思維縝密,邏輯清晰,為了方便讀者。 ?? 座右銘: 行百里者,半于九十。 ?????? 本文目錄如下: ?????? 目錄 ??1 概述 ??2 運(yùn)行結(jié)果 ??3?參考文獻(xiàn) ??4 Matlab代碼實(shí)現(xiàn) 本文包括

    2024年02月08日
    瀏覽(28)
  • 卡爾曼濾波(KF)和擴(kuò)展卡爾曼濾波(EKF)相應(yīng)推導(dǎo)

    從上個(gè)世紀(jì)卡爾曼濾波理論被提出,卡爾曼濾波在控制論與信息論的連接上做出了卓越的貢獻(xiàn)。為了得出準(zhǔn)確的下一時(shí)刻狀態(tài)真值,我們常常使用卡爾曼濾波、擴(kuò)展卡爾曼濾波、無跡卡爾曼濾波、粒子濾波等等方法,這些方法在姿態(tài)解算、軌跡規(guī)劃等方面有著很多用途???/p>

    2024年02月03日
    瀏覽(23)
  • 基于卡爾曼濾波的視頻跟蹤,基于卡爾曼濾波的運(yùn)動(dòng)小球跟蹤

    基于卡爾曼濾波的視頻跟蹤,基于卡爾曼濾波的運(yùn)動(dòng)小球跟蹤

    完整代碼和數(shù)據(jù)下載鏈接:基于卡爾曼濾波的視頻跟蹤,基于卡爾曼濾波的運(yùn)動(dòng)小球跟蹤(代碼完整,數(shù)據(jù)齊全)資源-CSDN文庫 https://download.csdn.net/download/abc991835105/88738577 卡爾曼濾波原理 RBF的定義 RBF理論 易錯(cuò)及常見問題 RBF應(yīng)用實(shí)例,基于rbf的空調(diào)功率預(yù)測(cè) 代碼 結(jié)果分析

    2024年02月02日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包