唐悅,吳戈
(長春理工大學(xué) 電子信息工程學(xué)院,長春 130022)
在近幾年的發(fā)展中,運(yùn)動(dòng)目標(biāo)的檢測受到了許多關(guān)注,逐漸成為計(jì)算機(jī)視覺領(lǐng)域和視頻監(jiān)控處理領(lǐng)域研究的熱點(diǎn)話題,應(yīng)用范圍也是十分的廣泛,譬如道路視頻監(jiān)控、機(jī)器人導(dǎo)航、車輛輔助駕駛、海洋監(jiān)測和車輛行為分類。運(yùn)動(dòng)目標(biāo)檢測是后續(xù)運(yùn)動(dòng)目標(biāo)行為識(shí)別、跟蹤、分類的基礎(chǔ)。因此,要從道路上拍攝的視頻序列中準(zhǔn)確地識(shí)別移動(dòng)的目標(biāo)就變得十分重要,由于道路上難免會(huì)有場景變化、光照變化、陰影等許多不確定的問題,導(dǎo)致檢測實(shí)際目標(biāo)的任務(wù)變得越來越困難。
ViBe算法計(jì)算量比較小而且速度快,并對圖像中產(chǎn)生的噪聲有一定的魯棒性,檢測效果相比于其他的算法有一定的優(yōu)勢。但是它的缺點(diǎn)也十分的明顯,諸如鬼影、陰影、目標(biāo)不完整等問題。針對這些待解決的缺點(diǎn),文獻(xiàn)[1]通過結(jié)合視覺顯著性判斷背景模型中存在的鬼影目標(biāo),通過判斷背景模型中每個(gè)像素點(diǎn)的鬼影程度,結(jié)合模糊準(zhǔn)則自適應(yīng)改變時(shí)間子采樣因子,加快消除鬼影的速度。文獻(xiàn)[2]通過擴(kuò)大了樣本值的范圍,避免了重復(fù)選擇樣本。每個(gè)像素的鄰域更新采用隔行更新的方式,防止了錯(cuò)誤分類的擴(kuò)散。小物體丟棄和孔填充策略用于消除噪聲的影響。同時(shí)增加了陰影去除模塊,提高了陰影存在時(shí)算法的魯棒性。文獻(xiàn)[3]提出在背景模型初始化階段采用像素的菱形鄰域來簡化樣本信息;其次,在前景運(yùn)動(dòng)目標(biāo)提取階段引入自適應(yīng)分割閾值來適應(yīng)場景的動(dòng)態(tài)變化;最后,在更新階段提出背景重建和調(diào)整更新因子方法來處理光照變化的情形。文獻(xiàn)[4]提出ViBe算法結(jié)合三幀差法對抑制鬼影及減少空洞方面的改進(jìn),同時(shí)將顯著性檢測運(yùn)用到運(yùn)動(dòng)檢測中,檢測的效果明顯,具有較高的魯棒性。文獻(xiàn)[5]采用多幀連續(xù)圖像初始化背景模型,降低了單幀圖像初始化所產(chǎn)生的“鬼影”對前景檢測精度的影響;在匹配過程中,引入自適應(yīng)的匹配閾值,克服了單個(gè)的全局閾值對動(dòng)態(tài)背景適應(yīng)能力差的問題;最后,在更新過程中引入空間一致性判斷與模糊準(zhǔn)則來減少算法的誤檢,提高了算法的魯棒性。由于ViBe算法[6]是對第一幀進(jìn)行初始化,若第一幀將背景運(yùn)動(dòng)目標(biāo)錯(cuò)誤的認(rèn)為前景,在后續(xù)的分割和提取前景目標(biāo)時(shí),鬼影的出現(xiàn)會(huì)給目標(biāo)的正確檢測造成干擾對。文獻(xiàn)[7]提出了一種基于改進(jìn)三幀差法和邊緣檢測法結(jié)合的運(yùn)動(dòng)車輛檢測算法,以解決三幀差法檢測車輛輪廓不完整的問題。然后將改進(jìn)三幀差法融合混合高斯背景建模得到最后的結(jié)果,以解決單一采用三幀差法檢測到的運(yùn)動(dòng)車輛內(nèi)部信息不太完整,和單一采用混合高斯背景模型對光照敏感的問題。提高了算法對車輛檢測的準(zhǔn)確性以及對外部光照變化的適應(yīng)能力。文獻(xiàn)[8]提出了改進(jìn)的灰度投影算法,能夠估計(jì)運(yùn)動(dòng)背景的平移、縮放等運(yùn)動(dòng)參數(shù),并且準(zhǔn)確地在動(dòng)態(tài)背景下對運(yùn)動(dòng)目標(biāo)檢測。文獻(xiàn)[9]提出了一種基于顏色特征和輪廓特征相融合的檢測方法來提高對于目標(biāo)檢測的準(zhǔn)確性,并對所需的閾值改為動(dòng)態(tài)閾值,并對閾值的確定算法進(jìn)行了改進(jìn),從而提高了檢測效率。
本文針對檢測到的運(yùn)動(dòng)區(qū)域經(jīng)常有“鬼影現(xiàn)象”的出現(xiàn),以及背景發(fā)生變化時(shí)產(chǎn)生的干擾會(huì)對檢測的前景目標(biāo)圖像有誤檢現(xiàn)象,提出了一種基于陰影運(yùn)動(dòng)估計(jì)的ViBe算法改進(jìn),在運(yùn)動(dòng)區(qū)域的目標(biāo)進(jìn)行檢測時(shí)可避免鬼影、抗動(dòng)態(tài)背景模型中干擾等方面有很好的優(yōu)勢,可以準(zhǔn)確的在動(dòng)態(tài)背景下檢測出運(yùn)動(dòng)目標(biāo)的位置信息。
采集到視頻圖像中的背景圖像,通常被定義靜止的或是移動(dòng)非常緩慢的目標(biāo),前景圖像則和背景圖像不同,前景圖像是不斷有連續(xù)性運(yùn)動(dòng)的目標(biāo),前景檢測算法也相當(dāng)于一個(gè)分類問題,判斷全部的像素點(diǎn)是前景點(diǎn)還是背景點(diǎn)。
ViBe為所有背景模型中的像素點(diǎn)提供了一個(gè)樣本集,該樣本集中的像素值是對應(yīng)像素點(diǎn)之前的像素值和相鄰點(diǎn)的像素值。然后比較之后每一幀中的新的像素值和其相鄰點(diǎn)的像素值。每一幀中的新的像素值和樣本集中的像素值進(jìn)行比較,如果像素值相差不大,就認(rèn)為該點(diǎn)為背景。
圖1 ViBe在二維顏色空間(C1,C2)中的歐氏距離
坐標(biāo)軸上小黑色實(shí)心圓V1,V2,V3,…,VN表示在點(diǎn)x處樣本集中的N個(gè)像素值,坐標(biāo)軸上小空心圓點(diǎn)V(x)表示還需要分類的某一幀在點(diǎn)x處的像素值。將一個(gè)SR(V(x) )以小空圓心點(diǎn)V(x)為中心,R為半徑的區(qū)域。
將SR(V(x) )和背景模型樣本集的交集記為U,可用公式(1)表示,比較待分類像素在x點(diǎn)處的像素值V(x)與背景模型的相似度。當(dāng)U中的元素個(gè)數(shù)大于定義的閾值#min時(shí),說明待分類像素點(diǎn)和背景模型相似度較高,則認(rèn)為該點(diǎn)為背景點(diǎn),反之為前景點(diǎn),可表示為:
為了使背景模型適應(yīng)緩慢運(yùn)動(dòng)的背景變化,背景模型中樣本的存在時(shí)間是用指數(shù)的單調(diào)衰減來近似表示的,這使得樣本的衰減平穩(wěn)。同時(shí)使用了二次抽樣,使得在樣本有限的前提下還可以代表無限時(shí)間的樣本特征[10]。
ViBe背景模型是否準(zhǔn)確,主要從三方面的角度出發(fā),第一取決于樣本集個(gè)數(shù)N,第二取決于半徑R,第三取決于閾值最小值(#min)。經(jīng)過多次實(shí)踐,發(fā)現(xiàn)當(dāng)N值為20,R取值為20,#min取值為2的情況下,通常得到的效果是較好的。一般情況下沒有必要改變各背景模型中N、R、#min的值,幾乎都是確定不變的。
ViBe與其他算法不同之處主要在于兩個(gè)部分:背景模型初始化和背景模型更新。
背景模型初始化即背景模型的建立,有些檢測算法需要學(xué)習(xí)輸入的連續(xù)多幀的視頻圖像,若視頻圖像的背景發(fā)生了變化,則需要重新花費(fèi)較多的時(shí)間對背景進(jìn)行再一次的學(xué)習(xí),但是這樣就不能保證視頻檢測的實(shí)時(shí)性。
ViBe算法與其它算法不同,它只需要使用一幀視頻圖像來建立背景模型。通常在視頻序列中背景的選取為第一幀圖像,這為輸入的視頻圖像的每一幀中所有像素點(diǎn)提供一個(gè)樣本集,樣本集中為該點(diǎn)原本的值和隨機(jī)抽取的與該點(diǎn)相鄰的像素點(diǎn),如下所示:
其中,M0(x)表示初始背景模型中的像素點(diǎn)的樣本集;NG表示相鄰點(diǎn)。這種背景模型初始化的優(yōu)點(diǎn)是計(jì)算量小且速度快,而且在背景突然變化的情況下能夠被及時(shí)處理。它在建立背景模型時(shí)不需要花費(fèi)大量的時(shí)間,并且還能在檢測到背景變化比較急劇時(shí),會(huì)摒棄最初建立的模型,采用發(fā)生變化后的第一幀圖像對背景模型進(jìn)行重新的構(gòu)建,在完成初始背景模型的構(gòu)建后,接下來是對背景模型進(jìn)行更新。
為了達(dá)到讓背景模型在不斷變化(如背景物體遮擋、光照變化等)的情況下仍然可以保持很好的魯棒性,接下來對背景模型進(jìn)行不斷更新。下面是幾種背景模型更新策略:
(1)普通更新策略
兩種普遍使用的背景模型更新策略:
①保守更新策略:前景點(diǎn)不會(huì)被用于對模型進(jìn)行填充。
這個(gè)策略的缺點(diǎn)在于會(huì)產(chǎn)生Ghost區(qū)域。在初始化的過程中,實(shí)際上是靜止的物體在檢測的時(shí)候有時(shí)也會(huì)被錯(cuò)誤的檢測為運(yùn)動(dòng)物體,如果采用的是保守更新策略,靜止的物體會(huì)則視為運(yùn)動(dòng)的物體。
②Blind策略:前景和背景二者都可以被用來更新背景模型。
這樣的策略缺點(diǎn)在于,當(dāng)物體的移動(dòng)速度非常緩慢時(shí),則會(huì)被判斷成背景,無法檢測出來運(yùn)動(dòng)的目標(biāo)。
(2)ViBe算法的更新策略
ViBe算法采用的更新策略是:保守的更新策略+前景點(diǎn)計(jì)數(shù)法方法+隨機(jī)子的采樣。
前景點(diǎn)計(jì)數(shù)法:將所有的像素點(diǎn)進(jìn)行統(tǒng)計(jì),如果某一個(gè)像素點(diǎn)在檢測的過程中連續(xù)多次被檢測為前景,就把這些像素點(diǎn)更新為背景點(diǎn);
隨機(jī)的子采樣:如果將輸入的視頻序列中的每一幀都去更新背景模型中的全部像素點(diǎn),這個(gè)更新的過程也是需要很長時(shí)間的,當(dāng)其中的一個(gè)像素點(diǎn)被歸類為背景點(diǎn)時(shí),就用的概率去更新背景模型,φ是時(shí)間采樣因子,一般取值為16。
(3)ViBe算法具體更新的方法:
隨機(jī)選取了要更換的樣本集中的樣本值,并將要替換的樣本值進(jìn)行更新,對這些要更換的樣本值進(jìn)行隨機(jī)的更新,可以確保樣本值平滑的生命周期。一個(gè)樣本值在t時(shí)刻不被更新的可能性是(N-1)/N。假如在確保時(shí)間是連續(xù)的前提下,那么在經(jīng)過時(shí)間dt后,樣本值不發(fā)生變化的可能性為:
也可以寫作:
上面的公式表明,樣本值在模型中是否更新,與時(shí)間t無關(guān),無論樣本值在模型中存在的時(shí)間多長或多短,它被更新的概率是恒定的。
本文提出的算法流程圖如圖2所示。首先結(jié)合了三幀差分法和ViBe算法對運(yùn)動(dòng)目標(biāo)進(jìn)行了實(shí)時(shí)檢測,接下來采用陰影運(yùn)動(dòng)估計(jì)的方法估計(jì)兩幀圖像之間的縮放參數(shù)和平移參數(shù),根據(jù)這兩個(gè)參數(shù)映射到當(dāng)前的背景圖像中,實(shí)現(xiàn)了背景圖像的補(bǔ)償,得到了真實(shí)的背景,但是在拍攝視頻圖像的過程中,背景可能還會(huì)由于外界的因素發(fā)生(光照不均勻)變化,所以使用了自適應(yīng)閾值估計(jì)判別檢測的目標(biāo)是否為前景目標(biāo),能夠使得非靜態(tài)背景下的模型更加穩(wěn)定。
圖2 前景目標(biāo)檢測流程圖
三幀差分法具有算法的時(shí)間復(fù)雜度低、運(yùn)行速度快、對光照并不是十分的敏感,而且適用性也比較好,不會(huì)產(chǎn)生鬼影現(xiàn)象等優(yōu)勢。但是在檢測的過程中會(huì)出現(xiàn)空洞的現(xiàn)象,通過將三幀差分法的過程結(jié)合到ViBe算法中對其進(jìn)行改進(jìn),以此能夠達(dá)到除外界因素的影響。對于ViBe算法容易產(chǎn)生“鬼影”現(xiàn)象,除了采用不同的更新策略之外,還通過將三幀差分法引入到ViBe算法中,將兩種方法結(jié)合可以快速消除“鬼影”。在傳統(tǒng)的ViBe算法中要經(jīng)過幾十幀或者幾百幀才能消除“鬼影”現(xiàn)象,但也不能夠徹底消除。若要結(jié)合三幀差分的ViBe算法,不僅可以消除鬼影現(xiàn)象,而且還可以自適應(yīng)的選擇檢測的方法。
灰度投影是用圖像的總體灰度分布的變化規(guī)律,獲得當(dāng)前輸入幀圖像相對于所選取的參照幀的運(yùn)動(dòng)矢量,它將圖像投影到x和y方向上,并在這兩個(gè)方向上形成投影矢量,為了能夠獲得偏移量,也是通過匹配圖像投影矢量,在對圖像進(jìn)行預(yù)處理和濾波環(huán)節(jié)處理之后,視頻序列的幀將映射成為灰度值,用形成的一維信息表示成為二維圖像信息。
如果圖像的背景發(fā)生了變化,則該圖像的灰度值也會(huì)隨著背景的平移而平移,接下來需要計(jì)算第n幀和參照幀圖像的行和列投影曲線,同時(shí)結(jié)合參照幀圖像曲線的峰值,確定當(dāng)前幀圖像的相對列、行的位移向量值,計(jì)算過程如下:
式中,Gk表示第k幀圖像的灰度投影值;Gr表示參照幀圖像的灰度投影值;m、cl分別表示比較相關(guān)參照位移矢量的搜索寬度、選取匹配矢量的長度。
圖像的投影矢量會(huì)出現(xiàn)拉伸和縮短兩種情況,本文將這兩種情況稱為縮放,本文不使用傳統(tǒng)的方法,因?yàn)檫@并不能求解出矢量尺度,而使用的是縮放投影矢量特征,并設(shè)Gk(j′)、Gr(j)分別為縮放后和參照幀圖像的投影矢量。如果假設(shè)α是縮放因子,則如下所示:
式中,n為因縮放參數(shù)而引起的噪聲;Gk(j′)和Gr(j)二者之間的誤差值如下:
可根據(jù)對數(shù)變換的特性,將乘法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,利用對數(shù)變換的方法,將投影矢量映射到一個(gè)新的對數(shù)空間。
如果G1(x) =G2(αx),那么則有下式的變換:
通過這種變換,可以把矢量的伸縮變換為平移,再對變換后的矢量進(jìn)行相關(guān)的運(yùn)算,即可將縮放參數(shù)c求解出來。
利用灰度投影估計(jì)法求出了第n幀相對于第n-1幀的背景圖像縮放參數(shù),首先將第n-1幀圖像配準(zhǔn)到第n幀圖像,類似的方法將第n幀圖像配準(zhǔn)到第n+1幀圖像,將其做差分運(yùn)算可得到背景圖像,為了獲得更準(zhǔn)確的背景圖像在二值化處理的過程中采用了自適應(yīng)閾值估計(jì)的策略。將得到的真實(shí)的背景作為檢測運(yùn)動(dòng)目標(biāo)的背景模型,用其建立背景采樣樣本集,從第一幀視頻圖像開始檢測運(yùn)動(dòng)目標(biāo)。
如圖3所示,分別是ViBe算法、結(jié)合三幀差分的ViBe算法以及本文算法對前景目標(biāo)檢測的實(shí)驗(yàn)結(jié)果圖。圖3(a)是從視頻中截取的第300幀的原始圖片。圖 3(b)、圖 3(c)、圖 3(d)對ViBe算法、結(jié)合三幀差分的ViBe算法、和本文所提出的算法進(jìn)行測試??梢钥闯霰疚母倪M(jìn)后的算法在單目標(biāo)場景下可以準(zhǔn)確地檢測出前景運(yùn)動(dòng)目標(biāo)的位置,并且可以避免“鬼影”的出現(xiàn)。圖3(b)是ViBe算法所檢測出的前景目標(biāo)圖像,ViBe算法表現(xiàn)出第一幀建模的特點(diǎn),保留了第一幀圖像所包含的所有前景信息,造成了誤檢,形成了“鬼影”的現(xiàn)象。圖3(c)是結(jié)合是三幀差分的ViBe算法檢測的前景目標(biāo)圖像,通過算法的優(yōu)化,該算法提取的前景目標(biāo)圖像即使在一定程度上減少了前景的信息量,但是仍然存在少量的運(yùn)動(dòng)目標(biāo)信息。圖3(d)是通過本文算法提取出的前景目標(biāo)圖像,前兩者算法所提取的前景目標(biāo)圖像都存在著運(yùn)動(dòng)目標(biāo)的信息,而本文算法提取到的前景目標(biāo)圖像完整清晰,實(shí)驗(yàn)結(jié)果表明本文算法可以提取出完整、準(zhǔn)確的前景目標(biāo)圖像,可以為后期的目標(biāo)識(shí)別與分類的準(zhǔn)確性提供了基礎(chǔ)性的保障。
圖3 三種算法在單目標(biāo)運(yùn)動(dòng)場景下的實(shí)驗(yàn)結(jié)果
圖4在三種目標(biāo)的運(yùn)動(dòng)速度不同的情況下對算法的準(zhǔn)確性進(jìn)行了實(shí)驗(yàn)仿真。由圖4的仿真結(jié)果可以看出,行人、電動(dòng)車的運(yùn)動(dòng)速度不相同,這樣會(huì)影響算法對前景圖像檢測的準(zhǔn)確度。對于傳統(tǒng)的ViBe算法,如果視頻幀中的第一幀圖像存在運(yùn)動(dòng)的目標(biāo),在接下來的檢測過程中若運(yùn)動(dòng)的目標(biāo)速度較慢,由圖4(a)所示一定會(huì)檢測到“鬼影”,造成誤檢,結(jié)合三幀差分法的ViBe算法在對運(yùn)動(dòng)目標(biāo)的速度進(jìn)行檢測時(shí),在既有人又有車的環(huán)境下進(jìn)行仿真測試,當(dāng)運(yùn)動(dòng)目標(biāo)快慢不一樣的情況下,“鬼影”的像素面積比ViBe算法產(chǎn)生的“鬼影”的像素面積減少了許多,而且行人的鬼影也消失了。本文所提出的算法進(jìn)行的試驗(yàn)測試,由圖4(d)的實(shí)驗(yàn)結(jié)果圖可以看出本文的算法在運(yùn)動(dòng)目標(biāo)既包括有人又有車的情況下,相比前兩種算法可以更準(zhǔn)確的檢測到前景目標(biāo)圖像以及相應(yīng)的位置信息。
圖4 三種算法在多目標(biāo)運(yùn)動(dòng)場景下(人和車)的實(shí)驗(yàn)結(jié)果
圖5是在多目標(biāo)運(yùn)動(dòng)的場景下對傳統(tǒng)的ViBe算法、結(jié)合三幀差分法的ViBe算法以及本文所提出的算法進(jìn)行的試驗(yàn)測試,由圖5可以看出本文的算法在運(yùn)動(dòng)目標(biāo)明顯增多的情況下,也可以準(zhǔn)確的檢測到前景目標(biāo)圖像以及相關(guān)的位置信息。
圖5 三種算法在多目標(biāo)場景下(全部車輛)的實(shí)驗(yàn)結(jié)果
圖5(a)為原視頻中第2 600幀圖像,圖5(b)為ViBe算法檢測出來的結(jié)果,由于在拍攝的過程中相機(jī)存在抖動(dòng),在對圖像進(jìn)行檢測時(shí)左上角會(huì)有誤檢的目標(biāo)出現(xiàn),在檢測過程中會(huì)造成分不清哪一類是前景運(yùn)動(dòng)目標(biāo),會(huì)將部分背景圖像目標(biāo)檢測為前景運(yùn)動(dòng)目標(biāo),以及鬼影檢測成為前景運(yùn)動(dòng)目標(biāo),圖5(b)和5(c)檢測的效果存在著差異,圖5(d)中可以清楚地看到本文通過灰度投影運(yùn)動(dòng)估計(jì)的ViBe改進(jìn)算法在對前景運(yùn)動(dòng)目標(biāo)進(jìn)行檢測的過程中徹底消除了鬼影以及由背景圖像誤檢的前景運(yùn)動(dòng)圖像,檢測出來的目標(biāo)更加完整和清晰。
為了驗(yàn)證本文算法在交通場景中的應(yīng)用效果,選用了5組測試視頻進(jìn)行對比試驗(yàn),并且與傳統(tǒng)的ViBe算法以及文獻(xiàn)[4]提出的ViBe算法結(jié)合三幀差法,對抑制鬼影及減少空洞方面有了改進(jìn),同時(shí)將顯著性檢測運(yùn)用到前景目標(biāo)檢測中,效果明顯,具有較高的魯棒性。仿真實(shí)驗(yàn)顯示本文算法解決了ViBe算法消除“鬼影”速度慢和背景圖像變化等問題,可得到更完整的前景目標(biāo),在智能視頻監(jiān)控系統(tǒng)領(lǐng)域有良好的市場應(yīng)用前景。未來進(jìn)一步工作可以對前景運(yùn)動(dòng)區(qū)域著手采用深度學(xué)習(xí)的算法對運(yùn)動(dòng)目標(biāo)實(shí)時(shí)檢測追蹤,還可以考慮復(fù)雜環(huán)境下對多運(yùn)動(dòng)目標(biāo)檢測進(jìn)行研究。