国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于差分法的運(yùn)動(dòng)目標(biāo)檢測(cè)設(shè)計(jì)

2012-11-22 06:17張曉華段美霞
關(guān)鍵詞:差分法過(guò)濾器圖像處理

張曉華,段美霞

(華北水利水電學(xué)院 信息工程系,河南 鄭州 450011)

隨著生產(chǎn)生活對(duì)智能監(jiān)控、人機(jī)交互和視覺(jué)導(dǎo)航提出的要求日益提高,計(jì)算機(jī)視覺(jué)已成為信息技術(shù)一個(gè)重要的研究方向,而目標(biāo)檢測(cè)則是計(jì)算機(jī)視覺(jué)的基礎(chǔ)和關(guān)鍵技術(shù).目標(biāo)檢測(cè)中,最活躍的研究分支是基于視頻的運(yùn)動(dòng)目標(biāo)檢測(cè),其目的是從連續(xù)視頻幀中檢測(cè)出運(yùn)動(dòng)的物體,然后提供給檢測(cè)后處理程序用于實(shí)現(xiàn)定位、跟蹤、報(bào)警與識(shí)別等應(yīng)用.

AForge.NET是一個(gè)開(kāi)源C#框架,利用它提供的圖像和視頻框架類可以輕松地實(shí)現(xiàn)各種圖像處理算法,并可進(jìn)一步建立特定的運(yùn)動(dòng)目標(biāo)檢測(cè)應(yīng)用.

1 運(yùn)動(dòng)目標(biāo)檢測(cè)方法對(duì)比

運(yùn)動(dòng)目標(biāo)在各個(gè)領(lǐng)域都廣泛存在,如活動(dòng)的動(dòng)物、行駛的運(yùn)輸工具或其他自然界中普遍存在的運(yùn)動(dòng)物體等,檢測(cè)的目的是在連續(xù)視頻中將變化區(qū)域從背景中分割出來(lái).由于光照、背景的變化、攝像機(jī)的抖動(dòng)、運(yùn)動(dòng)目標(biāo)的自遮擋和互遮擋等現(xiàn)象的存在,給運(yùn)動(dòng)目標(biāo)的正確檢測(cè)帶來(lái)了極大的挑戰(zhàn).檢測(cè)和分割運(yùn)動(dòng)目標(biāo)的正確與否極大地影響著運(yùn)動(dòng)目標(biāo)能否被正確識(shí)別、跟蹤和分類,在計(jì)算機(jī)視覺(jué)中占據(jù)著重要地位.

目前,常用的運(yùn)動(dòng)目標(biāo)檢測(cè)方法有三種: 幀差分法、背景差分法和光流法[1].

前兩種方法主要用于靜態(tài)場(chǎng)景和有一定實(shí)時(shí)性要求的場(chǎng)合,兩者都基于差分原理,都通過(guò)差分運(yùn)算來(lái)獲得被比較對(duì)象的差異來(lái)檢測(cè)運(yùn)動(dòng)對(duì)象.幀差分法和背景差分法的差異主要在于進(jìn)行比較的對(duì)象不同,前者是對(duì)視頻中的相鄰幀進(jìn)行差分比較[2],后者是對(duì)當(dāng)前幀和特定的背景幀進(jìn)行差分比較.

光流法利用的是運(yùn)動(dòng)物體連續(xù)圖像的像素點(diǎn)運(yùn)動(dòng)產(chǎn)生的瞬時(shí)速度場(chǎng)——光流場(chǎng),該方法可以在場(chǎng)景信息未知的情況下進(jìn)行運(yùn)動(dòng)物體的檢測(cè),同時(shí)還可精確地進(jìn)行速度計(jì)算,能夠用于動(dòng)態(tài)場(chǎng)景.

差分法和光流法原理的不同造成了計(jì)算量上的巨大差異.大多數(shù)的光流算法抗噪聲的性能很差,計(jì)算相當(dāng)復(fù)雜,對(duì)硬件的要求也非常高,所以無(wú)法適用于實(shí)時(shí)處理.差分法則以其在硬件需求和性能間的良好平衡獲得了最廣泛的應(yīng)用.因此,本設(shè)計(jì)將重點(diǎn)介紹基于差分法的運(yùn)動(dòng)目標(biāo)檢測(cè)的實(shí)現(xiàn).

