祖仲林 李 勃 陳啟美
(南京大學(xué)電子科學(xué)與工程系 南京 210093)
復(fù)雜條件下的背景建模是計(jì)算機(jī)視覺領(lǐng)域尤其是運(yùn)動(dòng)目標(biāo)檢測中的難點(diǎn),已有的研究中,提出了大量建立背景模型的方法[1-3],如時(shí)域差分與自適應(yīng)背景更新相結(jié)合的方法、高斯混合模型(mixture of Gaussian)、Codebook背景模型來進(jìn)行背景學(xué)習(xí)與前景檢測,以及利用區(qū)域二維特征(local binary pattern,LBP)來建立模型等.
人的視覺系統(tǒng)識(shí)別物體輪廓主要觀測的是紋理信息,由于紋理不隨光照而改變,因此從理論上對(duì)紋理的逼近是區(qū)分背景最直接的方法.Heikkila提出統(tǒng)計(jì)一個(gè)區(qū)域內(nèi)的基本LBP紋理,利用紋理直方圖完成對(duì)背景建模,但該算法復(fù)雜度仍然較高,不能很好滿足實(shí)時(shí)處理的要求.文中提出了基于CUDA的快速LBP直方圖背景建模算法,利用CUDA技術(shù)并發(fā)執(zhí)行的優(yōu)點(diǎn),把傳統(tǒng)的基于CPU的背景建模算法移植到GPU平臺(tái)上,從而有效地實(shí)現(xiàn)實(shí)時(shí)性與可靠性的同時(shí)兼顧.
LBP是一種有效的紋理描述算子,具有旋轉(zhuǎn)不變性和灰度不變性等顯著優(yōu)點(diǎn).在近10年的時(shí)間里,該算子已經(jīng)廣泛地應(yīng)用于紋理分類、圖像搜索、人臉圖像分析、運(yùn)動(dòng)目標(biāo)檢測等領(lǐng)域.
基本LBP局部紋理描述法簡單且非常有效.定義紋理
式中:gc為中心像素點(diǎn),gi(i=0,1,2…,p-1)為以gc為中心的正方形框內(nèi)的鄰域點(diǎn).以窗口中心點(diǎn)灰度值為閾值對(duì)窗口內(nèi)其他像素做二值化處理
進(jìn)一步定義閾值判決函數(shù)s(gc,gi)(i=0,1, 2,…,p-1):
通過對(duì)閾值函數(shù)采用因子為2i的加權(quán),得到LBP的紋理描述
為了適應(yīng)不同尺度的紋理特征,Ojala[5]等對(duì)基本LBP算子進(jìn)行了改進(jìn),用圓形鄰域代替了正方形鄰域,采用雙線性插值算法計(jì)算沒有完全落在像素位置的點(diǎn)的灰度值.符號(hào)LBP(P,R)表示在半徑為R的圓形鄰域內(nèi)有P個(gè)像素點(diǎn), LBP(8,3)如圖 1所示.文中選取 3×3鄰域的LBP(8,1)算子.
圖1 擴(kuò)展的LBP紋理算子(R=3,P=8)
由于文中采用的測試序列多為交通監(jiān)控視頻,考慮到交通視頻具有自身的特殊性,即存在車道線、左右車道間柵欄等,用式(3)中差值控制法進(jìn)行閾值判決,因其在單幀中閾值是固定的,不能很好地描述車道線、柵欄附近鄰域的紋理.故,提出了基于比值控制的方法,可以很好地解決以上問題,選取閾值判決函數(shù)如下(其中 α,β為設(shè)定值,均接近于1).
基于紋理直方圖的背景建模算法流程如圖2所示.首先對(duì)當(dāng)前幀圖像進(jìn)行LBP編碼,計(jì)算以Region為半徑的圓形區(qū)域內(nèi)的LBP統(tǒng)一模式直方圖,將當(dāng)前幀像素的LBP統(tǒng)一模式直方圖h與背景模型中對(duì)應(yīng)像素的直方圖進(jìn)行匹配.h與當(dāng)前背景模型的直方圖進(jìn)行相似性比較.參考Heikkila[4],用式(6)來衡量它們的相似性
圖2 基于紋理直方圖的背景建模算法流程圖
式中:a,b為LBP統(tǒng)一模式直方圖;N為條目數(shù).相似性度量的閾值 Tp是用戶設(shè)定的參數(shù),根據(jù)經(jīng)驗(yàn),一般在0.6~0.7之間可以得到好的結(jié)果.
對(duì)于背景模型包含的K個(gè)直方圖,根據(jù)其權(quán)值進(jìn)行降序排列.將當(dāng)前幀中像素LBP統(tǒng)一模式直方圖h與降序排列好的進(jìn)行相似性匹配.如果與背景模型中所有直方圖相似度都小于那么最低權(quán)值的直方圖將被h來取代,并被賦予低的初始權(quán)值,文中用0.01,同時(shí)作比例調(diào)整權(quán)值.
如果找到了匹配的直方圖,需要按下式更新背景直方圖:
式中:Mk對(duì)于匹配的直方圖值為1,其余值為0.背景模型的更新速度由學(xué)習(xí)速率參數(shù)來控制,由用戶設(shè)定,其值越大,模型更新越快,但易受噪聲影響.通常情況下它們?nèi)≈递^小時(shí)如0.01~0.05,可以得到好的結(jié)果.
背景的確定方法如下:將LBP統(tǒng)一模式直方圖按照權(quán)值進(jìn)行降序排序,并在K個(gè)降序排列好的直方圖中選取滿足下式的最少的前B個(gè)直方圖來表征背景(B<K):
前景檢測在背景模型更新前完成.當(dāng)前幀某個(gè)像素的直方圖h與相應(yīng)位置表示背景的B個(gè)直方圖用式(6)進(jìn)行比較,如果對(duì)于其中一個(gè)直方圖來說相似性大于所設(shè)定的閾值 Tp,那么此像素就為背景,否則即為前景.
基于CUDA的CPU+GPU整體架構(gòu)如圖3所示,在主機(jī)和設(shè)備端都有獨(dú)立的存儲(chǔ)空間,首先在主機(jī)端開辟內(nèi)存空間,通過cudaMemcpy將待處理數(shù)據(jù)傳遞到設(shè)備,在設(shè)備上執(zhí)行完Kernel函數(shù),完成處理后,數(shù)據(jù)再傳回主機(jī).其中Kernel函數(shù)由多處理器并行執(zhí)行,每個(gè)網(wǎng)格對(duì)應(yīng)一個(gè)Block,每個(gè)多處理器可以使用16 kB共享內(nèi)存,通過充分利用共享內(nèi)存,可以更加有效地提高設(shè)備的使用效率.
圖3 CPU+GPU系統(tǒng)架構(gòu)圖
圖像在設(shè)備上的存儲(chǔ)主要有3種方式,包括主機(jī)端的分頁存儲(chǔ)、分片存儲(chǔ)以及紋理存儲(chǔ).
其中,使用cudaMallocHost開辟的分片存儲(chǔ)空間(頁面鎖定)必定存在于物理內(nèi)存中,而且地址固定,可以有效提高主機(jī)端與設(shè)備端的通信效率.相比cudamalloc開辟的分頁存儲(chǔ)空間,分片存儲(chǔ)能使用CUDA API提供的異步傳輸功能,實(shí)現(xiàn)流式處理,在設(shè)備主機(jī)之間拷貝數(shù)據(jù)耗時(shí)更少,雖然分片存儲(chǔ)有很多好處,但實(shí)際中不能分配過大,否則會(huì)降低系統(tǒng)整體性能.
在LBP直方圖背景建模算法中,由于每個(gè)thread運(yùn)算需要讀取一小塊數(shù)據(jù)而不是單個(gè)數(shù)據(jù)(比如LBP編碼),如果每次訪問都需要重新從全局存儲(chǔ)器中訪問,重復(fù)讀取較多,訪問效率低,同時(shí)需要考慮圖像的邊界問題.紋理存儲(chǔ)為圖像處理提供了優(yōu)化,具有一組高速緩存,能夠自動(dòng)處理邊界條件.在核函數(shù)中通過tex2D()函數(shù)獲取像素值,非常方便,但紋理存儲(chǔ)是只讀的,不能用紋理作為輸出.
設(shè)備和主機(jī)之間數(shù)據(jù)傳遞的時(shí)間是實(shí)時(shí)系統(tǒng)中需要考慮的因素,文中對(duì)多分辨率下(704×576 D1、320×240)的常見測試序列,分別使用3種不同存儲(chǔ)方式,測試耗時(shí)表1所列(實(shí)驗(yàn)平臺(tái):E6300 1G ddr2內(nèi)存G9600GSO).
表1 不同存儲(chǔ)方式下傳輸耗時(shí)比較
圖4 多點(diǎn)訪問技術(shù)
對(duì)于單個(gè)網(wǎng)格內(nèi)部,由于計(jì)算單個(gè)像素點(diǎn)以Region為半徑的LBP統(tǒng)一直方圖時(shí),相鄰點(diǎn)有較多重疊部分,針對(duì)這一特性,充分使用每個(gè)多處理器(MP)對(duì)應(yīng)的16 kB共享內(nèi)存,可以節(jié)省大量全局存儲(chǔ)器帶寬,大大提高單次全局讀取平均對(duì)應(yīng)的運(yùn)算次數(shù).
設(shè)備端存儲(chǔ)主要包含背景圖像的LBP直方圖、一些配置參數(shù)(如背景更新速率、背景判決閾值等).實(shí)驗(yàn)中選取每個(gè)block對(duì)應(yīng)為128個(gè)thread(16×8),通過2.3中多點(diǎn)訪問技術(shù),可以看出每次計(jì)算對(duì)應(yīng)4個(gè)點(diǎn)的輸出,綜合考慮每個(gè)MP的寄存器數(shù)量與最大并發(fā)線程數(shù),選取每個(gè)thread對(duì)應(yīng)4×3個(gè)像素點(diǎn).設(shè)備端主要的kernel函數(shù)包含:
1)LBP編碼 LBP_code<<<blocks, threads>>>()
通過紋理獲取主機(jī)端傳遞的當(dāng)前幀圖像,完成對(duì)圖像的LBP紋理編碼,選用LBP(8,1)算子
2)前景提取 Forg_Get<<<blocks, threads,SharedMem>>>()
先計(jì)算當(dāng)前幀圖像的LBP紋理直方圖,通過與背景紋理直方圖相似性比較,區(qū)分前景點(diǎn),將前景二值化圖像傳回主機(jī)端,注意這里用到了共享內(nèi)存
3)背景 LBP直方圖更新 Update_back<<<blocks,threads>>>()
根據(jù)已提取的前景圖像更新設(shè)備端儲(chǔ)存的背景LBP直方圖
硬件平臺(tái):CPU為Intel Core E6300;內(nèi)存為ddr2 533 1.0 GB;顯卡為 Nvidia G9600GSO (384MB,192bit).軟件平臺(tái):Linux Suse 10.3;編譯環(huán)境gcc,g++;支持Intel opencv libarary,整體實(shí)現(xiàn)基于CUDA SDK 2.1.
實(shí)驗(yàn)使用的數(shù)據(jù)包括2組測試視頻
1)http://cvrr.ucsd.edu/aton/shadow提供的標(biāo)準(zhǔn)測試序列,選用其中高速公路上的場景——highwayII測試序列(32×240)
2)項(xiàng)目組選用的來自江蘇省寧連高速公路的路況監(jiān)控視頻,D1格式(704×576)
3.2.1 檢測效果對(duì)比 利用文中算法對(duì)兩組視頻進(jìn)行測試,圖5為highwayII上的測試結(jié)果,圖6為寧連高速路段視頻測試結(jié)果,其中后一組視頻中運(yùn)動(dòng)車輛有不同程度的陰影,為突出顯示抑制陰影的效果,作了適當(dāng)截圖(圖中所有檢測結(jié)果均未經(jīng)過形態(tài)學(xué)濾波等后續(xù)處理).
圖5 highwayII序列的檢測結(jié)果圖
圖6 寧連監(jiān)控視頻檢測效果圖(有陰影)
對(duì)比文獻(xiàn)[1-4]的實(shí)驗(yàn)結(jié)果,由圖5,6可以看出,基于LBP紋理直方圖的背景建模算法可以很好地檢出運(yùn)動(dòng)目標(biāo),特別是對(duì)于有伴隨陰影的運(yùn)動(dòng)目標(biāo),可以較好地抑制陰影點(diǎn).
3.2.2 檢測速度對(duì)比 利用文中算法對(duì)選用的兩組視頻進(jìn)行測試,設(shè)備端圖像讀取時(shí)采用紋理存儲(chǔ)方式,前景圖像回傳主機(jī)時(shí)采用分片存儲(chǔ)方式,block大小選取為16×8.表2,3列出了在GPU和CPU上執(zhí)行的實(shí)驗(yàn)結(jié)果.
由表 2,3可以看出,采用GPU方式,相比CPU平臺(tái)有明顯加速效果,不同分辨率下加速比達(dá)到20~40x,LBP紋理直方圖背景建模算法的幀處理速率能夠達(dá)到40 f/s以上.主要原因一方面是由于GPU并發(fā)執(zhí)行的架構(gòu),能夠同時(shí)處理多組數(shù)據(jù);另一方面是由于針對(duì)該算法的特殊性和對(duì)稱性,文中在CUDA架構(gòu)上充分利用了共享內(nèi)存和多點(diǎn)訪問技術(shù),更好地提高了系統(tǒng)性能.
表2 序列highwayII CPU與GPU檢測對(duì)比(320×240)
表3 寧連高速視頻CPU與GPU檢測對(duì)比(704×576)
針對(duì)復(fù)雜條件下背景建模這一視頻檢測領(lǐng)域的難點(diǎn),文中提出了CUDA架構(gòu)下的快速LBP直方圖紋理背景建模算法,同時(shí)針對(duì)具體應(yīng)用場景改進(jìn)了基本LBP算子.實(shí)驗(yàn)結(jié)果表明,相比傳統(tǒng)的CPU實(shí)現(xiàn),GPU方式在實(shí)時(shí)性上有明顯改善效果,不同分辨率下加速比在30x左右,幀處理速度達(dá)到40 f/s以上,很好兼顧地了實(shí)時(shí)性與可靠性.文中算法的GPU實(shí)現(xiàn)時(shí)采用的技術(shù)具有較強(qiáng)的通用性,可以應(yīng)用于其他常見的背景建模算法,同時(shí)對(duì)于圖像處理領(lǐng)域類似算法的GPU實(shí)現(xiàn)也有一定借鑒作用.
[1] Wang H,Suter D.A revaluation of mixture of gaussian background modeling[C]//IEEE International Conference on Acoustics,Speech,and Signal Processing(ICASSP).Pennsylvania,USA,2005:1 017-1 020.
[2]Lee D.Effective gaussian mixture learning for video background subtraction[J].IEEE T ransactions on Pattern Analysis and M achine Intelligence,2005, 27(5):827-832.
[3]Kim K,Chalidabhongse T H,Harwood D,et al. Real-time foreground-background segmentation using codebook model[J].Real-Time Imaging,2005, 11(3):172-185.
[4]Heikkila M,Pietikainen M.A texture-based method for modeling the background and detecting moving objects[J].IEEE Transactions Pattern Analysis and Machine Intelligence,2006,28(4):657-662.
[5]Ojala T,Pietikainen M,Maenpaa T.Multiresolution gray-scale and rotation invariant texture classification with local binary patterns[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2002, 24(7):971-987.