日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

23-背景建模

發布時間:2023/12/1 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 23-背景建模 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

幀差法

由于場景中的目標在運動,目標的影像在不同圖像幀中的位置不同。該類算法對時間上連續的兩幀圖像進行差分運算,不同幀對應的像素點相減,判斷灰度差的絕對值,當絕對值超過一定閾值時,即可判斷為運動目標,從而實現目標的檢測功能。
幀差法很簡單,但會引入噪音和空洞問題

混合高斯模型

在進行前景檢測前,先對背景進行訓練,對圖像中每一個背景采用一個混合高斯模型進行模擬,每個背景的混合高斯的個數可以自適應,然后在測試階段,對新來的像素進行GMM匹配,如果該像素值能夠匹配其中一個高斯,則認為是背景,否則認為是前景。由于整個過程GMM模型在不斷的更新學習中,所以對動態背景有一定的魯棒性。最后通過對一個有樹枝搖擺的動態背景進行前景檢測,取得了較好的效果。

在視頻中對于像素點的變化情況應當是符合高斯分布

背景的實際分布應當是多個高斯分布混合在一起,每個高斯模型也可以帶有權重

混合高斯模型學習方法

1,首先初始化每個高斯模型矩陣參數
2,取視頻中T幀數據圖像用來訓練高斯混合模型。來了第一個像素之后用它來當作第一個高斯分布
3,當后面來的像素值時,與前面已有的高斯的均值比較,如果該像素點的值與其模型均值差在3倍的方差內,則屬于該分布,并對其進行參數更新
4,如果下次來的像素不滿足當前高斯分布,用它來創建一個新的高斯分布

混合高斯模型測試方法

在測試階段,對新來的像素點的值與混合高斯模型中的每一個均值進行比較,如果其差值在2倍的方差之間的話,則認為是背景,否則認為是前景。將前景賦值為255,背景賦值為0。這樣就形成了一副前景二值圖。

import numpy as np import cv2#E:\Jupyter_workspace\study\data/a.mp4視頻最好為攝像頭捕獲得錄像,這樣得話,相對大的背景不會變化,變化的無非是行人和車輛,較為容易判別處理 cap = cv2.VideoCapture('E:\Jupyter_workspace\study\data/a.mp4')#經典的測試視頻 kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))#形態學操作需要使用 fgbg = cv2.createBackgroundSubtractorMOG2()#創建混合高斯模型用于背景建模while(True):ret, frame = cap.read()#一幀一幀讀取視頻fgmask = fgbg.apply(frame)#將獲取到的每一幀圖像都應用到當前的背景提取當中,前景255,背景0fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_OPEN, kernel)#形態學中開運算去掉噪音點im, contours, hierarchy = cv2.findContours(fgmask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)#尋找視頻中的輪廓for c in contours:perimeter = cv2.arcLength(c,True)#計算各輪廓的周長if perimeter >188:x,y,w,h = cv2.boundingRect(c)#找到一個直矩陣(不會旋轉)cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)#畫出這個矩陣cv2.imshow('frame',frame)cv2.imshow('fgmask',fgmask)k = cv2.waitKey(100) & 0xffif k ==27:#Esc退出breakcap.release() cv2.destroyAllWindows()

總結

以上是生活随笔為你收集整理的23-背景建模的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。