2 各種圖像處理類庫(kù)的比較及選擇

圖像處理技術(shù)的選擇需要考慮性能和易用性的平衡.目前,比較常見(jiàn)的圖像處理類庫(kù)主要有三種,分別是:OpenCv,EmguCv與AForge.Net.

OpenCv的大多數(shù)功能都以C風(fēng)格函數(shù)形式提供,少部分功能以C++類提供,易用性較差.EmguCv將OpenCv的絕大部分功能都包裝成了.Net類,結(jié)構(gòu)或者枚舉易用性比較好.AForge.Net是純粹的.Net類庫(kù),用起來(lái)最為方便,利用該框架可以方便地實(shí)現(xiàn)計(jì)算機(jī)視覺(jué)、圖像處理和遺傳算法、神經(jīng)網(wǎng)絡(luò)的開(kāi)發(fā).在性能上,前兩者略占優(yōu)勢(shì),但視頻開(kāi)發(fā)的環(huán)境已經(jīng)在向.Net過(guò)渡.考慮到開(kāi)發(fā)的易用性和開(kāi)發(fā)環(huán)境的需求,選擇了開(kāi)源的AForge.Net圖像處理類庫(kù).

AForge.Imaging.Filters定義了三個(gè)公共接口:Ifilter,IinPlaceFilter和IinPlacePartialFilter.有6個(gè)抽象類實(shí)現(xiàn)了以上接口,這些抽象基類的主要區(qū)別在于三個(gè)方面:輸入圖像和輸出圖像色彩上的區(qū)別、是否在原圖上進(jìn)行圖像處理以及處理區(qū)域?yàn)槿珗D還是局部.關(guān)于Filter具體算法的實(shí)現(xiàn)全部放在這些抽象基類的實(shí)體子類中,利用AForge的Filter命名空間即可設(shè)計(jì)實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)檢測(cè)的功能.

3 設(shè)計(jì)實(shí)現(xiàn)

在本設(shè)計(jì)中,進(jìn)行差分運(yùn)算的對(duì)象是24 bpp的RGB圖,這些圖其實(shí)就是從各種視頻流中獲取的幀圖像.設(shè)計(jì)以AForge.NET 庫(kù)為基礎(chǔ)實(shí)現(xiàn),用到的庫(kù)主要是AForge.Imaging庫(kù),該庫(kù)包含了基本的圖像處理類;用到的主要類是Filters類,通過(guò)實(shí)例化這些類,可以很容易地實(shí)現(xiàn)視頻中運(yùn)動(dòng)目標(biāo)的檢測(cè).

3.1 幀差分法的設(shè)計(jì)實(shí)現(xiàn)

3.1.1 差分比較

該算法先對(duì)運(yùn)動(dòng)圖像序列中相鄰的兩幀進(jìn)行灰度處理以獲得對(duì)應(yīng)的灰度圖,然后對(duì)灰度圖進(jìn)行相減,通過(guò)所得圖像灰度差的絕對(duì)值來(lái)判斷是否有運(yùn)動(dòng)物體.當(dāng)差值大于預(yù)設(shè)的閾值時(shí),則認(rèn)定場(chǎng)景有物體運(yùn)動(dòng)存在.這種檢測(cè)算法通過(guò)比較相鄰幀的差分值找出兩幀之間的差異,運(yùn)算簡(jiǎn)單,檢測(cè)速度快,適用于實(shí)時(shí)性要求較高的環(huán)境,是一種常用的運(yùn)動(dòng)目標(biāo)檢測(cè)算法[3].

為了實(shí)現(xiàn)兩幀的比較,設(shè)計(jì)使用了差異過(guò)濾器Difference filters和閾值過(guò)濾器Threshold filters.AForge.NET默認(rèn)的閾值Threshold為15,當(dāng)然也可以在源碼中修改[4].

//創(chuàng)建過(guò)濾器

