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

詳解OpenCV的視頻背景/前景分割(背景建模/前景提取)類cv::BackgroundSubtractorMOG2,并利用它實現(xiàn)對道路監(jiān)控視頻前景/背景的提取

這篇具有很好參考價值的文章主要介紹了詳解OpenCV的視頻背景/前景分割(背景建模/前景提取)類cv::BackgroundSubtractorMOG2,并利用它實現(xiàn)對道路監(jiān)控視頻前景/背景的提取。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

cv::BackgroundSubtractorMOG2和cv::bgsegm::BackgroundSubtractorMOG一樣,都是基于高斯混合模型的背景與前景分割算法。

cv::BackgroundSubtractorMOG2是對cv::bgsegm::BackgroundSubtractorMOG的改進,經(jīng)過改進,它實現(xiàn)了自適應高斯混合模型參數(shù)的更新,增強了復雜場景背景檢測的性能。

具體的算法原理可以參見下面兩篇論文:
第一篇:
Zoran Zivkovic and Ferdinand van der Heijden. Efficient adaptive density estimation per image pixel for the task of background subtraction. Pattern recognition letters, 27(7):773–780, 2006.
第二篇:
Zoran Zivkovic. Improved adaptive gaussian mixture model for background subtraction. In Pattern Recognition, 2004. ICPR 2004. Proceedings of the 17th International Conference on, volume 2, pages 28–31. IEEE, 2004.

第一篇論文的摘要如下:

We analyze the computer vision task of pixel-level background subtraction. We present recursive equations that are used to constantly update the parameters of a Gaussian mixture model and to simultaneously select the appropriate number of components for each pixel. We also present a simple non-parametric adaptive density estimation method. The two methods are compared with each other and with some previously proposed algorithms.

翻譯如下:
分析了像素級背景差分的計算機視覺任務。我們提出了遞歸方程,用于不斷更新高斯混合模型的參數(shù),同時為每個像素選擇適當數(shù)量的組件。我們還提出了一種簡單的非參數(shù)自適應密度估計方法。對這兩種方法進行了比較,并與以前提出的一些算法進行了比較。

從第一篇論文的摘要可以看出,類cv::BackgroundSubtractorMOG2能夠自動更新高斯混合模型的參數(shù)。

第二篇論文的摘要如下:

Background subtraction is a common computer vision task. We analyze the usual pixel-level approach. We develop an efficient adaptive algorithm using Gaussian mixture probability density. Recursive equations are used to constantly update the parameters and but also to simultaneously select the appropriate number of components for each pixel.

翻譯如下:
背景減法是一種常見的計算機視覺任務。我們分析了常用的像素級方法。我們開發(fā)了一種利用高斯混合概率密度的高效自適應算法。遞歸方程用于不斷更新參數(shù),但也用于同時為每個像素選擇適當數(shù)量的組件。

從第二篇論文的摘要可以看出,類cv::BackgroundSubtractorMOG2除了能夠自動更新高斯混合模型的參數(shù),而且可以為每個像素選擇適當數(shù)量的組件,重點是在像素級尺度上進行處理。

繼承于基類cv::BackgroundSubtractor的成員函數(shù)apply()和getBackgroundImage()的詳細介紹見博文:https://blog.csdn.net/wenhao_ir/article/details/125007017

其特有的成員函數(shù)如下:

virtual double cv::BackgroundSubtractorMOG2::getBackgroundRatio( ) const

成員函數(shù)getBackgroundRatio()的介紹見博文 https://blog.csdn.net/wenhao_ir/article/details/125010301

virtual double cv::BackgroundSubtractorMOG2::getComplexityReductionThreshold( ) const

成員函數(shù)getComplexityReductionThreshold()用于返回復雜性降低閾值。此參數(shù)定義每一個樣本中支持高斯混合模型某個分量存在需要的樣本數(shù)量。CT=0.05是所有樣本的默認值。通過將CT設置為0,可以得到與標準Stauffer&Grimson算法非常相似的算法。

