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()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378653.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378653.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378653.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DB2 9 運用開辟(733 考試)認證指南,第 3 部門: XML 數據獨霸(4)

議決運用順序存儲和檢索 XMLXML 編碼字符編碼在汗青上,術語 字符集、字符編碼 和 碼頁 都有雷同的意義:一個字符集和一個二進制碼集,其中每個碼示意一個字符。(碼頁是來自 IBM 的一個術語,示意一個大型主機或 IBM PC 上…

system.setin_Java System類setIn()方法及示例

system.setin系統類setIn()方法 (System class setIn() method) setIn() method is available in java.lang package. setIn()方法在java.lang包中可用。 setIn() method is used to assign again the standard input stream. setIn()方法用于再次分配標準輸入流。 setIn() met…

Opencv——霍夫變換以及遇到的一些問題

目錄問題1 :顏色空間轉換函數參數問題:CV_BGR2GRAY vs CV_GRAY2BGR問題2:cvRound()、cvFloor()、cvCeil()函數用法霍夫變換的含義標準霍夫直線變換霍夫線變換函數參數講解累計概率霍夫變換霍夫變換圓變換原理和算法步驟:霍夫圓變換…

java ssm如何上傳圖片_ssm整合-圖片上傳功能(轉)

本文介紹 ssm (SpringSpringMVCMybatis)實現上傳功能。以一個添加用戶的案例介紹(主要是將上傳文件)。一、需求介紹我們要實現添加用戶的時候上傳圖片(其實任何文件都可以)。文件名:以 博客名日期的年月日時分秒毫秒形式命名如 言曌博客2017082516403213.png路徑&am…

宏定義和內聯函數區別

內聯函數是代碼被插入到調用者代碼處的函數。如同 #define 宏,內聯函數通過避免被調用的開銷來提高執行效率,尤其是它能夠通過調用(“過程化集成”)被編譯器優化。 宏定義不檢查函數參數,返回值什么的,只是…

24-光流估計

光流是空間運動物體在觀測成像平面上的像素運動的“瞬間速度”,根據各個像素點的速度矢量特征,可以對圖像進行動態分析,例如目標跟蹤 亮度恒定:同一點隨著時間的變化,其亮度不會發生改變 小運動:隨著時間的…

java公平索非公平鎖_java中的非公平鎖不怕有的線程一直得不到執行嗎

首先來看公平鎖和非公平鎖,我們默認使用的鎖是非公平鎖,只有當我們顯示設置為公平鎖的情況下,才會使用公平鎖,下面我們簡單看一下公平鎖的源碼,如果等待隊列中沒有節點在等待,則占有鎖,如果已經…

mybatis.net - 5 嵌入資源與引用資源

在SqlMap.config文件中可以有兩種方式引入外部的文件。 一種是通過資源的方式&#xff0c;在文件中表現為 resource&#xff0c;就是引用外部的文件&#xff0c;這里需要保證文件的路徑正確。 <sqlMaps><sqlMap resource"Maps/ProductMap.xml"/><sqlM…

智能車復工日記【3】:圖像處理——基本掃線和基本特征提取和十字補線

博主聯系方式: QQ:1540984562 QQ交流群:892023501 群里會有往屆的smarters和電賽選手,群里也會不時分享一些有用的資料,有問題可以在群里多問問。 目錄 1、系列文章2、前言3、基本掃線(除了進入環島狀態或者坡道或者十字路口的普通掃線)1.基本數據和初步特征4、進一步特征…

short 用equals_Java Short類equals()方法的示例

short 用equals短類equals()方法 (Short class equals() method) equals() method is available in java.lang package. equals()方法在java.lang包中可用。 equals() method is used to check equality or inequality of this Object against the given Object or in other wo…

圖解MySQL數據庫的陳列和把持-4

泉源&#xff1a;網海拾貝 填入一些測試數據&#xff1a; 封閉“MySQL Query Browser”&#xff0c;再從頭翻開它&#xff0c;切換到testtable表&#xff0c;看到了沒有&#xff1f;剛剛輸出的中文變成了“&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&am…

非常好友(C++)

Bessie和其他的所有奶牛的耳朵上都戴有一個射頻識別&#xff08;RFID&#xff09;序列號碼牌。因此農夫John可以機械化地計算他們的數量。很多奶牛都有一個“牛友”。如果奶牛A的序列號的約數之和剛好等于奶牛B的序列號&#xff0c;那么A的牛友就是B。在這里&#xff0c;一個數…

智能車復工日記【2】——普通PID、變結構PID、微分先行PID、模糊PID、專家PID

博主聯系方式: QQ:1540984562 QQ交流群:892023501 群里會有往屆的smarters和電賽選手,群里也會不時分享一些有用的資料,有問題可以在群里多問問。 目錄 系列文章前言普通PID舵機參數:電機參數:變結構PI控制(電機控制,這里對公式進行修改采用正態分布公式)微分先行PID(…

爬動的蠕蟲(C++)

問題描述&#xff1a; 一條蟲子在n英寸深的井底&#xff0c;每次一分鐘爬行u英寸&#xff0c;但是它再次爬行前必須先休息1分鐘&#xff0c;在休息過程中它將滑落d英寸&#xff0c;在反復向上爬行和休息后&#xff0c;多長時間蟲子能爬出這口井&#xff1f;在此過程中&#xf…

使用快捷鍵,快到極致

前段時間曾經寫過一篇文章&#xff0c;《優秀程序員無他-善假于物也》。其中談到一點是優秀的程序員必須要能靈活的掌握常用軟件的快捷鍵。對于程序員來說&#xff0c;每天使用時間最長的軟件恐怕就是IDE&#xff08;Integrated Development Environment&#xff09;了。如果你…

java反射對象賦值_Java反射詳解

反射(Reflection)能夠讓運行于 JVM 中的程序檢測和修改運行時的行為。Class類提供了以下方法四個public方法&#xff0c;用于獲取某個類的構造方法&#xff1a;Constructor getConstructor(Class[] params)// 根據構造函數的參數&#xff0c;返回一個具體的具有public屬性的構造…

Oracle裝置后果

來歷&#xff1a;網海拾貝 本日未來誥日裝置Oracle后&#xff0c;出現了兩個后果。 經過過程SQL Plus不竭無法連接長途數據庫&#xff0c;提醒錯誤ORA-12514:TNS:監聽過程不能解析在連接描繪符中給出的SERVICE_NAME。 厥后締造用可視化的Net Configuration Assistant東西對監聽…

Java Hashtable hashCode()方法及示例

Hashtable類hashCode()方法 (Hashtable Class hashCode() method) hashCode() method is available in java.util package. hashCode()方法在java.util包中可用。 hashCode() method is used to return the hash code value for this object in this Hashtable. hashCode()方法…

C---蟬、蜻蜓、蜘蛛

【問題描述】 已知 腿/條翅膀/對蟬61蜻蜓62蜘蛛80 現有小蟲n只&#xff0c;共有X條腿和Y對翅膀&#xff0c;問蟬、蜻蜓、蜘蛛各有多少只&#xff1f;請使用循環的知識解決&#xff0c;數據確保有解。 【輸入形式】三個用空格隔開的整數&#xff0c;依次為n、X、Y 【輸出形式】…

輪廓(查找和繪制輪廓、輪廓的表達與組織、輪廓的特性)

目錄1、輪廓的定義2、如何在圖像中找到輪廓opencv自帶的查找輪廓函數:findContours()3、輪廓的表達方式1.頂點的序列2.Freeman鏈碼4、輪廓之間的組織方式5、輪廓的特點&#xff08;這部分可以展開來詳細探討&#xff0c;這里不做過多解釋&#xff09;6、輪廓的匹配7、繪制輪廓d…