當前位置:首頁 » 操作系統 » 幀差分演算法

幀差分演算法

發布時間: 2022-07-18 23:38:14

『壹』 視頻監控中,三幀差分法的運動目標檢測的原理是什麼

對於幀差法的」雙影」現象,有人提出來了三幀差法。其原理如下所示:
1. 由i(t)-i(t-1)得到前景圖 F1
2. 由i(t+1)-i(t)得到前景圖 F2
3. F1 ∩ F2得到前景圖 F3
4. 形態學處理

『貳』 幀間差分法的結束語

實驗表明.利用背景差分和幀間差分讓改進後的視頻運動目標檢測演算法,對視頻圖像像序列中的運動物體檢有更好的效果,並且運算速度快。應該看到,改進後的演算法要求背景與運動物體的對比度大於5%以上,才能檢測出移動的物體。同時,差分法中存在的些缺點仍然沒有得到解決,這些問題還有待進步研究。

『叄』 OpenCV三幀差法

你的程序片段太少了啊。能不能多貼一點,包括變數的完整定義初始化等等。這么一段不好看懂啊
如果嫌麻煩,推薦看一下<<learning opencv>>。書裡面比較詳細。
檢測常用的幀間差分法,書中都有介紹。買一本或者下個電子版看看吧。
電子版下載地址:
http://ishare.iask.sina.com.cn/f/6667035.html

『肆』 什麼叫三幀差分法

3幀圖像做兩次差,再相與,求同存異,得到前景,最後向台下處理,得了。

『伍』 幀間差分法能進行火災圖像識別嗎