virtual bool cv::BackgroundSubtractorMOG2::getDetectShadows( )	const

成員函數(shù)getDetectShadows()用于返回陰影檢測標志。如果陰影檢測標志的值為true,那么算法會檢測陰影并對其進行標記。

virtual int cv::BackgroundSubtractorMOG2::getHistory( )	const

成員函數(shù)getHistory()用于返回影響背景模型的歷史幀數(shù)。

virtual int cv::BackgroundSubtractorMOG2::getNMixtures(	) const

成員函數(shù)getNMixtures()用于返回高斯混合模型中高斯分量的個數(shù)。

virtual double cv::BackgroundSubtractorMOG2::getShadowThreshold	( )	const

成員函數(shù)getShadowThreshold()的介紹見博文 https://blog.csdn.net/wenhao_ir/article/details/125007017

virtual int cv::BackgroundSubtractorMOG2::getShadowValue( )	const

成員函數(shù)getShadowThreshold()的介紹見博文 https://blog.csdn.net/wenhao_ir/article/details/125007017

virtual double cv::BackgroundSubtractorMOG2::getVarInit( )	const

成員函數(shù)getVarInit()用于返回每個高斯分量的初始方差。

virtual double cv::BackgroundSubtractorMOG2::getVarMax( ) const

成員函數(shù)getVarMax()用于返回所有高斯分量中的最大方差。

virtual double cv::BackgroundSubtractorMOG2::getVarMin(	) const

成員函數(shù)getVarMin()用于返回所有高斯分量中的最小方差。

virtual double cv::BackgroundSubtractorMOG2::getVarThreshold( )	const

成員函數(shù)getVarThreshold()用于返回返回像素模型匹配的方差閾值。這個參數(shù)是Mahalanobis距離(馬氏距離)平方的主閾值,它用于判斷樣本是否被背景模型很好的描述。它相當于上面論文中的Cthr參數(shù)。

virtual double cv::BackgroundSubtractorMOG2::getVarThresholdGen	( )	const

成員函數(shù)getVarThresholdGen()用于返回是否要為像素新建高斯混合混型組件的方差閾值,對應于論文中的參數(shù)Tg 。如果根據(jù)參數(shù)VarThreshold,樣本不能匹配現(xiàn)有背景模型的話,就得考慮是否要為其新建高斯混合混型組件了,那么什么情況下為其新建高斯混合混型組件呢,就根據(jù)值VarThresholdGe來判斷,如果這個樣本的標準差的3倍大于等VarThreshold,則為其新建高斯混合混型組件,否則,視為前景。顯然,這個值越小,產生的組件越多。較高的VarThreshold雖然組件數(shù)量會較小,但也會導致這些組件過大。該參數(shù)默認值9,來歷為當標準差取3時得到的,標準差為3,則其3倍為9。

virtual void cv::BackgroundSubtractorMOG2::setBackgroundRatio(double ratio)	

成員函數(shù)setBackgroundRatio()用于設置背景比率,詳情見對成員函數(shù)getBackgroundRatio()的介紹。

virtual void cv::BackgroundSubtractorMOG2::setComplexityReductionThreshold(double ct)	

成員函數(shù)setComplexityReductionThreshold()用于設置值ComplexityReductionThreshold,詳見對成員函數(shù)getComplexityReductionThreshold()的介紹。

virtual void cv::BackgroundSubtractorMOG2::setDetectShadows	(bool detectShadows)	

成員函數(shù)setDetectShadows()用于設置是否要進行陰影檢測。

virtual void cv::BackgroundSubtractorMOG2::setHistory(int history)	

成員函數(shù)setHistory()用于設置影響背景模型的歷史幀數(shù)。

virtual void cv::BackgroundSubtractorMOG2::setNMixtures	(int nmixtures)	

成員函數(shù)setNMixtures()用于設置高斯混合模型中高斯分量的個數(shù)。

