內(nèi)顯示VideoPath路徑的視頻文件 int OpenVideo(CString source_video_path,HDC hdc,CRect rect);//打開(kāi)待檢測(cè)視頻 [0126] void PlayVideoFrame(int frame_position);//播放frame_position所在幀視 頻
[0127] void ZonePlayVideo(int framepos,IplImage*imgFrame);//將播放的視頻幀劃 分區(qū)域int PlayVideoSpeedO ;//視頻播放的速度OnStartO ;//開(kāi)始播放視頻 [0128] void 0nParameterset();//設(shè)置參數(shù)。
[0129] 背景建模,實(shí)施例二
[0130] 1.混合高斯背景建模
[0131] 1)描述:背景的來(lái)源是對(duì)較長(zhǎng)一段時(shí)間內(nèi)背景像素點(diǎn)的密度統(tǒng)計(jì)進(jìn)行分析得出 的,該方法是基于統(tǒng)計(jì)的一種方法,計(jì)算的復(fù)雜度較大;因?yàn)楝F(xiàn)實(shí)環(huán)境中,道路交通的背景 是很復(fù)雜的,所以背景像素的呈現(xiàn)規(guī)律大多出現(xiàn)多峰的情況。對(duì)于多峰的情況,每個(gè)像素點(diǎn) 的顏色變化規(guī)律并不是有單個(gè)的高斯分布來(lái)確定的,而是由多個(gè)高斯分布在不同權(quán)重的情 況下疊加決定的。
[0132] 2)說(shuō)明:調(diào)用OpenCV庫(kù)函數(shù)封裝好的該方法接口。
[0133] 2.平均背景建模
[0134] 1)描述:將所需要的檢測(cè)幀的相同位置的像素點(diǎn)值和背景中相同位置的像素點(diǎn)值 相減,得到要檢測(cè)的前景。此方法對(duì)光照的變化比較敏感。
[0135] 2)說(shuō)明:該平均背景建模方法,在對(duì)視頻幀序列進(jìn)行處理之前要將視頻幀序列圖 片轉(zhuǎn)化為灰度圖片,將當(dāng)前幀圖片和對(duì)應(yīng)的背景幀圖片相減之后二值化前景圖片,然后對(duì) 背景更新。
[0136] 3)平均建模流程如圖4。
[0137] 3.錄制背景視頻
[0138] 1)描述:背景建模之后得到背景視頻幀序列,該子功能就是將得到的背景幀序列 保存到PC機(jī)本地,這樣當(dāng)系統(tǒng)關(guān)閉時(shí),也可以看到對(duì)視頻處理之后的背景幀序列。
[0139] 2)說(shuō)明:與讀取視頻一樣,錄制的視頻幀序列也同樣是AVI格式,否則將不能進(jìn)行 錄制。
[0140] 3)錄制背景視頻流程如圖5。
[0141] 4.獲取已錄時(shí)間、已錄幀數(shù)和已錄狀態(tài)
[0142] 1)描述:當(dāng)背景視頻進(jìn)行錄制時(shí),能夠得到背景錄制的時(shí)間、錄制幀數(shù)和錄制狀 ??τ 〇
[0143] 2)說(shuō)明:由于播放一幀視頻的時(shí)間很短,所以獲取到的視頻時(shí)間要盡可能的準(zhǔn)確, 采用double類(lèi)型的數(shù)據(jù)結(jié)構(gòu)對(duì)時(shí)間進(jìn)行操作,而錄制幀數(shù)采用int類(lèi)型的數(shù)據(jù)結(jié)構(gòu)。
[0144] 3)獲取錄制時(shí)間、錄制狀態(tài)及錄制幀數(shù)流程如圖6。
[0145] 5.保存單幀背景圖片
[0146] 1)描述:當(dāng)對(duì)待檢測(cè)時(shí)間進(jìn)行背景建模之后得到背景幀序列,能保存單個(gè)的視頻 中貞圖片。
[0147] 2)說(shuō)明:要保存的圖片格式只能是BMP格式,系統(tǒng)不允許用戶(hù)選擇其他非法格式, 若是選擇的圖片格式不正確,那么將會(huì)保存失敗。
[0148] 接口程序如下具體實(shí)施如下,
[0149] void AreaDivision(IplImage*pImg,UINT areathreshold);區(qū)域分割
[0150] void BKSubO;背景建模
[0151] LRESULT OnUpdateData(WPARAM wParam,LPARAM IParam);更新參數(shù)
[0152] void OnBackgroundvideoSave();保存背景視頻
[0153] void 0nSavebgpicture();保存背景圖片
[0154] void 0nSingleframe();單幀前進(jìn)視頻
[0155] void OnPauseO ;//暫停視頻播放
[0156] void OnStartO ;//開(kāi)始視頻播放
[0157] void 0nAveragecheck();//平均建模
[0158] void 0nGaussecheck();//高斯建模。
[0159] 檢測(cè)并提取運(yùn)動(dòng)目標(biāo),實(shí)施例三
[0160] 1.在背景建模之后,通過(guò)背景差分法就可以得到前景,在對(duì)前景進(jìn)行提取時(shí),要盡 可能準(zhǔn)確地檢測(cè)目標(biāo)前景,檢測(cè)到的目標(biāo)前景的形狀和面積比例要盡可能真實(shí)。錄制前景 視頻
[0161 ] 1)描述:背景建模之后得到前景視頻幀序列,該子功能就是將得到的前景幀序列 保存到PC機(jī)本地,這樣當(dāng)系統(tǒng)關(guān)閉時(shí),也可以看到對(duì)視頻處理之后的前景幀序列。
[0162] 2)說(shuō)明:與讀取視頻一樣,錄制的視頻幀序列也同樣是AVI格式,否則將不能進(jìn)行 錄制。
[0163] 2.獲取錄制時(shí)間、錄制狀態(tài)及錄制幀數(shù)
[0164] 1)描述:當(dāng)前景視頻進(jìn)行錄制時(shí),能夠得到前景錄制的時(shí)間、錄制幀數(shù)和錄制狀 ??τ 〇
[0165] 2)說(shuō)明:由于播放一幀視頻的時(shí)間很短,所以獲取到的視頻時(shí)間要盡可能的準(zhǔn)確, 采用double類(lèi)型的數(shù)據(jù)結(jié)構(gòu)對(duì)時(shí)間進(jìn)行操作,而錄制幀數(shù)采用int類(lèi)型的數(shù)據(jù)結(jié)構(gòu)。
[0166] 3.保存單幀前景圖片
[0167] 1)描述:當(dāng)對(duì)待檢測(cè)時(shí)間進(jìn)行背景建模之后得到前景幀序列,能保存單個(gè)的視頻 中貞圖片。
[0168] 2)說(shuō)明:要保存的圖片格式只能是BMP格式,系統(tǒng)不允許用戶(hù)選擇其他非法格式, 若是選擇的圖片格式不正確,那么將會(huì)保存失敗。
[0169] 4.設(shè)置參數(shù)
[0170] 1)描述:當(dāng)對(duì)待檢測(cè)時(shí)間進(jìn)行背景建模之后得到前景幀序列,要得到運(yùn)動(dòng)目標(biāo)的 前景,需要對(duì)有前景有效閾值面積、前景二值化閾值和平均建模參數(shù)進(jìn)行設(shè)置。
[0171] 2)說(shuō)明:有效閾值面積和前景二值化閾值的值為整數(shù),平均建模參數(shù)值的有效數(shù) 字一般精確到小數(shù)點(diǎn)后三位或者兩位。
[0172] 接口程序如下具體實(shí)施如下,
[0173] void AreaDivision(IplImage*pImg,UINT areathreshold);區(qū)域分割
[0174] cvPyrSegmentation(pImg,deslmg,storage,&comp,4,200,220);金字塔分割前景
[0175] cvFindContours(desImg,storage,&comp,sizeof(CvContour),CV_RETR_ EXTERNAL, CV_CHAIN_APPR0X_SMPLE, cvPoint (0,0));獲取前景目標(biāo)
[0176] LRESULT OnUpdateData(WPARAM wParam,LPARAM IParam);更新參數(shù)
[0177] void OnForegroundvideoSave();保存背景視頻
[0178] void 0nSavefgpicture();保存背景圖片
[0179] void 0nSingleframe();視頻單幀前進(jìn)
[0180] void OnPauseO ;//暫停視頻播放
[0181] void OnStartO ;//開(kāi)始視頻播放
[0182] void 0nFramesubcheck();//幀差法。
[0183] 卡爾曼濾波跟蹤,實(shí)施例四
[0184] 如圖8,本系統(tǒng)在進(jìn)行詳細(xì)設(shè)計(jì)時(shí),依據(jù)就是Kalman濾波的核心公式,對(duì)選定的運(yùn) 動(dòng)目標(biāo)的運(yùn)動(dòng)位置進(jìn)行個(gè)跟蹤。
[0185] 接口程序如下具體實(shí)施如下,
[0186] void Process() ;//Kalman濾波跟蹤主要處理函數(shù)
[0187] CvMat*GetMeasurement(CvMat*mat,CvPoint previousCentre,CvPoint currentCentre);//觀測(cè)矩陣//狀態(tài)矩陣
[0188] void GetCurentState(CvKalman*kalman,CvPoint previousCentre,CvPoint currentCentre) ; CvKalman*Initia 1 izeKalman(CvKalman*kalman) ; //4tKalmanX^t^.
[0189] CvRect ResetRect(CvRect largerect,CvRect smallRect);//重置跟蹤矩形框。
[0190] CKalman(CWnd*pParent = NULL);//標(biāo)準(zhǔn)構(gòu)造函數(shù)
[0191] 交通參數(shù)的提取模塊,實(shí)施例五
[0192] 主要包括的子功能道路交通路面占有率的提取、車(chē)流量的提取和車(chē)速的提取。在 進(jìn)行交通參數(shù)提取時(shí),要能夠?qū)崟r(shí)的反映出視頻中的道路交通的狀況。
[0193] 1.提取路面占有率
[0194] 1)描述:將檢測(cè)到的視頻幀序列中所有運(yùn)動(dòng)車(chē)輛進(jìn)行統(tǒng)計(jì),計(jì)算所有車(chē)輛的面積 之后,與視頻幀中所觀察到的交通道路面積進(jìn)行比值,得到的值就是道路交通路面占有率。
[0195] 2)說(shuō)明:路面占有率的比值有百分制和分?jǐn)?shù)制,根據(jù)系統(tǒng)需要,將占有率的制轉(zhuǎn)換 為百分制,以便后邊對(duì)交通擁堵等級(jí)的檢測(cè)。
[0196] 3)獲取路面占有率流程圖如圖10。
[0197] 2.提取車(chē)流量
[0198] 1)描述:將檢測(cè)到的視頻幀序列中所有運(yùn)動(dòng)車(chē)輛進(jìn)行統(tǒng)計(jì),計(jì)算所有單位時(shí)間內(nèi) 通過(guò)道路中某一橫截面的車(chē)輛個(gè)數(shù)。
[0199] 2)說(shuō)明:因?yàn)槌鞘械缆方煌ㄒ曨l比較復(fù)雜,所以檢測(cè)到的車(chē)流量的數(shù)據(jù)會(huì)有不精 確的情況存在。
[0200] 3)獲取路面占有率流程如圖11。
[0201] 3.提取車(chē)速
[0202] 1)描述:計(jì)算