三幀差分演算法是相鄰兩幀差分演算法的一種改進方法,它選取連續三幀視頻圖像進行差分運算,消除由於運動而顯露背景影響,從而提取精確的運動目標輪廓信息。該演算法的基本原理是是先選取視頻圖像序列中連續三幀圖像並分別計算相鄰兩幀的差分圖像,然後將差分圖像通過選取適當的閾值進行二值化處理,得到二值化圖像,最後在每一個像素點得到的二值圖像進行邏輯與運算,獲取共同部分,從而獲得運動目標的輪廓信息。 三幀差法的具體演算法如下。 提取連續的三幀圖像,I(k-1),I(k),I(k+1) 。 (1) d(k,k-1) [x,y] = I(k)[x,y] - I(k-1)[x,y] ; d(k,k+1)[x,y] = I(k+1)[x,y] - I(k)[x,y] ; (2) b(k,k-1)[x,y] = 1; if d(k,k-1) [x,y] >= T; b(k,k-1)[x,y] = 0; if d(k,k-1) [x,y] < T; b(k+1,k)[x,y] = 1 if d(k+1,k) [x,y] >= T; b(k+1,k)[x,y] = 0 if d(k+1,k) [x,y] < T; (3) B(k)[x,y] = 1 ; if b(k,k-1)[x,y] && b(k+1,k)[x,y] == 1 ; B(k)[x,y] = 0 ; if b(k,k-1)[x,y] && b(k+1,k)[x,y] ==0 ; 比較關鍵的就是第2步的閾值T的選取問題,單純用otsu演算法分割貌似效果不太好,如果手動設置一個較小的值(如10)效果還行。 用otsu取閾值實現的一個三分差法代碼。效果不是很好。 運行環境 VS2008+OpenCV2.0+windows XP . [cpp] view plainprint?#include 「highgui.h」 #include 「cv.h」 #include 「cxcore.h」 #include 「cvaux.h」 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <vector> #include <windows.h> using namespace std; #pragma comment(lib, 「highgui200.lib」) #pragma comment(lib, 「cv200.lib」) #pragma comment(lib, 「cxcore200.lib」) #pragma comment(lib, 「cvaux200.lib」) #define GET_IMAGE_DATA(img, x, y) ((uchar*)(img->imageData + img->widthStep * (y)))[x] int T = 10; int Num[300]; int Sum[300]; void InitPixel(IplImage * img, int &_low, int &_top) { memset(Num,0,sizeof(Num)); memset(Sum,0,sizeof(Sum)); _low = 255; _top = 0; for(int i = 0;i < img->height;i++) { for(int j = 0;j < img->width;j++) { int temp = ((uchar*)(img->imageData + img->widthStep*i))[j]; if(temp < _low) _low = temp; if(temp > _top) _top = temp; Num[temp] += 1; } } for(int i = 1 ; i < 256 ; i++) { Sum[i] = Sum[i-1]+ i*Num[i]; Num[i] += Num[i-1]; } } int otsu (IplImage *img) { int _low,_top,mbest=0; float mn = img->height*img->width; InitPixel(img,_low,_top); float max_otsu = 0; mbest = 0; if( _low == _top) mbest = _low; else { for(int i = _low; i< _top ; i++) { float w0 = (float)((Num[_top]-Num[i]) / mn); float w1 = 1 - w0; float u0 = (float)((Sum[_top]-Sum[i])/(Num[_top]-Num[i])); float u1 = (float)(Sum[i]/Num[i]); float u = w0*u0 + w1*u1; float g = w0*(u0 - u)*(u0 - u) + w1*(u1 - u)*(u1 - u); if( g > max_otsu) { mbest = i; max_otsu = g; } } } return mbest; } int main() { int ncount=0; IplImage *image1=NULL; IplImage *image2=NULL; IplImage *image3=NULL; IplImage *Imask =NULL; IplImage *Imask1=NULL; IplImage *Imask2=NULL; IplImage *Imask3=NULL; IplImage *mframe=NULL; CvCapture *capture = cvCreateFileCapture(「E:\\Motion\\IndoorGTTest2.avi」); //CvCapture *capture = cvCreateCameraCapture(0); cvNamedWindow(「src」); cvNamedWindow(「dst」); cvNamedWindow(「Imask1」); cvNamedWindow(「Imask2」); cvNamedWindow(「Imask3」); //cvCreateTrackbar(「T」,「dst」,&T,255,0); while(mframe=cvQueryFrame(capture)) { DWORD start=GetTickCount(); if(ncount>1000000000) ncount=100; ncount+=1; if(ncount==1) { image1=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1); image2=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1); image3=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1); Imask =cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1); Imask1=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1); Imask2=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1); Imask3=cvCreateImage(cvGetSize(mframe),IPL_DEPTH_8U,1); cvCvtColor(mframe,image1,CV_BGR2GRAY); } if(ncount==2) cvCvtColor(mframe,image2,CV_BGR2GRAY); if(ncount>=3) { if(ncount==3) cvCvtColor(mframe,image3,CV_BGR2GRAY); else { cvCopy(image2,image1); cvCopy(image3,image2); cvCvtColor(mframe,image3,CV_BGR2GRAY); } cvAbsDiff(image2,image1,Imask1); cvAbsDiff(image3,image2,Imask2); //cvShowImage(「Imask1」,Imask1); //cvShowImage(「Imask2」,Imask2); int mbest1 = otsu(Imask1); cvSmooth(Imask1, Imask1, CV_MEDIAN); cvThreshold(Imask1,Imask1,mbest1, 255, CV_THRESH_BINARY); int mbest2 = otsu(Imask2); cvSmooth(Imask2,Imask2, CV_MEDIAN); cvThreshold(Imask2,Imask2,mbest2, 255, CV_THRESH_BINARY); cout《mbest1《「 」《mbest2《endl; cvAnd(Imask1,Imask2,Imask); /*cvErode(Imask, Imask); cvDilate(Imask,Imask);*/ DWORD finish=GetTickCount(); // cout《finish-start《「ms」《endl; cvShowImage(「src」,image2); cvShowImage(「dst」,Imask); } char c = cvWaitKey(30); if(c==27) break; } return 0; }

『陸』 幀間差分法的分法介紹

