本發(fā)明涉及的是一種3d運(yùn)動目標(biāo)檢測方法。
背景技術(shù):
機(jī)器視覺中的一項(xiàng)重要目標(biāo)是實(shí)現(xiàn)運(yùn)動目標(biāo)檢測,乃至實(shí)現(xiàn)圖像或者視頻的分析與理解。運(yùn)動目標(biāo)檢測是機(jī)器視覺領(lǐng)域的重要方向,有著廣泛的應(yīng)用范圍,比視頻監(jiān)控、人機(jī)交互、場景分析等涉及圖像或者視頻分析理解方向的基礎(chǔ)技術(shù)。靜態(tài)背景運(yùn)動目標(biāo)檢測的經(jīng)典方法有減除背景法、幀間差分法和光流法。背靜減除法通過背景建模的方式提取出運(yùn)動目標(biāo),但是這種方法對環(huán)境變化特別敏感。幀間差分法是對相鄰的兩幀或者三幀作差的到運(yùn)動目標(biāo),但是這種方法要求物體運(yùn)動時(shí),有明顯的像素變化,否則會產(chǎn)生漏檢等現(xiàn)象。光流法是一種目標(biāo)檢測的重要工具,該方法計(jì)算光流矢量,根據(jù)運(yùn)動目和背景運(yùn)動矢量的差別來檢測運(yùn)動目標(biāo),在動態(tài)背景下,該方法也能取得較好的效果,但是當(dāng)物體運(yùn)動是朝著攝相機(jī)方向的運(yùn)動時(shí),而從造成目標(biāo)檢測錯(cuò)誤。上述的這些方法都沒有場景的深度信息的二維檢測方法,3d運(yùn)動目標(biāo)檢測能夠更準(zhǔn)確檢測出運(yùn)動目標(biāo),在車輛輔助駕駛等領(lǐng)域有重要應(yīng)用。
光流在三維空間中的擴(kuò)展,以場景流(sceneflow)來表示,其表示場景中真實(shí)的運(yùn)動速度,相對于光流,更能真實(shí)描述物體運(yùn)動。場景流描述3維運(yùn)動估計(jì),是3維稠密運(yùn)動場,表示場景中每個(gè)表面點(diǎn)的真實(shí)運(yùn)動。場景流表示場景的真實(shí)運(yùn)動場,包含場景的深度信息。因此通過對場景流的分析可得到3維場景的真實(shí)運(yùn)動信息,因此場景流在3d運(yùn)動目標(biāo)檢測領(lǐng)域具有廣泛的應(yīng)用前景
為使場景流能夠很好的運(yùn)動到3d運(yùn)動目標(biāo)檢測中,準(zhǔn)確估計(jì)場景流是一個(gè)至關(guān)重要的問題。場景流求解是一個(gè)病態(tài)問題,需要附加多種假設(shè)約束才能求解。場景流估計(jì)主要分為:基于雙目立體視覺的場景流估計(jì)和深度傳感器的場景流估計(jì)。隨著深度傳感器技術(shù)的發(fā)展和廣泛應(yīng)用,基于彩色圖和深度圖(rgb-d)的場景流估計(jì),引起了研究者越來越多的關(guān)注。已知場景深度信息的情況下,可結(jié)合對齊的可見光圖像與深度圖施加約束進(jìn)行場景流的求解。準(zhǔn)確的深度信息可直接通過深度傳感器獲得,節(jié)省計(jì)算深度信息的時(shí)間的同時(shí),還有利于提高場景流計(jì)算精度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種場景流求解更加精確的基于6自由度場景流聚類的3d運(yùn)動目標(biāo)檢測方法。
本發(fā)明的目的是這樣實(shí)現(xiàn)的:
步驟一.利用深度相機(jī)獲取場景的對齊的彩色圖像和深度圖像;
步驟二.構(gòu)建6自由度場景流估計(jì)能量泛函;繞坐標(biāo)軸的旋轉(zhuǎn)運(yùn)動定義為ω(ωx,ωy,ωz),沿著坐標(biāo)軸的平移動定義為τ(τx,τy,τz),運(yùn)動用6自由度κ(ω,τ)描述,所述能量泛函由數(shù)據(jù)項(xiàng)ed(κ)和平滑項(xiàng)es(κ)組成,表達(dá)式為e(κ)=ed(κ)+αes(κ),α為平衡因子;
步驟三.能量泛函的最優(yōu)求解;
步驟四.根據(jù)場景流的定義,利用旋轉(zhuǎn)向量和平移向量計(jì)算出場景流;
步驟五.根據(jù)場景流信息進(jìn)行初步分析,確定移動目標(biāo)的大體數(shù)目;
步驟六.根據(jù)場景流提取運(yùn)動特征信息,獲取每個(gè)點(diǎn)的特征向量;
步驟七.利用isodata算法對特征向量進(jìn)行聚類分析,提取出運(yùn)動目標(biāo)。
本發(fā)明還可以包括:
1、所述構(gòu)建6自由度場景流估計(jì)能量泛函具體包括:
(1)構(gòu)建能量泛函數(shù)據(jù)項(xiàng)
在圖像域約束求解6自由度κ(ω,τ),2維空間點(diǎn)x(x,y)和3維空間點(diǎn)x(x,y,z),把三維點(diǎn)x投影到二維空間,通過定義函數(shù)
其中
令w(x,κ)表示x1(x,y)點(diǎn)在第2幀估算的位置,則:
利用亮度恒常和深度恒常假設(shè)構(gòu)建能量泛函數(shù)據(jù)項(xiàng):
ρi(x,κ)=i2(w(x,κ))-i1(x)
其中:d=(0,0,1,0)t,為抑制光流數(shù)據(jù)項(xiàng)中的集外點(diǎn),同時(shí)保證能量泛函的凸性與可微性引入形如公式
對數(shù)據(jù)項(xiàng)進(jìn)行局部約束,將約束方程設(shè)定在x的鄰域n(x)內(nèi)成立:
(2)構(gòu)建能量泛函平滑項(xiàng)
κ包括旋轉(zhuǎn)向量和平移向量,首先是對平移向量的平滑,定義自適應(yīng)的全變分平滑項(xiàng)為:
其中τd,d=1,2,3對應(yīng)于旋轉(zhuǎn)向量的三個(gè)分量:τx,τy,τz,p(x)為全變分自適應(yīng)系數(shù),定義:
其中z(x)為深度圖,x為深度像素點(diǎn),
定義旋轉(zhuǎn)向量的平滑項(xiàng)為:
總平滑項(xiàng)為:es(κ)=es_τ(τ)+es_ω(ω)。
2、所述能量泛函的最優(yōu)求解具體包括:
引入輔助變量κ'(ω'x,ω'y,ω'z,τ'x,τ'y,τ'z),固定κ'求解κ,則對應(yīng)于基于數(shù)據(jù)項(xiàng)的能量泛函求解,利用高斯牛頓法迭代進(jìn)行求解;固定κ求解κ',則對應(yīng)于基于平滑項(xiàng)的求解,而平滑項(xiàng)包括旋轉(zhuǎn)向量能量泛函和平移向量能量泛函,基于平滑項(xiàng)的能量泛函求解時(shí),對旋轉(zhuǎn)向量和平移向量分別極小化;旋轉(zhuǎn)向量能量泛函的極小化利用矢量全變分去噪模型進(jìn)行求解;平移向量能量泛函的極小化符合rof去噪模型,利用映射梯度下降法進(jìn)行求解。
基于數(shù)據(jù)項(xiàng)的求解和基于平滑項(xiàng)的求解都是迭代求解過程,兩者交替迭代求解完成場景流的求解過程。
3、場景流v通過下式得到:
4、所述確定移動目標(biāo)的大體數(shù)目具體包括:首先確定背景區(qū)域的場景流,得到場景流設(shè)為vback,利用vback與所有點(diǎn)的場景流相減,把|v(x)-vback|>μ1的點(diǎn)在圖像中的像素值設(shè)為255,否則設(shè)為0,得到二值圖后,再利用blob分析,得到團(tuán)塊信息,團(tuán)塊的數(shù)目作為目標(biāo)數(shù)目的粗略估計(jì),隨后在知道運(yùn)動目標(biāo)大致數(shù)目的情況下,利用動態(tài)聚類的方式進(jìn)行準(zhǔn)確分類。
5、所述獲取每個(gè)點(diǎn)的特征向量具體包括:
假設(shè)場景流為v(vx,vy,vz),場景流的特征信息具體包括:每個(gè)點(diǎn)場景流的x、y、z三個(gè)方向的分量vx,vy,vz;每個(gè)點(diǎn)場景流的模值;每個(gè)點(diǎn)場景流與xoy平面、xoz平面、yoz平面的夾角;每個(gè)點(diǎn)都用一個(gè)7維特征向量來表示:xn=(vx,vy,vz,|v|,θx,θy,θz),對于未計(jì)算場景流的點(diǎn)和場景流值為零的點(diǎn),定義這些點(diǎn)的特征向量為:xn=(0,0,0,0,0,0,0)。
本發(fā)明利用深度傳感器獲取對齊的彩色圖和深度圖,提出一種基于6自由度的rgb-d場景流估計(jì)方法,對場景中點(diǎn)的旋轉(zhuǎn)和平移進(jìn)行精確建模,使場景流求解更加精確,也為基于場景流分析的3d運(yùn)動目標(biāo)檢測提供更真實(shí)的底層信息。
本發(fā)明提供了一種基于6自由度場景流聚類的3d運(yùn)動目標(biāo)檢測新方法。所謂6自由度場景流估計(jì),即利用變分法求解運(yùn)動的旋轉(zhuǎn)向量和平移向量,然后根據(jù)場景流的定義,計(jì)算出場景流。本發(fā)明利用鄰域約束結(jié)合亮度恒常、深度恒常約束構(gòu)建數(shù)據(jù)項(xiàng);利用全變分平滑對旋轉(zhuǎn)向量和平移向量進(jìn)行平滑約束。完成場景流求解后,利用isodata算法對場景流進(jìn)行聚類分析,提取出3d運(yùn)動目標(biāo)。
附圖說明
圖1是本發(fā)明的流程圖。
圖2是金字塔結(jié)構(gòu)圖。
圖3是isodata算法的流程圖。
具體實(shí)施方式
下面結(jié)合附圖舉例對本發(fā)明進(jìn)行更詳盡的描述。
結(jié)合圖1,本發(fā)明包括如下基本步驟:
s1.在t時(shí)刻和t+1時(shí)刻,利用經(jīng)過配準(zhǔn)的深度傳感器與彩色圖像傳感器獲取對齊的紋理圖像和深度圖像。
s2.構(gòu)建能量泛函求解場景流,通過求解能量函數(shù)的極小值來估計(jì)場景流。本發(fā)明通過施加多種約束條件進(jìn)行求解,點(diǎn)的運(yùn)動包括平移和旋轉(zhuǎn),繞坐標(biāo)軸的旋轉(zhuǎn)運(yùn)動定義為ω(ωx,ωy,ωz),沿著坐標(biāo)軸的平移動定義為τ(τx,τy,τz),點(diǎn)的運(yùn)動可用6自由度κ(ω,τ)描述,能量泛函的表達(dá)式:
e(κ)=ed(κ)+αes(κ)(1)
由數(shù)據(jù)項(xiàng)ed(κ)和平滑項(xiàng)es(κ)組成,α為平衡因子。求出κ(ω,τ)后根據(jù)公式(2)即可完成場景流的求解。
xt+1=xt+v(2)
能量泛函數(shù)據(jù)項(xiàng)設(shè)計(jì)。亮度恒常假設(shè)和深度恒常假設(shè)共同構(gòu)建數(shù)據(jù)項(xiàng)。恒常假設(shè)是在圖像域,為在圖像中約束三維流場,數(shù)據(jù)項(xiàng)需要表示成ω(ωx,ωy,ωz)與深度z的函數(shù)。需要將場景流通過透視投影變換映射到二維空間已知2維空間點(diǎn)x(x,y)和3維空間點(diǎn)x(x,y,z)的轉(zhuǎn)換關(guān)系為:
m為攝像機(jī)內(nèi)參數(shù)矩陣,把三維點(diǎn)x投影到二維空間,可通過定義函數(shù)
同樣二維點(diǎn)到三維點(diǎn)的轉(zhuǎn)換可通過定義函數(shù)
設(shè)xt(x,y,z)為3維空間中的一點(diǎn),運(yùn)動后在第二幀點(diǎn)的位置為xt+1,則有
其中:
令w(x,κ)表示x1(x,y)點(diǎn)在第2幀估算的位置,則有:
根據(jù)亮度恒常假設(shè)得到:
i2(w(x,κ))=i1(x)(9)
其中:i1(x)為x點(diǎn)在第1幀圖像的亮度,i2(w(x,κ))為w(x,κ)點(diǎn)在第2幀圖像的亮度。
根據(jù)深度恒常假設(shè)得到:
z2(w(x,κ))=z1(x)+vz(x)(10)
其中:z1(x)為x點(diǎn)深度值,z2(w(x,κ))為w(x,κ)點(diǎn)的深度值,vz(x)為場景流v在z方向分量,因此根據(jù)公式(13)和公式(14)可推出殘余項(xiàng)分別為:
ρi(x,κ)=i2(w(x,κ))-i1(x)(11)
其中:d=(0,0,1,0)t,為抑制光流數(shù)據(jù)項(xiàng)中的集外點(diǎn),同時(shí)保證能量泛函的凸性與可微性引入形如的公式(13)的魯棒懲罰函數(shù),取ε=0.001。
進(jìn)一步推出數(shù)據(jù)項(xiàng):
對數(shù)據(jù)項(xiàng)進(jìn)行局部約束,將約束方程設(shè)定在x的鄰域n(x)內(nèi)成立:
能量泛函平滑項(xiàng)設(shè)計(jì)。κ包括旋轉(zhuǎn)向量和平移向量,旋轉(zhuǎn)向量是定義在李群空間的,平移向量定義在實(shí)數(shù)空間,因此兩者的平滑是有些差別的。首先討論平移向量的平滑,全變分正則化是非常有效的正則化方法,本發(fā)明定義自適應(yīng)的全變分平滑項(xiàng)為:
其中τd(d=1,2,3)對應(yīng)于旋轉(zhuǎn)向量的三個(gè)分量:τx,τy,τz,p(x)為全變分自適應(yīng)系數(shù),可定義:
其中z(x)為深度圖,x為深度像素點(diǎn),深度圖邊界往往與運(yùn)動邊界重合,通過引入深度圖梯度的自適應(yīng)因子,達(dá)到保持運(yùn)動邊緣的目的。
對于在李群空間的旋轉(zhuǎn)向量ω(ωx,ωy,ωz)的平滑可近似為在3d空間的一種矢量差分形式,因此定義旋轉(zhuǎn)向量的平滑項(xiàng)為:
因此總平滑項(xiàng)為:
es(κ)=es_τ(τ)+es_ω(ω)(19)
s3.6自由度場景流估計(jì)能量泛函的最優(yōu)求解。為解決大位移問題,構(gòu)建5層圖像金字塔求解。對能量泛函在由粗到精的不同分辨率的圖像上進(jìn)行求解,并把該層金字塔求解的值作為下一層的求解初值,金字塔結(jié)構(gòu)圖,如圖2所示。
利用分步求解策略,引入輔助變量分步求解。將能量函數(shù)數(shù)據(jù)項(xiàng)和平滑項(xiàng)分離開來,進(jìn)行分步交替求解,交替求解不僅可以降低計(jì)算難度,還有助于將不同的算法整合到一個(gè)算法框架中。最后得到能量函數(shù)的表達(dá)式:
引入輔助變量κ'(ω'x,ω'y,ω'z,τ'x,τ'y,τ'z)則:
固定κ求解κ':
利用高斯牛頓法進(jìn)行求解,假設(shè)κ'=κ'+δκ',其中δκ'=(δω'x,δω'y,δω'z,δτ'x,δτ'y,δτ'z)t即假設(shè)κ'初始值已知,求δκ',即通過求其增量的形式求解。
則上式變?yōu)?
進(jìn)行泰勒展開并略去二次及其高次項(xiàng)得:
其中k為
對于每一個(gè)點(diǎn)x對上式求δκ'的導(dǎo)數(shù),經(jīng)整理可得:
其中h為hessian的高斯牛頓近似。
其中:e為6×6的單位陣。
固定κ求解κ',則對應(yīng)于式(29)能量泛函極小化,
其中
類似rof去噪模型的求解,利用映射梯度下降法求解:
公式(31)相當(dāng)于向量全變分去噪模型,求解方法與映射梯度下降類似:
πk定義為:
基于數(shù)據(jù)項(xiàng)的求解和基于平滑項(xiàng)的求解都是迭代求解過程,兩者交替迭代求解即可完成場景流的求解過程。
s4.根據(jù)場景流的定義,利用旋轉(zhuǎn)向量和平移向量計(jì)算出場景流。
場景流v通過下式得到:
s5.根據(jù)場景流信息進(jìn)行初步分析,確定移動目標(biāo)的大體數(shù)目。首先確定背景區(qū)域的場景流,由于攝像機(jī)視角較大,因此背景區(qū)域在圖像中的面積也是最大的,可以得到背景區(qū)域,得到場景流設(shè)為vback,利用vback與所有點(diǎn)的場景流相減,把|v(x)-vback|>μ1的點(diǎn)在圖像中的像素值設(shè)為255,否則設(shè)為0。得到二值圖后,再利用blob分析,得到團(tuán)塊信息,團(tuán)塊的數(shù)目可初步看作運(yùn)動目標(biāo)的數(shù)目。隨后就可以在知道運(yùn)動目標(biāo)大致數(shù)目的情況下,利用聚類的方式進(jìn)行準(zhǔn)確分類。
s6.根據(jù)場景流提取運(yùn)動特征信息,獲取每個(gè)點(diǎn)的特征向量。場景中每個(gè)表面點(diǎn)對應(yīng)于圖像中的像素點(diǎn),假設(shè)場景流為v(vx,vy,vz),場景流的特征信息具體包括:每個(gè)點(diǎn)場景流的x、y、z三個(gè)方向的分量vx,vy,vz;每個(gè)點(diǎn)場景流的模值
場景流與xoy面的夾角可表示為:
場景流與xoz面的夾角可表示為:
場景流與xoy面的夾角可表示為:
因此每個(gè)點(diǎn)都用來一個(gè)七維特征向量來表示:
s7.基于6自由度場景流得聚類分析。根據(jù)場景流提取運(yùn)動特征信息,獲取每個(gè)點(diǎn)的特征向量,特征向量為其7維特征向量,具體包括場景流的模值,場景流x、y、z三個(gè)方向的分量,以及場景流與3個(gè)坐標(biāo)平面的角度。利用isodata算法對特征向量進(jìn)行聚類分析,提取出運(yùn)動目標(biāo)。
isodata(iterativeselforganizingdataanalysistechnique)算法是聚類分析中的一種常用算法,稱為動態(tài)聚類或迭代自組織數(shù)據(jù)分析。isodata算法是是一種無監(jiān)督分類的方法,其與在k均值算法有些類似,但是k均值算法適合必須事先設(shè)置聚類數(shù)目,而isodata算法,事先設(shè)置預(yù)期聚類數(shù)目,但可以自動調(diào)節(jié)聚類數(shù)目。能夠?qū)垲愑颍鶕?jù)條件進(jìn)行分列、合并直至滿足要求為止。isodata算法的流程圖如圖3所示。
isodata算法工作原理和基本流程:
步驟1:輸入n個(gè)模式樣本{xi,i=1,2,...n}確定nc個(gè)初始聚類中心
步驟2:對n個(gè)樣本進(jìn)行類別劃分,如果dj=min{||x-zi||,i=1,2,...nc},即||x-zj||值最小,若用sj表示聚類域,則樣本x屬于sj。
步驟3:若聚類域sj中的樣本數(shù)量小于設(shè)定的閾值θn,那么取消聚類域sj,此時(shí)nc減去1。
步驟4:修正各聚類中心:
步驟5:計(jì)算每個(gè)聚類域sj的zj與聚類域內(nèi)的樣本之間的平均距離:
步驟6:計(jì)算所有聚類中心與其對應(yīng)樣本之間的平均距離:
步驟7:根據(jù)條件判斷是否分裂或者合并,以及是否達(dá)到迭代次數(shù)。
若迭代次數(shù)已達(dá)到設(shè)置的最大迭代次數(shù)i次,則令θc等于0,轉(zhuǎn)至步驟11。
若nc≤0.5k,即聚類域的數(shù)目不大于設(shè)定值k的二分之一,則跳至步驟8。
若nc≥2k,或者運(yùn)行次數(shù)為偶數(shù)次,則不進(jìn)行分裂操作,轉(zhuǎn)至步驟11;否則轉(zhuǎn)至步驟8。
步驟8:計(jì)算每個(gè)聚類中樣本距離的標(biāo)準(zhǔn)差向量:
σj=(σ1j,σ2j,...,σnj)t(43)
其中向量的各個(gè)分量為:
式中,i=1,2,...,n,為特征向量維數(shù),j=1,2,...,nc為聚類域的數(shù)量,nj為sj中的樣本數(shù)量。
步驟9:求{σj,j=1,2,...,nc}的最大值,以{σjmax,j=1,2,...,nc}表示。
步驟10:在{σjmax,j=1,2,...,nc}中,如果有σjmax>θs,又滿足
步驟11:分別計(jì)算聚類中心之間距離:
dij=||zi-zj||,i=1,2,...,nc-1,j=i+1,...,nc(45)
步驟12:對聚類中心間的距離dij與設(shè)定閾值θc進(jìn)行比較,將dij≤θc值按增序排列,
步驟13:對dij≤θc的聚類域,進(jìn)行合并操作,距離為
步驟14:若是迭代次數(shù)達(dá)到最大迭代次數(shù),則算法停止運(yùn)行,輸出結(jié)果;否則,若用戶改變參數(shù)設(shè)置,跳至步驟1,重新聚類,若輸入?yún)?shù)不變,轉(zhuǎn)至步驟2。運(yùn)行本步驟時(shí),迭代次數(shù)加1。
介紹完isodata的算法的步驟和基本流程之后,需要將場景中每個(gè)表面點(diǎn)表示成一個(gè)多維特征向量,然后才能利用isodata對所有點(diǎn)的特征向量進(jìn)行聚類分析。
計(jì)算的場景流包括背景區(qū)域的場景流和運(yùn)動目標(biāo)的場景流,兩者的場景流是有明顯差別的。每個(gè)點(diǎn)的場景流在幅值和方向上均會有所不同。故算法將每個(gè)點(diǎn)的場景流方向信息和幅值信息作為該點(diǎn)的特征,組成該點(diǎn)的特征向量,輸入isodata框架進(jìn)行分類。
對具有7維特征向量的點(diǎn)進(jìn)行聚類,得到的聚類區(qū)域包括背景區(qū)域和運(yùn)動區(qū)域,一般情況下,由于攝像機(jī)視角較大,可以判定聚類結(jié)果中,面積最大的區(qū)域且分布范圍較廣的區(qū)域?qū)儆诒尘皡^(qū)域,其他聚類區(qū)域?yàn)橐苿幽繕?biāo)。
利用本發(fā)明提出的場景流估計(jì)算法計(jì)算場景流,然后利用isodata進(jìn)行場景流聚類分析,提取出運(yùn)動目標(biāo),并將運(yùn)動目標(biāo)在彩色圖像上標(biāo)記出來。