郭志彪 段為
摘要;從圖像處理在視頻監(jiān)控的角度出發(fā)提出了一種針對(duì)小型生物的檢測(cè),將Open CV開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)源代碼作為基礎(chǔ)函數(shù)庫(kù),改寫或者調(diào)用其中的函數(shù),在Visual Studio 2015平臺(tái)上編程實(shí)現(xiàn)。將幀差法,背景減除,灰度化,二值化閾值分割等圖像操作應(yīng)用于視頻監(jiān)控中。實(shí)驗(yàn)結(jié)果表明,本文中方法具有良好的實(shí)時(shí)性,能夠精確檢測(cè)和跟蹤小型生物,具有很好的魯棒性和精確性。
關(guān)鍵詞:運(yùn)動(dòng)目標(biāo)檢測(cè);機(jī)器視覺(jué);圖像處理OpenCV
中圖分類號(hào):TP18 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)07-0171-02
運(yùn)動(dòng)目標(biāo)的檢測(cè)及跟蹤技術(shù)在機(jī)器人導(dǎo)航、安全監(jiān)控、航天行業(yè)等領(lǐng)域都有著廣泛的應(yīng)用,并成為當(dāng)前機(jī)器視覺(jué)領(lǐng)域研究重點(diǎn)之一。但是當(dāng)前的技術(shù)對(duì)于移動(dòng)速度快、體積小的小型生物的跟蹤很難達(dá)到準(zhǔn)確度高,實(shí)時(shí)性強(qiáng)。
1運(yùn)動(dòng)目標(biāo)檢測(cè)的基本方法
近些年來(lái),國(guó)內(nèi)外的學(xué)者們?cè)谶\(yùn)動(dòng)目標(biāo)檢測(cè)的問(wèn)題上,已經(jīng)提供了許多有效的方法,但是很多算法不能同時(shí)滿足實(shí)時(shí)性,精確性的要求,特別是對(duì)于移動(dòng)速度快的小型生物。目前,常用的運(yùn)動(dòng)目標(biāo)檢測(cè)算法有以下幾種:光流法,基于卡爾曼濾波的運(yùn)動(dòng)目標(biāo)跟蹤,背景差分法等。
1.1光流法
光流法基本原理為檢測(cè)序列圖像中出現(xiàn)的瞬時(shí)位移場(chǎng),從連續(xù)的圖像序列中計(jì)算光流場(chǎng),把計(jì)算得到的光流,作為檢測(cè)運(yùn)動(dòng)目標(biāo)的重要特征。光流法不受背景變化的影響,但對(duì)于噪聲多的場(chǎng)景,光流法容易出現(xiàn)誤判的情況。
1.2基于卡爾曼濾波的運(yùn)動(dòng)目標(biāo)跟蹤
基于卡爾曼濾波的運(yùn)動(dòng)目標(biāo)跟蹤是將目標(biāo)的運(yùn)動(dòng)軌跡作為模型,預(yù)測(cè)目標(biāo)下一時(shí)刻的位置。能減少運(yùn)算量,縮小檢測(cè)區(qū)域,但是當(dāng)運(yùn)動(dòng)目標(biāo)長(zhǎng)時(shí)間被遮擋時(shí)會(huì)存在目標(biāo)跟蹤丟失的情況。
1.3背景差分法
背景差分法是事先將圖像儲(chǔ)存起來(lái)作為背景參考模型,再用當(dāng)前圖像與背景作差,找出在灰度上與背景有較大差異的點(diǎn),檢測(cè)運(yùn)動(dòng)區(qū)域。背景差分法對(duì)于運(yùn)動(dòng)速度快的運(yùn)動(dòng)目標(biāo),檢測(cè)準(zhǔn)確,但對(duì)于動(dòng)態(tài)變化的場(chǎng)景,檢測(cè)精度低。
綜上所述,現(xiàn)有技術(shù)存在著對(duì)于快速移動(dòng)的小型生物檢測(cè)精度不高的問(wèn)題。作者試圖基于幀差法,利用Open CV函數(shù)庫(kù),尋求一種針對(duì)移動(dòng)速度快、體積小的運(yùn)動(dòng)物體的檢測(cè)。
研究主要實(shí)現(xiàn)的目標(biāo)是對(duì)移動(dòng)速度快的小型生物的檢測(cè),主要是利用視頻圖像序列中連續(xù)兩到三幀的差異來(lái)檢測(cè)運(yùn)動(dòng)區(qū)域。首先,獲取相鄰兩幀圖像,將前一幀作為背景,用后一幀減去背景,獲取圖像亮度差絕對(duì)值較大的區(qū)域,一般亮度差異較大的區(qū)域可認(rèn)為由運(yùn)動(dòng)物體引起的。幀差法算法實(shí)現(xiàn)簡(jiǎn)單,受光線影響小,適應(yīng)于動(dòng)態(tài)場(chǎng)景,穩(wěn)定性強(qiáng)。但是該算法對(duì)于兩幀獲取時(shí)間間隔要求高,時(shí)間間隔選取不適當(dāng),容易出現(xiàn)“重影”和“空洞”的現(xiàn)象。研究對(duì)該算法進(jìn)行改進(jìn),以提高檢測(cè)的精度。
2系統(tǒng)組成
運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng)主要由視頻獲取,讀取相鄰兩幀,圖像灰度化處理,相鄰幀的圖像對(duì)應(yīng)像素值相減,差分圖像二值化。
系統(tǒng)首先獲取實(shí)時(shí)采集的序列圖像。其次,讀取序列圖像中相鄰兩幀圖像,對(duì)該兩幀圖像進(jìn)行灰度化處理。將前一幀作為背景,將后一幀圖像的像素值減去背景對(duì)應(yīng)的像素值,獲取變化大的區(qū)域,確定運(yùn)動(dòng)目標(biāo)的位置。最后對(duì)運(yùn)動(dòng)目標(biāo)進(jìn)行二值化突顯運(yùn)動(dòng)區(qū)域。
3算法原理
3.1圖像灰度化
研究使用cvtC~lor函數(shù)實(shí)現(xiàn)圖像的灰度化。函數(shù)聲明為src和dst分別是源圖像和輸出圖像;code是一個(gè)掩碼,表示源圖像和輸出圖像之間的轉(zhuǎn)化模式。最后的&tCn表示dst圖像的波段數(shù),默認(rèn)值為0,可從參數(shù)code中推斷。
code的模式包括:
3.2幀差算法
研究采用幀差算法實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)提取,使用函數(shù)subtract()。
函數(shù)聲明為
void subtract(InputArray src1,InputArray src2,OutputArray dst,InputArray mask—noArray(),int dtype=-1)
其中,src1為第一幀圖像,src2為第二幀圖像,dst為輸出圖像,mask為自定義掩碼。])type為兩幀相減的方式。
本函數(shù)實(shí)現(xiàn)了幀差算法,讀取一段序列圖像,獲取相鄰兩幀的圖像,將前一幀圖像作為背景src1(I),后一幀作為當(dāng)前圖像src2(I),用當(dāng)前圖像的像素值減去背景相應(yīng)的像素值,獲取變化較大的區(qū)域,該區(qū)域可認(rèn)為由運(yùn)動(dòng)物體造成,具體公式可參考公式(1)。
dst(1)=saturate(srcl(D-src2(I))if mask(I)≠0 (1)
3.3差分圖像二值化
差分圖像二值化是在上一步獲取的差分圖像的基礎(chǔ)上,進(jìn)一步凸顯運(yùn)動(dòng)物體的區(qū)域。具體實(shí)現(xiàn)為先設(shè)定一個(gè)閾值T,當(dāng)圖像的像素值大于該閾值時(shí)設(shè)定為1,否則設(shè)定為0。接著將所有設(shè)定為1的點(diǎn)的灰度值設(shè)置為255,所有設(shè)定為0的點(diǎn)的灰度值設(shè)置設(shè)置為0,具體公式可參考公式(2)。
(2)
4算法在編程環(huán)境下的具體實(shí)現(xiàn)
研究算法的具體實(shí)現(xiàn)如下:首先建立一個(gè)VideoCapture結(jié)構(gòu)體,導(dǎo)入一段序列圖像。然后讀取該序列圖像中的一幀圖像,保存在類型為Mat的結(jié)構(gòu)體中,等待5毫秒后,讀取下一幀圖像,同樣保存在類型Mat的結(jié)構(gòu)體中。接著調(diào)用灰度化函數(shù)cvtColor()對(duì)兩幀圖像進(jìn)行預(yù)處理。調(diào)用矩陣相減函數(shù)subtract(),設(shè)定一個(gè)閾值,對(duì)相減的差分圖像進(jìn)行二值化。最后調(diào)用namedWindow()函數(shù)建立窗口并調(diào)用imshow()函數(shù)顯示圖像。
5實(shí)驗(yàn)結(jié)果及分析
研究對(duì)幀差算法進(jìn)行改進(jìn),調(diào)用OpenCV函數(shù)庫(kù)中的函數(shù),在Visual Studio 2015平臺(tái)編程實(shí)現(xiàn)了對(duì)于小型生物的運(yùn)動(dòng)檢測(cè),實(shí)驗(yàn)結(jié)果見(jiàn)下圖。
圖2所示為實(shí)時(shí)圖像第一幀,圖3所示為相鄰幀,將圖2,圖3分別灰度化后再相減后得到圖4所示圖像,圖5為二值化后的圖像。其中在獲取相鄰兩幀的時(shí)間間隔以及二值化的閾值,需根據(jù)實(shí)際處理的圖片來(lái)不斷調(diào)整數(shù)值,經(jīng)過(guò)多次實(shí)驗(yàn)不斷嘗試后,時(shí)間間隔在10-30毫秒之間為最好,二值化的閾值在10-13時(shí),運(yùn)動(dòng)物體的真實(shí)目標(biāo)區(qū)域較完整,“重影”、“空洞”現(xiàn)象較少。
研究算法檢測(cè)效果比較好,對(duì)于移動(dòng)速度快的小型生物也能很好的檢測(cè)出來(lái),真實(shí)目標(biāo)區(qū)域較完整,背景噪音較少,而它錯(cuò)誤可以通過(guò)形態(tài)學(xué)去噪、陰影抑制、空洞修補(bǔ)加以完善。
6結(jié)語(yǔ)
研究調(diào)用OpenCV函數(shù)庫(kù)中的函數(shù),對(duì)幀差法進(jìn)行改進(jìn),實(shí)現(xiàn)了對(duì)于小型生物的運(yùn)動(dòng)檢測(cè)。改善了“空洞”重影”的情況,提取的真實(shí)目標(biāo)區(qū)域較完整,檢測(cè)效果理想,解決對(duì)于小型生物的運(yùn)動(dòng)檢測(cè)精度不高的問(wèn)題,具有一定的實(shí)用性。