virtual void cv::BackgroundSubtractorMOG2::setShadowThreshold(double threshold)	

成員函數(shù)setShadowThreshold()的詳情見博文 https://blog.csdn.net/wenhao_ir/article/details/125007017

virtual void cv::BackgroundSubtractorMOG2::setShadowValue(int value)	

成員函數(shù)setShadowValue()的詳情見博文 https://blog.csdn.net/wenhao_ir/article/details/125007017

virtual void cv::BackgroundSubtractorMOG2::setVarInit(double varInit)	

成員函數(shù)setVarInit()用于設置參數(shù)VarInit,詳情見對成員函數(shù)getVarInit()的介紹。

virtual void cv::BackgroundSubtractorMOG2::setVarMax(double varMax)	

成員函數(shù)setVarMax()用于設置參數(shù)VarMax,詳情見對成員函數(shù)getVarMax()的介紹。

virtual void cv::BackgroundSubtractorMOG2::setVarMin(double varMin)	

成員函數(shù)setVarMin()用于設置參數(shù)VarMin,詳情見對成員函數(shù)getVarMin()的介紹。

virtual void cv::BackgroundSubtractorMOG2::setVarThreshold(double varThreshold)	

成員函數(shù)setVarThreshold()用于設置參數(shù)VarThreshold,詳情見對成員函數(shù)getVarThreshold()的介紹。

virtual void cv::BackgroundSubtractorMOG2::setVarThresholdGen(double varThresholdGen)	

成員函數(shù)setVarThresholdGen()用于設置參數(shù)VarThresholdGen,詳情見對成員函數(shù)getVarThresholdGen()的介紹。

在上示例代碼前,還需要介紹下函數(shù)createBackgroundSubtractorMOG2(),

函數(shù)createBackgroundSubtractorMOG2()用于構建類BackgroundSubtractorMOG2的實例化對象,并返回對象指針。
函數(shù)createBackgroundSubtractorMOG2()的原型如下:

Ptr<BackgroundSubtractorMOG2> cv::createBackgroundSubtractorMOG2(
																 int history = 500,
																 double varThreshold = 16,
																 bool 	detectShadows = true )	

參數(shù)history和varThreshold已經(jīng)在上面介紹過了,所以只說下detectShadows這個參數(shù),這個參數(shù)表示是否對前景進行陰影檢測,默認值為ture,表示啟用前景陰影檢測。

下面上示例代碼:
示例代碼中用到的視頻下載鏈接:https://pan.baidu.com/s/1X08cwwSE4DUvzT0XvHvpvw?pwd=9yyq

//博主微信/QQ 2487872782
//有問題可以聯(lián)系博主交流
//有圖像處理開發(fā)需求也請聯(lián)系博主
//圖像處理技術交流QQ群 271891601

//OpenCV版本:3.0
//VS版本:2013

#include <opencv2/opencv.hpp>

#include <iostream>
#include <sstream>

using namespace cv;
using namespace std;