Difference differenceFilter = new Difference( );

IFilter thresholdFilter = new Threshold( 15 );

//設(shè)置背景幀為differenceFilter過(guò)濾器的遮罩

differenceFilter.OverlayImage = backgroundFrame;

//應(yīng)用differenceFilter過(guò)濾器

Bitmap tmp1 = differenceFilter.Apply( currentFrame );

Bitmap tmp2 = thresholdFilter.Apply( tmp1 );

通過(guò)以上步驟,可以獲得每個(gè)bit位的差異.差異點(diǎn)的個(gè)數(shù)是可以計(jì)數(shù)的,當(dāng)計(jì)數(shù)值大于預(yù)先設(shè)置的報(bào)警閾值時(shí),即可認(rèn)為出現(xiàn)了運(yùn)動(dòng)物體.

3.1.2 噪聲處理

在具體的設(shè)計(jì)中,需要注意的是大多數(shù)攝像頭所提供的圖像都是有著大量噪聲的,如果不對(duì)原生圖像進(jìn)行預(yù)處理就進(jìn)行比較檢測(cè)的話,可能會(huì)在根本沒(méi)有運(yùn)動(dòng)物體時(shí)也會(huì)產(chǎn)生誤報(bào).因此,需要對(duì)帶有噪聲的原生圖像先進(jìn)行濾波去除噪聲,這里用到了erosionFilter.

//創(chuàng)建過(guò)濾器

IFilter erosionFilter = new Erosion( );

//應(yīng)用過(guò)濾器

Bitmap tmp3 = erosionFilter.Apply( tmp2 );

3.1.3 高亮顯示

以上兩步已經(jīng)實(shí)現(xiàn)了最簡(jiǎn)單的運(yùn)動(dòng)檢測(cè).為了獲得更好的效果,還需要對(duì)運(yùn)動(dòng)區(qū)域進(jìn)行高亮顯示,這里主要用到了extrachChannel和merge和ReplaceChannel.

//提取原圖的紅色通道

IFilter extrachChannel = new ExtractChannel( RGB.R );

Bitmap redChannel = extrachChannel.Apply( image );

//把紅色通道和運(yùn)動(dòng)區(qū)域進(jìn)行混合

Merge mergeFilter = new Merge( );

mergeFilter.OverlayImage = tmp3;

Bitmap tmp4 = mergeFilter.Apply( redChannel );

//替換原圖中的紅色通道

ReplaceChannel replaceChannel = new ReplaceChannel( RGB.R );

replaceChannel.ChannelImage = tmp4;

Bitmap tmp5 = replaceChannel.Apply( image );

效果如圖1所示,幀圖像中發(fā)生變化的部分用紅色通道標(biāo)記出來(lái)了.但是,從上述算法的實(shí)現(xiàn)可以看出,如果物體運(yùn)動(dòng)平滑緩慢,前后幀差值過(guò)小,就會(huì)難以發(fā)現(xiàn)運(yùn)動(dòng)物體,這也使得該算法較適用于檢測(cè)運(yùn)動(dòng)較快的目標(biāo).為了解決這一問(wèn)題,可以適當(dāng)延長(zhǎng)比較幀之間的時(shí)間間隔來(lái)獲得圖像的差值,以提高檢測(cè)的精度.

圖1 幀差分法Fig.1 Frame difference method

3.2 背景差分法的設(shè)計(jì)實(shí)現(xiàn)

背景差分法是將當(dāng)前圖像與預(yù)設(shè)的背景模型進(jìn)行比較,通過(guò)判定對(duì)應(yīng)灰度圖差值的大小進(jìn)行判別.該算法的核心是背景建模,常用的背景建模是利用相鄰圖像找出視頻中不變的部分作為背景,用直方圖等統(tǒng)計(jì)信息的變化來(lái)判斷是否有異常情況發(fā)生.

