??? 摘? 要: 介紹了一種在固定的單攝像頭拍攝的交通圖像序列中檢測(cè)、跟蹤、分類車輛的方法。該方法大致可分為三部分:抽取背景圖像和圖像分割" title="圖像分割">圖像分割;基于針孔模型的攝像機(jī)定標(biāo),計(jì)算透視投影矩陣;利用區(qū)域特征進(jìn)行匹配跟蹤,建立目標(biāo)鏈,恢復(fù)目標(biāo)三維信息,采用模型匹配法對(duì)車型分類。實(shí)驗(yàn)證明該方法簡單可行。?
??? 關(guān)鍵詞: 圖像分割? 車型識(shí)別? 目標(biāo)跟蹤? 模型匹配
?
??? 在現(xiàn)代交通管理和道路規(guī)劃中,交通流量和通行車輛的類型、速度是重要的參數(shù)。自動(dòng)獲取這些數(shù)據(jù)的方法大致可以分為兩類:一類是利用壓電、紅外、環(huán)形磁感應(yīng)線圈等傳感器獲得車輛本身的參數(shù),這類方法跟蹤識(shí)別率較高,但是容易損壞,安裝也不方便;還有一類就是基于圖像處理" title="圖像處理">圖像處理和模式識(shí)別的方法,克服了前面一類方法的局限,由于圖像處理識(shí)別技術(shù)的進(jìn)步和硬件性價(jià)比的大幅提高,有一定實(shí)用價(jià)值的系統(tǒng)已經(jīng)出現(xiàn)。這些系統(tǒng)的使用證明:圖像處理識(shí)別車型的方法日趨成熟,環(huán)境適應(yīng)能力較強(qiáng),能長期穩(wěn)定工作,但是計(jì)算量大,識(shí)別正確率不如感應(yīng)線圈、激光讀卡等方法高。本文的研究屬于后者,利用安裝在高處的單個(gè)靜止攝像頭監(jiān)視路面,利用運(yùn)動(dòng)分割與模型匹配的方法,檢測(cè)并統(tǒng)計(jì)多車道的車流信息。?
??? 整個(gè)識(shí)別過程分三步:分割、跟蹤和車型判定。運(yùn)動(dòng)目標(biāo)的分割常采用幀差法。在監(jiān)控場合,攝像頭大多是固定的,背景基本沒有變化或者變化緩慢,可以從圖像序列中逐漸取出背景圖像,然后利用幀差法檢測(cè)出目標(biāo)區(qū)域,同時(shí)還可以檢測(cè)靜止目標(biāo)。由于識(shí)別過程中利用二值邊緣圖像,所以本文在圖像分割中對(duì)輸入圖像進(jìn)行了梯度二值化" title="二值化">二值化處理。三維空間和二維圖像平面之間映射關(guān)系的確定,采用基于針孔模型的攝像機(jī)定標(biāo)來計(jì)算。對(duì)目標(biāo)區(qū)域的跟蹤,采用了區(qū)域特征向量的匹配跟蹤方法,減小了運(yùn)算量。由于圖像處理的方法很難提取輪數(shù)、軸距等車輛本身參數(shù),所以在圖像車型識(shí)別中一般都采用三維模型在圖像上投影和車輛邊緣相匹配的方法。?
1 背景重建和圖像分割?
??? 由于攝像頭固定,背景變化緩慢,因此,可以利用圖像序列逐漸恢復(fù)出背景圖像。其基本原理是:對(duì)每一個(gè)像素進(jìn)行監(jiān)控,如果在較長時(shí)間內(nèi)灰度不發(fā)生明顯變化,則認(rèn)為該象素屬于背景區(qū)域,將該象素灰度值復(fù)制到背景緩沖區(qū),否則屬于前景區(qū)域[1]。由于光照以及車輛陰影等影響,采用這種方法恢復(fù)出來的背景圖像存在較大噪聲。因此在實(shí)驗(yàn)中對(duì)原始輸入圖像進(jìn)行了梯度二值化處理,然后進(jìn)行背景重建。這樣可以減小陰影的干擾,加快背景重建速度。由于識(shí)別是利用邊緣信息,所以梯度化對(duì)后面的識(shí)別過程沒有影響。?
??? 在得到背景邊界圖像后,利用幀差法可以分割出感興趣的目標(biāo)。但是,如果目標(biāo)區(qū)域和背景邊界重合(值都為“1”),相減之后該目標(biāo)區(qū)域被錯(cuò)誤判定為背景區(qū)域(值為“0”)。為了減小錯(cuò)誤判決區(qū)域,本文在分割時(shí)參考了相鄰兩幀的二值化幀差fdmask,判決準(zhǔn)則如下:如果fdmask中某像素為“0”,則輸入圖像和背景圖像相應(yīng)像素相減;否則直接復(fù)制輸入圖像中相應(yīng)的像素值。分割結(jié)果經(jīng)過噪聲消除、形態(tài)學(xué)平滑邊界、種子填充、區(qū)域標(biāo)記等后續(xù)處理,就分離出了目標(biāo)。?
2 攝像機(jī)定標(biāo)?
??? 在模型匹配中,需要從二維圖像恢復(fù)目標(biāo)三維信息,同時(shí)將三維模型投影到圖像平面上,因此必須計(jì)算三維空間到圖像平面的投影關(guān)系矩陣。這個(gè)過程就是攝像機(jī)定標(biāo)。本文采用基于針孔模型的攝像機(jī)定標(biāo)方法,其基本原理是利用給定的一組三維世界的點(diǎn)坐標(biāo)和這些點(diǎn)在圖像中的坐標(biāo),求解線性方程組,計(jì)算透視投影矩陣中的各個(gè)元素[2]。透視投影矩陣如下:?
???
??? 其中:(u,v)是圖像坐標(biāo), (Xw,Yw,Zw)是三維坐標(biāo),M為投影矩陣,Zc為三維空間中點(diǎn)到攝像機(jī)鏡頭的矢量在主光軸上的投影距離。要求解M的各個(gè)元素,根據(jù)文獻(xiàn)[2]介紹需要6個(gè)點(diǎn)的投影關(guān)系組成12階的方程組,通常方程組不獨(dú)立,沒有唯一解,采用近似計(jì)算的誤差較大。在(1)式基礎(chǔ)上經(jīng)過變形,將12階方程分拆成三個(gè)4階方程組,只需要利用4個(gè)點(diǎn)的投影關(guān)系,方程組的階次也只有4階,可以有效避免出現(xiàn)奇異矩陣,求出" title="求出">求出唯一解。由式(1)可以得出:?
???
??? 另外,除了4組點(diǎn)的坐標(biāo)之外,還需測(cè)定鏡頭主光軸的水平垂直傾角。?
3 車輛的跟蹤和分類?
??? 在區(qū)域分割后,接下來進(jìn)行區(qū)域跟蹤,利用相鄰兩幀的區(qū)域匹配從而在圖像序列中建立目標(biāo)鏈,跟蹤目標(biāo)從進(jìn)入監(jiān)視范圍到駛離監(jiān)視范圍的整個(gè)過程。首先要確定匹配準(zhǔn)則。常用的圖像匹配方法" title="匹配方法">匹配方法有Hausdorff距離匹配法和圖像互相關(guān)。這兩種方法都需要逐個(gè)像素的計(jì)算。為了減小計(jì)算量,采用區(qū)域特征跟蹤法。目標(biāo)區(qū)域的特征包括區(qū)域形心坐標(biāo)、區(qū)域包圍矩形、區(qū)域運(yùn)動(dòng)速度及運(yùn)動(dòng)方向和區(qū)域面積。本文匹配準(zhǔn)則采用了兩個(gè)假定:同一目標(biāo)所對(duì)應(yīng)區(qū)域在相鄰兩幀中面積相近;同一目標(biāo)在前一幀中的區(qū)域形心加上運(yùn)動(dòng)速度所得到的形心預(yù)測(cè)值與后一幀中區(qū)域形心距離相近[3]。跟蹤過程如下:????
??? (1)將第一幀的各個(gè)區(qū)域當(dāng)作不同的目標(biāo),對(duì)各個(gè)目標(biāo)區(qū)域啟動(dòng)目標(biāo)鏈。?
??? (2)根據(jù)判決準(zhǔn)則,如果某目標(biāo)鏈中的區(qū)域在當(dāng)前幀找到了匹配區(qū)域,則用找到的匹配區(qū)域特征更新該目標(biāo)鏈中的區(qū)域特征。
??? (3)如果在形心預(yù)測(cè)值所在位置,當(dāng)前幀區(qū)域和目標(biāo)鏈中區(qū)域面積相差很大,則可以認(rèn)為發(fā)生了合并或者分裂現(xiàn)象。對(duì)目標(biāo)鏈中的區(qū)域包圍矩形,在本幀查找該矩形覆蓋了幾個(gè)區(qū)域,如果多于一個(gè)區(qū)域,則認(rèn)為發(fā)生了分裂現(xiàn)象。對(duì)分裂現(xiàn)象出現(xiàn)的新區(qū)域,啟動(dòng)新的目標(biāo)鏈。同理,對(duì)于本幀區(qū)域的包圍矩形,查找該矩形覆蓋了幾個(gè)目標(biāo)鏈中的區(qū)域,如果多于一個(gè),則認(rèn)為發(fā)生了合并現(xiàn)象,利用合并區(qū)域啟動(dòng)新的目標(biāo)鏈,同時(shí)終止那些被合并區(qū)域的目標(biāo)鏈。?
??? (4)對(duì)于目標(biāo)鏈中的區(qū)域,如果在本幀沒有與之相匹配的區(qū)域存在,則認(rèn)為發(fā)生了消失現(xiàn)象。目標(biāo)鏈并不立即終止,只有在經(jīng)過數(shù)幀仍沒有找到匹配之后,才終止該目標(biāo)鏈。?
??? (5)查找本幀是否還存在新進(jìn)入的區(qū)域,如果存在,則啟動(dòng)新的目標(biāo)鏈。?
??? 采用這種方法可以快速跟蹤圖像序列中的目標(biāo),同時(shí)得到車輛在監(jiān)視范圍的平均速度。在計(jì)數(shù)時(shí),只有目標(biāo)在連續(xù)數(shù)幀里出現(xiàn)才認(rèn)為是一個(gè)真正的目標(biāo)區(qū)域,只有目標(biāo)在連續(xù)數(shù)幀都沒有出現(xiàn)才認(rèn)為消失,因此可以消除那些暫時(shí)消失引起的計(jì)數(shù)錯(cuò)誤。????
??? 車輛分類是個(gè)很復(fù)雜的問題。圖像處理方法要獲取輪數(shù)、軸距等車輛本身參數(shù)比較困難,因此圖像識(shí)別車型通常采用模型匹配方法?,F(xiàn)有的研究大多是先抽取車輛的幾條直線邊緣,然后用線條和模型邊緣匹配。由于在圖像中抽取直線本身的計(jì)算量相當(dāng)大,所以本文沒有抽取車輛邊緣直線,而是直接利用了Canny邊緣檢測(cè)的整體結(jié)果與模型相匹配。Canny邊緣與模型邊緣之間存在較大的形變,Hausdorff距離匹配對(duì)形變不敏感,所以采用Hausdorff距離作為匹配準(zhǔn)則是很適宜的[4]。?
??? 設(shè)有兩組有限點(diǎn)集A={a1,…,ap}和B={b1,…,bq},則二者之間的Hausdorff距離定義為:?
???
??? 其中:h(A,B)=max min‖ai-bj‖,h(B,A)=max min?
??????????????? ?aiA bjB????????????? ? bjB aiA?
‖bj-ai‖,h(A,B)被稱為從A到B的有向Hausdorff距離,它反映了A到B的不匹配程度。h(B,A)的意義與h(A,B)相似。在具體計(jì)算Hausdorff距離時(shí),通常采用距離變換的方法。車型分類步驟如下:?
??? (1)在分割結(jié)果的基礎(chǔ)上,對(duì)目標(biāo)區(qū)域進(jìn)行Canny算子邊緣檢測(cè)[5],僅僅處理分割出的目標(biāo)區(qū)域的邊緣,減小了運(yùn)算量。?
??? (2)對(duì)Canny邊緣,采用串行距離變換,得到距離變換圖像。距離變換圖像的每個(gè)像素灰度值等于該像素到目標(biāo)邊緣的最近距離。?
??? (3)對(duì)各分割目標(biāo),恢復(fù)車輛的三維信息,只計(jì)算長度和寬度。由于二維圖像平面上一點(diǎn)對(duì)應(yīng)了攝像機(jī)坐標(biāo)中不同深度的一系列點(diǎn),所以在從圖像上一點(diǎn)恢復(fù)該點(diǎn)在世界坐標(biāo)中的信息時(shí),首先要給定該點(diǎn)在世界坐標(biāo)值中一個(gè)分量以減少不確定度(這樣恢復(fù)出來的數(shù)值有些誤差,通常給出Z方向高度值Zw)。?
??? (4)在計(jì)算目標(biāo)區(qū)域長度和寬度的同時(shí),可以求出車輛底盤形心在地面上的位置(X,Y),根據(jù)速度方向判斷車輛在地面上的角度α。利用車輛本身的三維模型數(shù)據(jù)以及(X,Y,α),通過式(1)透視投影,消隱處理,可以確定車輛模型在圖像平面上的投影。?
??? (5)當(dāng)目標(biāo)進(jìn)入指定區(qū)域后,以模型投影圖像為模板,將投影圖像在距離變換圖像上移動(dòng),在每一個(gè)位置,求出模型投影圖像下距離變換圖像被模型輪廓線覆蓋的像素值之和,以這個(gè)和值作為在該位置當(dāng)前模型與實(shí)際車輛的匹配程度。將當(dāng)前模型在各位置所得匹配程度的最小值作為當(dāng)前模型與車輛的實(shí)際匹配程度,該最小值除以模型輪廓線的像素?cái)?shù)目,即該模型與車輛之間的Hausdorff距離。對(duì)各種模型,分別求出它們與車輛之間的Hausdorff距離,取其中最小值對(duì)應(yīng)的那種模型即為車型識(shí)別結(jié)果。實(shí)驗(yàn)過程中為了減小計(jì)算量,搜索方法采用了三步搜索法。?
4 實(shí)驗(yàn)結(jié)果?
??? 本實(shí)驗(yàn)所采用的352×288視頻圖像,來自采用單個(gè)固定CCD攝像機(jī)于杭州天目山路拍攝的交通場景片斷。主要算法在Trimedia1300 DSP上用C語言實(shí)現(xiàn),在圖像分割過程中進(jìn)行了較多的梯度、降低噪聲、填充和標(biāo)記運(yùn)算,平均處理一幀大約耗時(shí)0.3s。算法流程的全過程如圖1所示。?
?
?
??? 實(shí)驗(yàn)證明,抽取背景和當(dāng)前幀之間進(jìn)行差異檢測(cè),分割較為準(zhǔn)確。對(duì)于比較淡的陰影,用梯度二值化方法可以部分消除陰影影響。由于只監(jiān)視邊緣變化部分,背景重建速度比直接利用灰度圖像重建背景快很多,干擾也較小。梯度二值化處理之后重建背景只需150-200幀,而不經(jīng)過梯度二值化處理在上千幀之后仍然沒有較好的背景,并且點(diǎn)狀噪聲和云霧狀模糊比較嚴(yán)重。?
??? 跟蹤計(jì)數(shù)的結(jié)果表明,利用形心和面積作為特征,可以快速跟蹤圖像序列中的目標(biāo),計(jì)數(shù)正確率可達(dá)95%。計(jì)數(shù)誤差主要在于遮擋引起的分裂合并處理不能完全如實(shí)反映目標(biāo)的運(yùn)動(dòng),把合并區(qū)域當(dāng)作新出現(xiàn)的區(qū)域。如果合并區(qū)域再次分裂,分裂出來的區(qū)域就會(huì)被當(dāng)作新區(qū)域,造成計(jì)數(shù)偏大。為了簡化跟蹤算法,實(shí)驗(yàn)僅在相鄰兩幀之間進(jìn)行跟蹤匹配,這樣處理分裂合并的能力并不強(qiáng),如果在多幀之間進(jìn)行跟蹤,效果會(huì)好一些,但是算法比較復(fù)雜。?
??? 對(duì)于大小相差懸殊的車輛,如公共汽車和轎車,根據(jù)長度、寬度信息就很容易分別開來,根本不用進(jìn)行后面的模型匹配。所以本文試驗(yàn)主要針對(duì)了街道上常見的大小相差不太大的車輛,將它們分成了轎車、輕卡和面包車。試驗(yàn)證明:直接利用Canny邊緣,根據(jù)Hausdorff距離匹配可以有效地對(duì)車型加以判別。由于沒有逐條抽取邊緣直線來與模型輪廓線匹配,計(jì)算量大為減小,算法實(shí)現(xiàn)簡單。由于轎車的外形大小變化相對(duì)較小,識(shí)別正確率最高,可達(dá)90%;輕型卡車次之;面包車的識(shí)別率最低,大約50~60%,錯(cuò)誤部分主要被識(shí)別成轎車,主要原因是面包車的大小相差很大,模型匹配方法的一個(gè)不足也在于此。要提高識(shí)別率,模型細(xì)分是必需的工作。本試驗(yàn)中攝像頭安裝在街道的前方,由于車輛最顯著的外形特征在于側(cè)輪廓,所以如果攝像頭安裝在街道旁邊拍攝車輛的側(cè)面圖像,可以認(rèn)為識(shí)別效果應(yīng)該會(huì)更好一些。另外,Canny算子的邊緣效果不是很好,噪聲比較大,也影響了判決結(jié)果。如果采用Hough變換抽取車輛邊緣的直線,計(jì)算量較大。如果陰影比較嚴(yán)重,還需要進(jìn)行專門的去陰影處理。這些都是下一步工作要解決的問題。?
參考文獻(xiàn)?
1 Shao-Yi Chien,Shyh-Yih Ma, Liang-Gee Chen. Efficient??Moving Object Segmentation Algorithm Using Background??Registration Technique. IEEE Trans.Circuits and Systems??for Video Technology. 2002;12(6):577-586?
2 孫 慧,張 燕. 計(jì)算機(jī)視覺攝像機(jī)定標(biāo)中投影矩陣的計(jì)算.?河北師范大學(xué)學(xué)報(bào),2001;126(1):26-28?
3 張 嫣,姚耀文,唐華松. 動(dòng)圖像序列中多目標(biāo)跟蹤的研究與實(shí)現(xiàn). 計(jì)算機(jī)應(yīng)用研究,2002;(1):74-76?
4 Gunilla Borgefors.? Distance Transformations in Digital Images.Computer Vision,Graphics, and Image Processing,?1986; 34:344-371?
5 楊枝靈. Visual C++數(shù)字圖像獲取處理及實(shí)踐. 北京:?人民郵電出版社,2003?