void processVideo(Ptr<BackgroundSubtractorMOG2> pBackgroundMOG2, string videoFilename)
{
	cv::Mat frame, FGMask, BGimgae;
	int keyboard = 0;
	// 視頻獲取
	VideoCapture capture(videoFilename);
	if (!capture.isOpened())
		exit(EXIT_FAILURE);

	// 按下q鍵或esc鍵退出
	while ((char)keyboard != 'q' && (char)keyboard != 27)
	{
		// 讀取當前幀
		if (!capture.read(frame))
			exit(EXIT_FAILURE);
		// 圖像尺寸縮小
		cv::resize(frame, frame, cv::Size(), 0.3, 0.3);
		// 背景建模參數(shù)設定
		//pBackgroundMOG2->setHistory(200);
		//pBackgroundMOG2->setDist2Threshold(600);

		
		pBackgroundMOG2->setShadowThreshold(0.5);
		pBackgroundMOG2->setShadowValue(10);

		// 計算得到前景掩碼圖像
		double learningRate = -1;
		pBackgroundMOG2->apply(frame, FGMask, learningRate);

		// 計算得到背景圖像
		pBackgroundMOG2->getBackgroundImage(BGimgae);

		// 輸出當前幀號
		stringstream ss;
		rectangle(frame, cv::Point(10, 2), cv::Point(100, 20), cv::Scalar(255, 255, 255), -1);
		ss << capture.get(CAP_PROP_POS_FRAMES);
		string frameNumberString = ss.str();
		// 左上角顯示幀號
		putText(frame, frameNumberString.c_str(), cv::Point(15, 15), FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0));

		// 輸出結果
		imshow("當前視頻幀", frame);
		imshow("背景圖像", BGimgae);
		imshow("前景掩碼圖像", FGMask);
		keyboard = waitKey(30);
	}
	capture.release();
}
int main(int argc, char* argv[])
{
	// 實例化背景建模算法類
	Ptr<BackgroundSubtractorMOG2> pBackgroundMOG2 = createBackgroundSubtractorMOG2();
	string inputPath = "car1.avi";
	processVideo(pBackgroundMOG2, inputPath);
	return 0;
}

運行結果如下圖所示:
詳解OpenCV的視頻背景/前景分割(背景建模/前景提取)類cv::BackgroundSubtractorMOG2,并利用它實現(xiàn)對道路監(jiān)控視頻前景/背景的提取
因為是視頻處理,錄了個視頻,以便大家可以更好觀察結果,視頻在線觀看和下載鏈接如下:
鏈接:https://pan.baidu.com/s/1bmDpp0wS_gtIGXA-g2Nt4w?pwd=uaz0

延伸閱讀:
OpenCV3.0中有哪些視頻背景/前景分割(背景建模/前景提取)算法的類,它們各自的算法原理、特點是什么,并附示例代碼
OpenCV4中有哪些視頻背景/前景分割(背景建模/前景提取)算法的類,它們各自的算法原理、特點是什么,并附示例代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-417738.html