建立場(chǎng)景背景的方法[5]很多,但大多都太復(fù)雜.本設(shè)計(jì)使用了一種簡(jiǎn)單、快捷的場(chǎng)景背景的建立方法.首先,將整個(gè)視頻序列的第一幀作為背景幀,然后將每一幀都和第一個(gè)背景幀進(jìn)行比較,最后把背景幀移到當(dāng)前幀上,也就是取背景幀像素按照一定的百分比來(lái)改變當(dāng)前幀,用到的主要有MoveTowards過(guò)濾器.

//創(chuàng)建過(guò)濾器

MoveTowards moveTowardsFilter = new MoveTowards( );

//把背景幀移到當(dāng)前幀

moveTowardsFilter.OverlayImage = currentFrame;

Bitmap tmp = moveTowardsFilter.Apply( backgroundFrame );

//處理舊的背景

backgroundFrame.Dispose( );

backgroundFrame = tmp;

這樣,就獲得了新的背景,之后的差分操作就比較簡(jiǎn)單了,在此不再贅述,效果如圖2所示,幀圖像中發(fā)生變化的部分用紅色通道曲線邊界給予標(biāo)記.

圖2 背景差分法Fig.2 Backgound difference method

從上述算法的實(shí)現(xiàn)可以看出,在背景已知的情況下,背景差法是一種有效的運(yùn)動(dòng)目標(biāo)檢測(cè)方法.但需要注意的是,它易受外界條件的影響,背景建模不當(dāng)時(shí)甚至?xí)跊](méi)有運(yùn)動(dòng)物體的地方出現(xiàn)誤報(bào).比如,在背景本身就含有運(yùn)動(dòng)物體的情況下,會(huì)出現(xiàn)當(dāng)該物體移出后,它原來(lái)所在的位置會(huì)不斷地被誤報(bào).因此,背景的更新就顯得非常重要,也有相關(guān)的算法提出,但還需要進(jìn)一步完善.

4 結(jié)論

利用開(kāi)源AForge.NET框架實(shí)現(xiàn)了運(yùn)動(dòng)目標(biāo)的檢測(cè)功能,探討了差分法主要的設(shè)計(jì)技術(shù),建立了一種通用性很強(qiáng)的運(yùn)動(dòng)目標(biāo)檢測(cè)系統(tǒng),運(yùn)行穩(wěn)定、可靠、實(shí)時(shí)性較好,效果較為明顯,達(dá)到了設(shè)計(jì)的目標(biāo).文中提到的技術(shù)手段具有較強(qiáng)的適用性,稍加擴(kuò)展即可實(shí)現(xiàn)追蹤、報(bào)警和動(dòng)作識(shí)別等更高級(jí)的應(yīng)用.

參考文獻(xiàn):

[1] 張娟.運(yùn)動(dòng)目標(biāo)跟蹤算法研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2009,26(12):4407-4410.

[2] 甘明剛.一種基于三幀差分和邊緣信息的運(yùn)動(dòng)目標(biāo)檢測(cè)方法[J].電子與信息學(xué)報(bào),2010,32(4):849-852.

[3] 王天苓.基于視頻序列的運(yùn)動(dòng)目標(biāo)檢測(cè)[J].電子設(shè)計(jì)工程,2010,18(12):114-116.

[4] 李勁菊.一種復(fù)雜背景下運(yùn)動(dòng)目標(biāo)檢測(cè)與跟蹤方法[J].儀器儀表學(xué)報(bào),2010,31(10):2242-2247.

[5] Andrew Kirillov.Aforge.NET:Framework[EB/OL].http://www.Aforgenet.com,2011-12-20.

猜你喜歡
差分法過(guò)濾器圖像處理
二維粘彈性棒和板問(wèn)題ADI有限差分法
更 正
基于圖像處理的機(jī)器人精確抓取的設(shè)計(jì)與實(shí)現(xiàn)
機(jī)器學(xué)習(xí)在圖像處理中的應(yīng)用
聲音過(guò)濾器
基于圖像處理的定位器坡度計(jì)算
基于SQMR方法的三維CSAMT有限差分法數(shù)值模擬
有限差分法模擬電梯懸掛系統(tǒng)橫向受迫振動(dòng)
基于LOGO!的空氣過(guò)濾器自潔控制系統(tǒng)
HVM膜過(guò)濾器管板改造總結(jié)