石 強,葛 源,袁志敏,韓娟娟,崔養(yǎng)浩
(中國核動力研究設計院,成都 610005)
傳統(tǒng)的多攝像機人體定位思想來源于物體三維重建,雖然能夠取得高精度的目標定位,但是該方法需要標定的參數(shù)眾多,導致該算法的實時性太差。因此,基于單應矩陣的人體定位得到迅速發(fā)展。目前,基于單應矩陣的多攝像頭場景定位算法主要有兩種:一是基于主軸的場景人體定位算法;二是基于像素的人體定位算法。基于主軸的場景人體定位算法雖然實時性好,但是無法處理人體遮擋的情況?;谙袼氐娜梭w定位算法雖然精度較高,但是實時性較差。因此,本文重新設計了一種結(jié)合采樣單應投影和權值篩選的場景人體定位算法。
約束1:在多相機環(huán)境下,將人體目標理想化成一根垂直于場景平面的垂線,那么這根垂線在各個攝像機下的單應投影交于一點,這個點就是該垂線的垂足,也就是人體目標的腳點[1]。
約束2:在單相機環(huán)境下,假設在場景平面的不同位置有一簇垂線,那么這些垂線在該攝像機下的單應投影線交于一點,這個點和該攝像機中心在場景平面上的投影點重合[1]。
單應矩陣表示攝影幾何學中真實世界中的平面到像平面的可逆齊次變換[2]。假定場景平面中的二維點Xi與圖像平面中的點xi表示若干組對應點,其中xi=(xi,yi, 1)T表示,存在三維矩陣H表示,可以使下式成立:
其中×代表叉乘,根據(jù)文獻[4]可以得出最終的形式 。
其中,H jT代表H的第j行。利用直接線性變化和6組對應的點就可以求出單應矩陣H[4]。
人體檢測時,通常用矩形框框出人體目標。因此,如圖1所示,本文可以利用矩形框代表人體的所有前景信息,矩形框的上邊可以近似地表示人體的頭部位置,矩形框的下邊代替人體的腳部位置?;谏鲜龇治?,本文根據(jù)多攝像機環(huán)境下的幾何約束條件1和2,將人體當作垂直于場景平面的一個圓柱體,那么將人體頭部位置即矩形框的上邊進行采樣,然后單應投影,那么從而可以得到投影點與攝像機中心線相連的交點,這些點被稱之為候選人體腳點,也就是人體在場景平面的候選位置。
圖1 人體前景等效圖Fig.1 Equivalent diagram of the human body foreground
圖2 頭部投影法示意圖Fig.2 Schematic diagram of head projection method
需要定位出人體在場景中的空間位置,至少需要兩個攝像機在兩個角度對人體進行攝像。為了分析簡便,本文假設場景中只存在一個人體目標,然后總共存在兩個攝像頭,如圖2所示。
攝像機中心在場景平面的投影坐標C1C2,對雙攝像頭而言,將每一個攝像頭上的圖像平面上的人體矩形框上邊(頭部)的N個點(為分析方便,此處N=2)的坐標利用單應矩陣H投影到場景平面上,得到4個點連接對應的投影點,得到4條直線可以得到4個候選腳點P1,P2,P3,P4。求交點的具體方法為:假定在攝像機C1,人體目標A矩形框在圖像平面的采樣點坐標為在攝像機C2上,人體目標A矩形框采樣點在圖像平面的坐標為利用單應矩陣可以將這4個點投影到場景平面為設攝像機C1中心在場景平面的投影為gC1(xc1,yc1),攝像機C2中心在場景平面的投影為為直線l1,設為直線l2;k1=x1-x0/y1-y0,k2=x3-x2/y3-y2,那么可以根據(jù)已知的坐標值求出候選腳點P1,其他候選腳點可以依次推出:
圖3 腳部投影法示意圖Fig.3 Schematic diagram of foot projection method
第二種求人體目標候選腳點的方法本文稱之為腳部投影法。當攝像頭固定時,人體腳部通常緊挨著地面,根據(jù)單應矩陣變換原理,通過對矩形框下邊進行采樣,然后將這些點進行場景平面投影,也能估計出人體的候選腳點的大致位置。為分析簡便,本文假定場景中只存在一個人體,兩個攝像頭產(chǎn)生人體候選腳點的示意圖如圖3所示。
假定攝像機中心在場景平面的投影坐標C1,C2,對雙攝像頭而言,將每一個攝像頭上的圖像平面上的人體矩形框下邊(腳部)的N個點(為分析方便,此處N=2)的坐標利用單應矩陣H投影到場景平面上,得到4個點這4個點即為人體目標候選腳點。雖然這種方法也可以求出人體目標候選腳點,但是由于人體腳部在室內(nèi)環(huán)境中通常會被遮擋,導致產(chǎn)生的候選腳點位置可能不準。因此,這種方法只能用產(chǎn)生人體目標的候選腳點的大概位置。
圖4 無遮擋情況Fig.4 No occlusion
圖5 有遮擋情況Fig.5 With occlusion
在室內(nèi)場景中,人體目標位置定位通常分為兩種情況。第一種情況是非常理想的,即人體不存在遮擋,如圖4所示,通常這種方法可以利用頭部投影法或者腳部投影法直接求出人體目標候選腳點位置。
第二種是在室內(nèi)場景中,由于物體和人體之間以及人體和人體之間相互遮擋,會導致在攝像機C1,C2, 中人體目標相互遮擋,如圖5所示。
假定整個場景中存在兩個人體目標,從視角2可以看出,這兩個人體不存在遮擋,完整地顯現(xiàn)出來;但是從視角1可以看出,兩個人體目標遮擋較為嚴重。在該種情況下,為了減少定位的誤差,本文利用對人體目標框進行采樣來獲取候選人體目標腳點。遮擋情況下候選人體目標腳點(以頭部投影法為例)產(chǎn)生示意圖如圖6所示。
從圖6中可以看出,當場景中存在兩個人體目標,而且人體目標相互遮擋時,在一個攝像機圖像平面中只有一個人體目標矩形區(qū)域,而在另外一個攝像機圖像平面中有兩個人體目標矩形區(qū)域。
利用頭部投影法獲得人體目標候選腳點,圖中用三角形表示,記為,人體候選目標點集合為。利用腳部投影法獲取的人體目標候選腳點,圖中用小黑點表示,記為,人體候選目標點集合為。
圖6 人體遮擋候選腳點產(chǎn)生示意圖Fig.6 Schematic diagram of human body occlusion candidate foot points
當獲取候選人體腳點時,如何利用一定的規(guī)則定位人體腳點在場景中的位置,同時保持誤差較小變得尤為重要。本文為候選目標腳點定權的規(guī)則是:首先計算出所有的目標腳點,然后根據(jù)場景中人體的數(shù)量進行聚類,距離聚類中心越遠的候選腳點權重越小,距離聚類中心越近的候選腳點權重越大。
假定i代表第i個攝像頭,集合G代表所有候選人體目標腳點的集合代表第i個攝像頭中存在的人數(shù),K值定義為:
定義K值為攝像頭視域中的人體數(shù)目的最大值是因為場景中人體可能存在遮擋。對G利用K-means++算法進行聚類,最終得到K個聚類G={G1,G2,G3…Gk}和K個聚類中心對于聚類Gm,其聚類中心為m=1,2,3...k,Pl為該聚類中的候選人體目標腳點,l=1, 2, 3…s,s代表在聚類Gm中候選人體目標腳點數(shù),pl∈Gm。為了減小定位誤差,本文為每一個候選人體目標腳點賦予一定的權值Wj,記dj為候選腳點距離聚類中心的距離越大rj越小,為第j個人體候選點權重wj定義權重為:
由于引入人體候選腳點的過程中,難免會產(chǎn)生噪聲,因此需要設定閾值去除一些候選人體目標腳點閾值WH定義如下:
獲得閾值后,當候選人體目標腳點的權值小于閾值WH,則舍棄。若大于閾值WH,則保留,假定最終留下的候選目標腳點數(shù)為v,那么最終獲得人體腳點位置即最終的人體在場景中的定位位置為O,則
權值wj的大小實際上是候選腳點與聚類中心的匹配程度,權值越大,匹配程度越高。在人體目標之間不存在遮擋時,wj較小的候選腳點指的是人體前景矩形框上邊頭部區(qū)域和人體前景區(qū)域下邊腳部區(qū)域附近的干擾點。當人體目標間存在遮擋時,wj較小的候選腳點通常由兩類點構(gòu)成:一類是人體前景矩形框上邊頭部區(qū)域和人體前景區(qū)域下邊腳部區(qū)域附近的干擾點,另一類是其他人體的前景點。其他人體的前景點相對于該人體頭部和腳部輪廓點來說,與腳點重心的匹配程度更低,因此權重也更加的小。對權值設定閾值,然后對低于閾值的人體目標候選腳點舍棄有助于降低噪聲的干擾,降低人體定位誤差。
以N個攝像頭為例,本文提出的場景定位算法流程大致為:
1)首先,在人體檢測或者人體追蹤的基礎上,測定攝像機中心在場景平面的投影點坐標,利用實驗方法計算出兩個攝像機對同一個場景的單應矩陣(通常指室內(nèi)場景的地面)H1...HN,便于將圖像平面的點映射到場景平面中去。
2)t時刻,攝像頭1...N獲取人體目標,得到人體矩形框。
3)t+1,對人體目標矩形框頭部進行采樣投影,然后利用單應矩陣將其投影到場景平面,將這些采樣點和攝像頭投影點進行連接,求出這些直線的交點,即人體目標候選腳點集合。
4)t+1,對人體矩形框的腳部進行單應投影,獲得了人體目標候選腳點集合。
6)t+3,對于每一個聚類根據(jù)到聚類中心賦予相應的權值wj。
7)t+4,計算權值閾值wH,對小于閾值的人體候選腳點進行舍棄。
8)t+5,最后獲得人體最終角度位置O,最后跳轉(zhuǎn)2)。
表1 空間坐標點和圖像坐標點對應關系Table 1 Correspondence between space coordinate points and image coordinate points
從上文分析可知,要定位出人體在場景平面的位置,首先要求出攝像頭1和攝像頭2到場景平面的單應矩陣H1,H2。實驗步驟如下:首先在場景中步驟6個白色的標示點,然后測量這些點在場景中的位置坐標。表1為6個標示點中場景空間坐標和圖像1與圖像2坐標的對應關系。
最終獲得攝像機1和攝像機2與場景平面的單應矩陣H1、H2如下 :
得到單應矩陣后,本文的實驗環(huán)境為5m×7m的房間,雙攝像頭布置在房間的兩角,如圖7所示。
本文分別對人體不發(fā)生遮擋、人體發(fā)生遮擋,利用基于像素的人體定位算法和本文的算法進行實驗仿真。
1)不發(fā)生遮擋
為了避免攝像頭不同步造成的人體定位干擾,本文在進行人體場景定位實驗時采用了靜態(tài)實驗的策略。具體方法為:兩個人體靜止在場景中不發(fā)生遮擋,使用攝像頭1和攝像頭2對其拍照,然后根據(jù)獲取的單應矩陣和本章的人體場景定位算法求出其在場景中的位置(采樣點數(shù)N=4),不發(fā)生遮擋實驗結(jié)果如圖8所示。
2)發(fā)生遮擋
圖7 實驗環(huán)境部署圖Fig.7 Experimental environment deployment diagram
圖8 不發(fā)生遮擋實驗結(jié)果Fig.8 No occlusion experiment results
為了避免攝像頭不同步造成的人體定位干擾,本文在進行人體場景定位實驗時采用了靜態(tài)實驗的策略。具體方法為:兩個人體靜止在場景中發(fā)生遮擋,使用攝像頭1和攝像頭2對其拍照,然后根據(jù)獲取的單應矩陣和本章的人體場景定位算法求出其在場景中的位置(采樣點數(shù)N=4),不發(fā)生遮擋實驗結(jié)果如圖9所示。
實驗結(jié)果顯示,本文的算法平均用時0.056s/幀,而基于像素的場景人體定位算法平均用時0.449s/幀,顯然本文的算法在速度上提高了8倍。從實驗8和實驗9可以看出,在無遮擋的情況下,本文的算法和基于像素的定位誤差都比較小,而本文的平均誤差要低于基于像素的人體定位誤差3.2%。在有遮擋的情況下,兩種算法的誤差都有所增加,但是本文的算法的平均誤差仍然低于基于像素的場景定位算法1.2%。因此,本文提出的多攝像頭人體場景定位是一種高效的人體追蹤算法。