到了這里,關于詳解OpenCV的視頻背景/前景分割(背景建模/前景提取)類cv::BackgroundSubtractorMOG2,并利用它實現(xiàn)對道路監(jiān)控視頻前景/背景的提取的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • OpenCV-Python中的圖像處理-GrabCut算法交互式前景提取

    OpenCV-Python中的圖像處理-GrabCut算法交互式前景提取

    cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode=…) img:輸入圖像 mask:掩模圖像,用來確定那些區(qū)域是背景,前景,可能是前景/背景等。 可以設置為: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接輸入 0,1,2,3 也行。 rect :包含前景的矩形,格式為

    2024年02月12日
    瀏覽(20)
  • Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    Python-OpenCV中的圖像處理-GrabCut算法交互式前景提取

    cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode=…) img:輸入圖像 mask:掩模圖像,用來確定那些區(qū)域是背景,前景,可能是前景/背景等。 可以設置為: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接輸入 0,1,2,3 也行。 rect :包含前景的矩形,格式為

    2024年02月13日
    瀏覽(104)
  • opencv 圖像分割與提取(python)

    opencv 圖像分割與提取(python)

    圖像分割與提取 圖像中將前景對象作為目標圖像分割或者提取出來。 對背景本身并無興趣 分水嶺算法及GrabCut算法對圖像進行分割及提取。 用分水嶺算法實現(xiàn)圖像分割與提取 分水嶺算法將圖像形象地比喻為地理學上的地形表面,實現(xiàn)圖像分割,該算法非常有效。 算法原理

    2024年02月04日
    瀏覽(19)
  • 怎么提取視頻中的背景音樂?

    怎么提取視頻中的背景音樂?

    當我們在刷視頻的時候,有時候聽到一個背景音樂很好聽,但是又不知道歌名,比如英語歌,這個時候我們很難找到這首歌,相信有很多朋友會遇到這樣的問題,不知道怎么弄,下面小編給大家推薦一些方法幫助大家輕松地把視頻中的聲音提取出來 方法一:使用“智優(yōu)影”

    2024年02月01日
    瀏覽(29)
  • 【CV大模型SAM(Segment-Anything)】如何保存分割后的對象mask?并提取mask對應的圖片區(qū)域?

    【CV大模型SAM(Segment-Anything)】如何保存分割后的對象mask?并提取mask對應的圖片區(qū)域?

    上一篇文章【CV大模型SAM(Segment-Anything)】真是太強大了,分割一切的SAM大模型使用方法:可通過不同的提示得到想要的分割目標中 詳細介紹了大模型SAM(Segment-Anything)的不同使用方法 ,后面有很多小伙伴給我留言問我分割后的目標對象如何保存,這篇介紹一下分割后的ma

    2024年02月09日
    瀏覽(34)
  • opencv運動目標檢測-背景建模

    opencv運動目標檢測-背景建模

    背景建模 幀差法 由于場景中的目標在運動,目標的影像在不同圖像幀中的位置不同。該類算法對時間上連續(xù)的兩幀圖像進行差分運算,不同幀對應的像素點相減,判斷灰度差的絕對值,當絕對值超過一定閾值時,即可判斷為運動目標,從而實現(xiàn)目標的檢測功能。 幀差法非常

    2024年02月12日
    瀏覽(14)
  • 基于單高斯視頻背景估計的運動目標分割

    基于單高斯視頻背景估計的運動目標分割

    上圖為單高斯視頻背景估計的運動目標分割流程圖,主要包括以下步驟: (1)單高斯背景模型的初始化。 將背景模型初始化為均值 μ ( x , y ) mu(x,y) μ ( x , y ) 和方差 σ 2 ( x , y ) = 1 sigma^2(x,y)=1 σ 2 ( x , y ) = 1 的高斯分布。 (2)運動目標分割 利用如下公式對當前幀的每個像素

    2024年02月02日
    瀏覽(28)
  • 【OpenCV 例程 300篇】223. 特征提取之多邊形擬合(cv.approxPolyDP)

    【OpenCV 例程 300篇】223. 特征提取之多邊形擬合(cv.approxPolyDP)

    『youcans 的 OpenCV 例程200篇 - 總目錄』 目標特征的基本概念 通過圖像分割獲得多個區(qū)域,得到區(qū)域內的像素集合或區(qū)域邊界像素集合。我們把感興趣的人或物稱為目標,目標所處的區(qū)域就是目標區(qū)域。 特征通常是針對于圖像中的某個目標而言的。圖像分割之后,還要對目標區(qū)

    2024年02月04日
    瀏覽(28)
  • opencv基礎57-模板匹配cv2.matchTemplate()->(目標檢測、圖像識別、特征提取)

    opencv基礎57-模板匹配cv2.matchTemplate()->(目標檢測、圖像識別、特征提取)

    OpenCV 提供了模板匹配(Template Matching)的功能,它允許你在圖像中尋找特定模板(小圖像)在目標圖像中的匹配位置。模板匹配在計算機視覺中用于目標檢測、圖像識別、特征提取等領域。 以下是 OpenCV 中使用模板匹配的基本步驟: 加載圖像 : 首先,加載目標圖像和要匹配

    2024年02月13日
    瀏覽(17)
  • OpenCv案例(九): 基于OpenCvSharp圖像分割提取目標區(qū)域和定位

    OpenCv案例(九): 基于OpenCvSharp圖像分割提取目標區(qū)域和定位

    以下原圖中,物體連靠在一起,目的是將其分割開,再提取輪廓和定位 原圖:? ?最終效果: 麻煩的地方是,分割開右下角部分,兩個連在一起的目標物體,下圖所示:? 基本方法:BoxFilter濾波、二值化、輪廓提取,凸包檢測,圖像的矩 代碼如下: 灰度圖像后圖像二值化:

    2024年02月11日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包