曹昭睿,劉鳳麗,2
(1.沈陽(yáng)理工大學(xué) 機(jī)械工程學(xué)院 沈陽(yáng) 110159; 2.遼寧省先進(jìn)制造與裝備重點(diǎn)實(shí)驗(yàn)室,沈陽(yáng) 110159)
隨著圖像處理技術(shù)的不斷發(fā)展和機(jī)器人技術(shù)應(yīng)用的日益拓廣,機(jī)器人視覺成為了國(guó)內(nèi)外研究的焦點(diǎn)。在人工智能機(jī)器人的應(yīng)用中,經(jīng)常需要機(jī)器人去自主識(shí)別和測(cè)量物體?,F(xiàn)階段常用的識(shí)別方法有SIFT特征檢測(cè)法、SURF特征點(diǎn)檢測(cè)法、輪廓檢測(cè)法等。但這些方法的精確度往往會(huì)在目標(biāo)物被部分遮擋以及目標(biāo)物分標(biāo)率不高時(shí)受到影響,同時(shí)計(jì)算量較大。以往的目標(biāo)識(shí)別跟蹤算法需要人工劃分目標(biāo)框以確定目標(biāo)物初始位置,這樣會(huì)產(chǎn)生因人工手動(dòng)劃分區(qū)域時(shí)帶來的誤差,導(dǎo)致跟蹤框精準(zhǔn)度下降。
本文在雙目視覺基礎(chǔ)上設(shè)計(jì)了一種多目視覺物體探測(cè)系統(tǒng),該系統(tǒng)基于C++/OpenCV2語(yǔ)言環(huán)境,利用物體顏色HSV值的特征,結(jié)合均值漂移(Meanshift)算法,實(shí)現(xiàn)對(duì)目標(biāo)物體的自動(dòng)識(shí)別捕獲與測(cè)距的功能。該算法相比以往識(shí)別跟蹤算法,計(jì)算速度更快,對(duì)目標(biāo)物分辨率與輪廓完整程度要求小,測(cè)距精確度較高,且不需人工劃分興趣區(qū)域,并能夠針對(duì)多個(gè)目標(biāo)物進(jìn)行同時(shí)鎖定跟蹤;同時(shí)提出了一種仿生復(fù)眼多相機(jī)測(cè)距系統(tǒng)的排列方式。該系統(tǒng)根據(jù)目標(biāo)物的顏色特征進(jìn)行HSV分割,使目標(biāo)物與背景分離,之后通過HSV分割后的圖像質(zhì)心模擬實(shí)物的表面中心計(jì)算距離,再利用均值漂移算法鎖定目標(biāo)物體,實(shí)現(xiàn)對(duì)移動(dòng)目標(biāo)物體的實(shí)時(shí)鎖定跟蹤與測(cè)距,具有實(shí)際應(yīng)用性,可以應(yīng)用到自動(dòng)行駛機(jī)器人或飛行器的控制與導(dǎo)航裝置。同時(shí)本系統(tǒng)在擁有目標(biāo)物圖像模板時(shí)也可以結(jié)合Harris角點(diǎn)檢測(cè)、SURF特征點(diǎn)檢測(cè)等方法進(jìn)行目標(biāo)物識(shí)別,具有兼容性。
當(dāng)目標(biāo)物體自身顏色與其所在背景的顏色有較大差異或相對(duì)比較獨(dú)特時(shí),可以利用目標(biāo)物體自身的HSV值(色調(diào)H、飽和度S和亮度V)將其從背景中分割出來。在本系統(tǒng)中,首先需要輸入目標(biāo)物的HSV值,然后系統(tǒng)逐幀尋找符合該條件的區(qū)域,一旦出現(xiàn)一個(gè)或多個(gè)區(qū)域,將進(jìn)入人工點(diǎn)選環(huán)節(jié),選擇后將該區(qū)域設(shè)定為HSV目標(biāo)區(qū)域并將目標(biāo)物從HSV目標(biāo)區(qū)域中分割。HSV圖像分割具體流程如下。
(1)確定目標(biāo)物HSV初始值。假設(shè)通過待測(cè)物模板可知其為m×n像素的物體,則通過均值統(tǒng)計(jì)可得待測(cè)物HSV初始值為C0={H0,S0,V0}[1],其中H0、S0、V0為:
(1)
(2)
(3)
式中hij、sij、vij為圖像中沿i、j方向上各點(diǎn)的HSV值。
(2)計(jì)算下一幀圖片每一個(gè)像素點(diǎn)的HSV值與輸入HSV值的相似程度。若存在兩個(gè)不同HSV值時(shí),其相應(yīng)的HSV值分別為C1、C2,則兩個(gè)顏色的相似度為S(C1,C2)[2]:
(4)
式中D(C1,C2)為在HSV顏色空間模型里兩顏色在空間中的距離。當(dāng)相似度S(C1,C2)為1時(shí),表示這兩種顏色完全相同,若為0時(shí),表示這兩種顏色的相似度最低。設(shè)定一個(gè)相似度閾值為0.7,當(dāng)兩種顏色的相似度高于0.7時(shí),則認(rèn)為這兩種顏色有關(guān),將待測(cè)圖片中的像素點(diǎn)顏色灰度值賦予255;若低于0.7,則認(rèn)為兩種顏色無(wú)關(guān),將該像素點(diǎn)的灰度值賦予0[3]。
(3)待測(cè)圖像做初步分割后,將所有大于相似度閾值的像素點(diǎn)的HSV值做均值統(tǒng)計(jì),得到新的HSV值Cn={Hn,Sn,Vn},再將新的HSV值作為二次分割的檢測(cè)值,將相似度閾值設(shè)定為0.9[4],重復(fù)步驟(2)以去除周圍相似干擾色的影響。之后對(duì)二次分割后的圖像做高斯濾波以及形態(tài)學(xué)先閉后開運(yùn)算,消除分割后圖像的外部突出和內(nèi)部空洞[5]。
(4)對(duì)該分割圖形輪廓做最小外接圓提取,將提取出的圓心坐標(biāo)作為均值漂移算法目標(biāo)區(qū)域的中心坐標(biāo)。
均值漂移(Meanshift)法是一種基于梯度的無(wú)參密度估計(jì)算法,概率密度分布的最大值在梯度概率分布上升方向[6]。本系統(tǒng)利用該方法實(shí)現(xiàn)目標(biāo)物查找、鎖定并跟蹤的過程中,需要經(jīng)過以下四個(gè)步驟:
(1)目標(biāo)物模型的表示
根據(jù)HSV分割后提取出的中心坐標(biāo)作為均值漂移算法興趣區(qū)域的中心,興趣區(qū)域面積需大于HSV分割圖形輪廓最小外接圓面積的二倍,以確保物體其他顏色部分能夠被包含在內(nèi)[7]。將興趣區(qū)域內(nèi)像素的特征通過特征直方圖的形式表征出來,該直方圖以概率密度qu的形式表現(xiàn),具體表達(dá)式如下:
(5)
(6)
將全部圖像中可能包含目標(biāo)物的區(qū)域標(biāo)記為候選目標(biāo)區(qū)域,定義該區(qū)域中心為y,從該中心開始計(jì)算候選目標(biāo)模型。候選區(qū)域內(nèi)的目標(biāo)模型像素用xi表示,則該區(qū)域內(nèi)目標(biāo)物特征概率密度pu表達(dá)式為:
(7)
式中:h為初始幀框定區(qū)域的大?。粂為候選目標(biāo)區(qū)域中心位置;Ch為標(biāo)準(zhǔn)化常量系數(shù),Ch表達(dá)式如下式所示[8]:
(8)
(2)目標(biāo)物模型的匹配
利用巴氏系數(shù)(Bhattacharyya)判別目標(biāo)物所在區(qū)域與參考區(qū)域的特征相似程度[9],巴氏系數(shù)ρ計(jì)算公式如下:
(9)
式中的目標(biāo)模型和候選目標(biāo)模型,都是經(jīng)過歸一化處理的n維向量。巴氏系數(shù)越大,說明目標(biāo)與候選目標(biāo)越相似。結(jié)合巴氏系數(shù)與均值向量即可得到目標(biāo)在下一幀圖像中的可能位置。
(3)確定目標(biāo)位置
通過迭代過程不斷比較目標(biāo)模型與候選模型之間的巴氏系數(shù),以確定搜索的方向,從而得到目標(biāo)物體的移動(dòng)軌跡與現(xiàn)階段位置。將所得到的巴氏系數(shù)在第n-1幀目標(biāo)位置中心鄰域附近做泰勒展開,省略高階項(xiàng)后以確定[p,q]的一階線性近似,其表達(dá)式為:
(10)
將候選目標(biāo)帶入式(10)后得:
(11)
式中wi為權(quán)重系數(shù),其表達(dá)式如下:
(12)
(13)
式中g(shù)(x)=-k(x)。
基于雙目視差測(cè)距法,設(shè)計(jì)了一種多目視差測(cè)距系統(tǒng)。當(dāng)參與目標(biāo)物觀測(cè)的相機(jī)大于兩個(gè)時(shí),可根據(jù)雙目視差法進(jìn)行擴(kuò)展,根據(jù)此方法擴(kuò)展的系統(tǒng)能夠以在原有系統(tǒng)上增大測(cè)距精確度,同時(shí)擴(kuò)大視場(chǎng)范圍。假設(shè)一個(gè)多目視差系統(tǒng)中存在n個(gè)陣列排布的相機(jī),首先設(shè)立一個(gè)主相機(jī),最終所測(cè)的目標(biāo)物距離則以所選主相機(jī)為基準(zhǔn),將該相機(jī)所在坐標(biāo)系與世界坐標(biāo)系聯(lián)立,使主相機(jī)坐標(biāo)系與目標(biāo)物坐標(biāo)系對(duì)應(yīng);其他相機(jī)作為參考相機(jī),可以分別與主相機(jī)視為雙目測(cè)距系統(tǒng)組。將參考相機(jī)依次與主相機(jī)做相機(jī)標(biāo)定處理,得出n-1組標(biāo)定矩陣,其中需保持主相機(jī)內(nèi)矩陣不變。在得到所有相機(jī)的內(nèi)外矩陣之后,依次將參考相機(jī)與主相機(jī)做視差算法,求得目標(biāo)距主相機(jī)距離。本系統(tǒng)的目標(biāo)測(cè)距有以下幾個(gè)環(huán)節(jié)組成。
(1)確定主相機(jī)與參考相機(jī)
當(dāng)多相機(jī)參加拍攝時(shí),相機(jī)的陣列方式與測(cè)距方式因相機(jī)個(gè)數(shù)不同而有所改變,假設(shè)相機(jī)個(gè)數(shù)為n,則具體陣列與測(cè)距方式如下:
當(dāng)n為偶數(shù)時(shí),將相機(jī)按照對(duì)稱方式進(jìn)行陣列,即任意一個(gè)位于相機(jī)平面空間(±x,+y)坐標(biāo)位置的相機(jī)均有一個(gè)與之對(duì)應(yīng)的相機(jī),該對(duì)應(yīng)相機(jī)坐標(biāo)滿足(±x,-y)。假設(shè)相機(jī)個(gè)數(shù)為四個(gè),則應(yīng)按照如圖1所示進(jìn)行陣列。
圖1 四相機(jī)陣列方式
設(shè)位于圖1中右上角相機(jī)為0號(hào)相機(jī),坐標(biāo)為(x,y);左上角相機(jī)為1號(hào)相機(jī),坐標(biāo)為(-x,y);右下角相機(jī)為2號(hào)相機(jī),坐標(biāo)為(x,-y);左下角相機(jī)為3號(hào)相機(jī),坐標(biāo)為(-x,-y)。偶數(shù)相機(jī)組在設(shè)立主相機(jī)與參考相機(jī)時(shí)需要循環(huán)設(shè)立,首先設(shè)立0號(hào)相機(jī)為主相機(jī),將其余相機(jī)設(shè)立為參考相機(jī),將主相機(jī)分別與參考相機(jī)組合形成雙目相機(jī)組后進(jìn)行相機(jī)標(biāo)定與目標(biāo)物測(cè)距。完成0號(hào)相機(jī)為主相機(jī)的計(jì)算后,再將1號(hào)相機(jī)設(shè)立為主相機(jī),將其余相機(jī)設(shè)立為參考相機(jī)并進(jìn)行標(biāo)定與測(cè)距。重復(fù)上述步驟至全部相機(jī)均作為主相機(jī)進(jìn)行標(biāo)定與測(cè)距。
當(dāng)n為奇數(shù)時(shí),將相機(jī)按照輻射方式進(jìn)行陣列,即將一個(gè)相機(jī)設(shè)立為主相機(jī),標(biāo)號(hào)為0號(hào),并將其置于相機(jī)平面中心位置,坐標(biāo)為(0,0);其余相機(jī)均為參考相機(jī),圍繞主相機(jī)呈同心圓狀輻射擺放,具體擺放位置根據(jù)實(shí)際空間大小確定,需滿足任意一個(gè)參考相機(jī)均有一個(gè)對(duì)應(yīng)相機(jī)與其關(guān)于主相機(jī)對(duì)稱。假設(shè)相機(jī)個(gè)數(shù)為五個(gè),則應(yīng)按照如圖2所示進(jìn)行陣列。
圖2 五相機(jī)陣列方式
(2)相機(jī)標(biāo)定
若需要確立相機(jī)與待測(cè)物體之間的距離,首先需要確定相機(jī)的內(nèi)外矩陣。其中相機(jī)的內(nèi)矩陣包含了焦距、主點(diǎn)、傾斜系數(shù)和畸變系數(shù)四個(gè)參數(shù),該四個(gè)參數(shù)完全由相機(jī)自身結(jié)構(gòu)決定,不受擺放位置、角度等環(huán)境影響。內(nèi)矩陣M形式如下[11]:
(14)
式中:f為x、y方向上透鏡物理焦長(zhǎng)與CCD每個(gè)單元尺寸的乘積;x0、y0為相機(jī)芯片中心相對(duì)于光軸在x、y方向上的偏移距離。
相機(jī)外矩陣包含了旋轉(zhuǎn)矩陣R和平移矩陣T。旋轉(zhuǎn)矩陣代表了世界坐標(biāo)系的坐標(biāo)軸相對(duì)于攝像機(jī)坐標(biāo)軸的方向;平移矩陣代表了在攝像機(jī)坐標(biāo)系下空間原點(diǎn)的位置,兩個(gè)矩陣共同描述了如何把點(diǎn)從世界坐標(biāo)系轉(zhuǎn)換到攝像機(jī)坐標(biāo)系。外矩陣公式如下[12]:
(15)
式中ψ為相機(jī)光軸在x方向上的偏轉(zhuǎn)角度。
(16)
式中φ為相機(jī)光軸在y方向上的偏轉(zhuǎn)角度。
(17)
式中θ為相機(jī)光軸在z方向上的偏轉(zhuǎn)角度。
R=Rx(ψ)*Ry(φ)*Rz(θ)
(18)
(19)
式中t矩陣為相機(jī)在x、y、z三個(gè)方向上的偏移分量矩陣。
本系統(tǒng)基于張正友棋盤標(biāo)定法,利用Matlab2015進(jìn)行相機(jī)標(biāo)定。對(duì)于n個(gè)奇數(shù)相機(jī),需要將所有參考相機(jī)分別與主相機(jī)進(jìn)行標(biāo)定,共標(biāo)定n-1組矩陣;對(duì)于偶數(shù)個(gè)相機(jī),為確保精準(zhǔn)性,則需分別將所有相機(jī)設(shè)立為主相機(jī)并進(jìn)行互相標(biāo)定,共標(biāo)定n×(n-1)組矩陣。在不需要較高的精確度時(shí),偶數(shù)個(gè)相機(jī)也可只設(shè)立一個(gè)主相機(jī),以減小計(jì)算量,此時(shí)共標(biāo)定n-1組矩陣。
(3)目標(biāo)測(cè)距
將相機(jī)分組后,據(jù)雙目測(cè)距系統(tǒng)進(jìn)行分組測(cè)距。已知像平面坐標(biāo)系中的目標(biāo)物坐標(biāo)[XYZ1]T,主相機(jī)與參考相機(jī)的像點(diǎn)分別滿足如下關(guān)系[13]:
(20)
式中[u1v11]T為目標(biāo)物坐標(biāo)在主相機(jī)像平面上的成像坐標(biāo);Mleft為主相機(jī)內(nèi)矩陣;[u2v21]T為目標(biāo)物坐標(biāo)在參考相機(jī)像平面上的成像坐標(biāo);Mright為參考相機(jī)內(nèi)矩陣。
其中M矩陣為內(nèi)外參矩陣相乘得到的。將M矩陣展開為mij陣,可以得到:
(21)
(22)
聯(lián)立式(21)、(22),可以得到:
(23)
根據(jù)以上關(guān)系,可以采用最小二乘法求解出空間坐標(biāo)。此時(shí)便可得到根據(jù)該參考相機(jī)與主相機(jī)所求的目標(biāo)物距離,該距離為物體與主相機(jī)之間的水平距離。重復(fù)以上步驟,將余下所有參考相機(jī)分別于主相機(jī)組合,求出n-1組關(guān)于主相機(jī)的距離。將所得數(shù)據(jù)求均值處理,最終得到所求目標(biāo)物距離。
對(duì)于n個(gè)奇數(shù)相機(jī),測(cè)距結(jié)果共有n-1個(gè),則最終結(jié)果為:
(24)
式中,L奇為奇數(shù)相機(jī)與最終目標(biāo)物距離;li為i號(hào)參考相機(jī)與主相機(jī)組合后的目標(biāo)物計(jì)算距離。
對(duì)于n個(gè)偶數(shù)相機(jī),測(cè)距結(jié)果共有n(n-1)個(gè),則最終結(jié)果為:
(25)
式中,L偶為偶數(shù)相機(jī)與最終目標(biāo)物距離;lij為i、j號(hào)相機(jī)組合后的目標(biāo)物計(jì)算距離。
本系統(tǒng)共由目標(biāo)物識(shí)別、目標(biāo)區(qū)域跟蹤、目標(biāo)距離測(cè)量與目標(biāo)位置刷新四個(gè)環(huán)節(jié)組成,系統(tǒng)處理流程圖如圖3所示。
實(shí)驗(yàn)儀器采用四攝像機(jī)偶數(shù)陣列,相機(jī)型號(hào)為CAM5031-V3,分辨率為640×480,幀率30FPS,相鄰相機(jī)縱向間隔45mm,橫向間隔30mm。目標(biāo)物顏色呈紅色,拍攝面積為23mm×20mm,輸入H值范圍為170~190、S值范圍為153~230、V值范圍為77~127,為保證成像分辨率,物體在距離相機(jī)30cm范圍內(nèi)無(wú)規(guī)則運(yùn)動(dòng)。實(shí)驗(yàn)系統(tǒng)的編寫環(huán)境為Visul Studio 2012,補(bǔ)充函數(shù)庫(kù)為OpenCV 2.4.13,相機(jī)標(biāo)定軟件為Matlab2015 B,標(biāo)定方法為張正友棋盤標(biāo)定法,系統(tǒng)運(yùn)行過程如圖4所示。
圖3 系統(tǒng)流程圖
圖4 系統(tǒng)運(yùn)行過程
圖4中左側(cè)四窗口為四相機(jī)探測(cè)視頻,實(shí)線正方形目標(biāo)框?yàn)楸徊东@的目標(biāo)區(qū)域,若未被人工點(diǎn)選則為虛線正方形目標(biāo)框,未出現(xiàn)可識(shí)別目標(biāo)物測(cè)不出現(xiàn)目標(biāo)框。右側(cè)為目標(biāo)物實(shí)時(shí)距離反饋窗口。試驗(yàn)中共錄制了時(shí)長(zhǎng)為10s的測(cè)試視頻,共300幀,選取第60幀至第70幀作為參考,其每幀實(shí)際距離與測(cè)量結(jié)果對(duì)比如表1所示。
表1 第60幀至第70幀結(jié)果
從實(shí)驗(yàn)結(jié)果上看,系統(tǒng)所測(cè)量的目標(biāo)物距離較為穩(wěn)定,準(zhǔn)確性較高,觀測(cè)范圍較大,偏差值均小于5%,表明該系統(tǒng)能夠完成目標(biāo)物的識(shí)別、測(cè)距與跟蹤功能。其中目標(biāo)物識(shí)別面積越大、移動(dòng)速度越慢,測(cè)量距離越準(zhǔn)確;目標(biāo)物識(shí)別面積越小、移動(dòng)速度越快,系統(tǒng)所提取的信息越少,偏差越大。
設(shè)計(jì)了一種利用目標(biāo)物HSV特征分割目標(biāo),利用均值漂移算法鎖定目標(biāo),并基于雙目視覺拓展的多目視覺法測(cè)量目標(biāo)的自動(dòng)識(shí)別跟蹤系統(tǒng)。能夠自主對(duì)具有特殊顏色特征的目標(biāo)物實(shí)行實(shí)時(shí)識(shí)別跟蹤與測(cè)距。實(shí)驗(yàn)結(jié)果表明,該方法穩(wěn)定性好,精準(zhǔn)度較高,觀測(cè)范圍大,具有實(shí)際應(yīng)用能力。