幀間差分法的優點是:演算法實現簡單,程序設計復雜度低;對光線等場景變化不太敏感,能夠適應各種動態環境,穩定性較好。其缺點是:
不能提取出對象的完整區域,只能提取出邊界;同時依賴於選擇的幀間時間間隔。對快速運動的物體,需要選擇較小的時間間隔,如果選擇不合適,當物體在前後兩幀中沒有重疊時,會被檢測為兩個分開的物體:而對慢速運動的物體,應該選擇較大的時間差,如果時間選擇不適當,當物體在前後兩幀中幾乎完全重疊時,則檢測不到物體。 鑒於背景差分法和幀間差分法的優缺點,我們將這兩種方法結合起來,使它們優勢互補,從而克服相互的弱點,提高運動檢測的效果。但是在實際的場景中,即便是室內環境,也存在光線等各種變化造成的干擾,或者人為造成的開燈等光線的強烈變化。所以在背景差分法的實現中,它的固定背景不能一成不變。如果不進行重新初始化,錯誤的檢測結果將隨時間不斷累計,造成惡性循環,從而造成監控失效。因此,我們在提出檢測演算法的同時,要建立背景更新模型。保證背景圖像能隨著光線的變化而變化,確保檢測的准確性。
提出新演算法的思想
在視頻圖像序列中,利用已有的背景差分法和幀間差分法作為啟示,將動態圖像中連續兩幀差圖像和背景差圖像直接進行與操作,再將結果進行二值化處理得到運動結果。這樣就達到了加大目標信息的權重,同時抑制了靜態背景的效果,得到的運動檢測圖像包含了更多目標的信息,不僅包含目標輪廓而且還有目標輪廓內的目標相關點,從而將運動目標從背景圖像中分離出來,最終得到視頻序列圖像中運動存在與否的二值化圖像。

『柒』 幀間差分法的詳細原理及講解

幀間差分法是一種通過對視頻圖像序列中相鄰兩幀作差分運算來獲得運動目標輪廓的方法,它可以很好地適用於存在多個運動目標和攝像機移動的情況。

『捌』 幀間差分法的簡介

當監控場景中出現異常物體運動時,幀與幀之間會出現較為明顯的差別,兩幀相減,得到兩幀圖像亮度差的絕對值,判斷它是否大於閾值來分析視頻或圖像序列的運動特性,確定圖像序列中有無物體運動。圖像序列逐幀的差分,相當於對圖像序列進行了時域下的高通濾波。

『玖』 幀間差分法的演算法描述

(l)、對序列圖像進行3×3中值濾波預處理,去掉圖像隨機雜訊。減少以後運算的復雜度,克服雜訊對圖像處理結果的干擾。
(2)、從視頻圖像序列中選取出背景圖像所阢砂,使其只包含固定的背景圖像:
(3)、在視頻圖像序列中選取連續的兩幀圖像,其中前一幀圖像pk-1(x,y),當前幀圖像pk(x,y);
(4)、計算當前幀與背景幀的差得FD(x,y),從 圖像中提取出完整的目標;
(5)、計掉當前1幀的差得FG(x,y),得到目標的變化量;
(6)、求幀差FD(x,y)與,FG(x,y)的交集得到運動目標粗糙的運動區域幽像,
(7)、數學形態學運算使得運動區域封畢、連續、完整,並去掉背持中的雜訊。
其中:(略)

熱點內容
手機熱點密碼忘了怎麼辦 發布:2025-03-15 09:28:26 瀏覽:362
緩解壓力鍛煉方法 發布:2025-03-15 09:23:01 瀏覽:426
impdp存儲過程 發布:2025-03-15 09:20:05 瀏覽:741
pythoniris 發布:2025-03-15 09:05:27 瀏覽:190
浪淘沙伺服器怎麼沒有了 發布:2025-03-15 09:05:26 瀏覽:100
ftprpm安裝包下載 發布:2025-03-15 09:03:53 瀏覽:723
如何判斷背包配置 發布:2025-03-15 09:03:00 瀏覽:900
淘寶api源碼 發布:2025-03-15 09:00:00 瀏覽:160
壓縮復原修車 發布:2025-03-15 08:46:52 瀏覽:78
linux調試匯編 發布:2025-03-15 08:38:09 瀏覽:108