譚廣通,程國民,李長春
(中國人民解放軍 91245部隊,遼寧 葫蘆島 125000)
計算機視覺測量方法是近20年逐步發(fā)展并應(yīng)用于測量領(lǐng)域的,計算機視覺測量主要分為多目視覺、雙目視覺及單目視覺。其中雙目和多目測量需要利用兩個或者多個視覺傳感器來完成測量任務(wù)。這兩種測量方法對相機的位置布置、視場大小、傳感器尺寸、相機相對姿態(tài)等要求較高,同時存在視場范圍小、測量距離短等缺點,并且在實際應(yīng)用中系統(tǒng)結(jié)構(gòu)復(fù)雜,數(shù)據(jù)處理量大。因此,在很多測量領(lǐng)域被結(jié)構(gòu)簡單、速度快、穩(wěn)定性好的單目視覺測量系統(tǒng)所代替。
單目視覺測量是指僅利用一臺視覺傳感器采集圖像,對物體的幾何尺寸及物體在空間的位置、姿態(tài)等進行測量。單目視覺測量方法具有系統(tǒng)結(jié)構(gòu)簡單、標(biāo)定步驟少、視場范圍廣等優(yōu)點。
幾何相似法屬于單目視覺測量方法中的一種,基于幾何相似法的單相機測量方法是在幾何相似法的基礎(chǔ)上進行了改進,無需按照幾何相似法要求相機鏡頭光軸垂直于測量平面,布站方法更加簡單。通過基于幾何相似法的單相機測量方法能夠?qū)椡桀惪焖倌繕?biāo)初速度進行測量,經(jīng)過后期的圖像處理和計算,給出有效的測量結(jié)果。
目前,彈丸類目標(biāo)速度測量方法一般分為兩種,一種是利用多普勒測速儀,一種是利用截取裝置獲得飛行距離和時間,從而計算得出速度。第一種方法對系統(tǒng)要求高,導(dǎo)致造價昂貴;第二種方法系統(tǒng)相對要求簡單,適用性較高。但二者均只能計算測量出速度,不能得到目標(biāo)的飛行狀態(tài)圖像。隨著高速相機拍攝能力的發(fā)展,計算機視覺測量領(lǐng)域也突飛猛進,提出一種單相機彈丸類高速目標(biāo)的初速度的測量方法,不僅可以得到彈丸類高速目標(biāo)的出筒時刻速度,還能夠采集到目標(biāo)飛行圖像。
為了重建運動目標(biāo)的運動軌跡,獲得目標(biāo)的三維空間位置信息,單目視覺測量系統(tǒng)使用一臺攝像機采集目標(biāo)圖像,在獲得的圖像序列中,利用景物中的一些自然或者人造的特征,應(yīng)用預(yù)先設(shè)計好的算法解算并輸出運動目標(biāo)的相關(guān)信息。單目視覺測量是計算機視覺研究的一個重要內(nèi)容,涉及計算機圖像處理、模式識別、人工智能及自動控制等諸多學(xué)科。單目視覺測量結(jié)構(gòu)簡單、標(biāo)定步驟少等優(yōu)點,同時還避免了立體視覺中的視場小、立體匹配難的不足,因而近年來這方面的研究比較活躍。利用單目視覺來對運動目標(biāo)進行測量的方法有很多,主要可以概括為幾何相似法、幾何光學(xué)法、特征靶標(biāo)測量法、激光測距儀輔助測量法等。其中幾何相似法相比于其它測量方法具有測量場景布置簡單、計算快捷、已知條件需求少等優(yōu)點,在單目視覺測量領(lǐng)域得到廣泛應(yīng)用。
單目視覺測量系統(tǒng)所拍攝圖像中的每個像素點與實際三維環(huán)境中的物體對應(yīng)位置是與相機成像系統(tǒng)存在某種幾何關(guān)系,這種幾何關(guān)系主要與相機的探測器尺寸、分辨率、鏡頭焦距、光軸位置、鏡頭畸變等參數(shù)相關(guān),這些參數(shù)稱為相機參數(shù),參數(shù)的準(zhǔn)確性決定了幾何計算模型的計算結(jié)果精確度。相機參數(shù)一般來源于實驗計算,這個過程稱為相機標(biāo)定。
相機標(biāo)定分為內(nèi)部參數(shù)標(biāo)定和外部參數(shù)標(biāo)定,相機標(biāo)定一般是對相機鏡頭的標(biāo)定。內(nèi)部參數(shù)簡稱內(nèi)參,外部參數(shù)簡稱外參。內(nèi)參主要包括鏡頭的像素焦距、主點位置、鏡頭徑向畸變、鏡頭切向畸變等,外參主要為相機在空間坐標(biāo)系中的位置轉(zhuǎn)換關(guān)系,包含了角度轉(zhuǎn)換矩陣和位置轉(zhuǎn)換矩陣。目標(biāo)物體的測量須通過相機內(nèi)參和外參建立幾何計算模型。因此,在單目視覺測量系統(tǒng)中,必須對相機系統(tǒng)進行標(biāo)定,得到相機標(biāo)定參數(shù)。
相機參數(shù)標(biāo)定算法可分為線性標(biāo)定算法和非線性標(biāo)定算法。由于線性標(biāo)定只考慮線性成像模型(針孔模型),不考慮像差,通過線性變換直接求解。線性模型不能精準(zhǔn)地描述相機的成像幾何關(guān)系,因而精度較差,在測量領(lǐng)域一般不予采用。非線性標(biāo)定利用線性變換方法并且考慮成像系統(tǒng)的畸變因素得到相機參數(shù)的精確值。由于測量彈丸出筒初速度對圖像判讀要求較高,因此需對相機鏡頭進行非線性標(biāo)定。
鏡頭畸變是指光學(xué)鏡頭在成像過程中造成所固有的成像失真情況總稱,使得整個光學(xué)系統(tǒng)在整個視場范圍內(nèi)成像與實物之間的關(guān)系不能嚴格滿足小孔成像原理。鏡頭畸變主要包括徑向畸變和切向畸變,徑向畸變表現(xiàn)為桶形畸變和枕型畸變,切向畸變表現(xiàn)為角度方向上的變化。在機器視覺檢測中,尤其是高精度機器視覺檢測中,鏡頭畸變則是影響精度的一個主要因素。因此,在現(xiàn)行使用的視覺檢測系統(tǒng)中,加入了對相機鏡頭的畸變校正,大大降低了鏡頭畸變對圖像的影響,從而提高測量精度。鏡頭畸變校正主要通過非線性標(biāo)定計算畸變參數(shù),畸變校正方法主要有Tsai的基于徑向畸變的RAC兩步標(biāo)定算法,Zhang提出的基于2D標(biāo)定板的相機鏡頭標(biāo)定。通過對鏡頭的標(biāo)定,能夠給出相機內(nèi)參矩陣和畸變參數(shù)矩陣,相機內(nèi)參包含像素焦距、主點坐標(biāo)、坐標(biāo)軸傾斜參數(shù)和其他系統(tǒng)誤差參數(shù),畸變參數(shù)矩陣包含鏡頭徑向畸變系數(shù)和切向畸變系數(shù)。
根據(jù)幾何相似法測量要求,在測量拍攝圖像時需要將相機鏡頭光軸(相機拍攝方向)垂直于測量平面,再根據(jù)視場中的標(biāo)志物體實際大小、標(biāo)志物體圖像成像尺寸、測量目標(biāo)成像尺寸進行計算測量,得到測量目標(biāo)實際尺寸或其他測量數(shù)據(jù)。幾何相似法因為需將相機拍攝方向垂直于測量平面從而在實際應(yīng)用中限制了相機布站,對于某些無法將相機拍攝方向垂直于測量平面的場景,幾何相似法將無法使用。為了更加方便測量,減少測量方法場景限制,在幾何相似法的基礎(chǔ)上進行了一定的改進,改進之后無需保證相機拍攝方向垂直測量平面,極大降低了相機布置難度,提高了測量方法場景適應(yīng)能力。
改進后的測量方法無需將相機拍攝方向垂直于測量平面,只需將相機放置于測量平面一側(cè),相機視場覆蓋標(biāo)志物和測量目標(biāo),標(biāo)定好位置關(guān)系參數(shù)和相機及鏡頭參數(shù)供后續(xù)判讀計算使用。位置關(guān)系參數(shù)包括相機拍攝方向與測量平面之間的夾角、標(biāo)志物的實際物理尺寸、相機拍攝仰角,相機及鏡頭參數(shù)包括相機分辨率、像元尺寸、焦距、主點坐標(biāo)、鏡頭畸變系數(shù)等。
以測量某型火炮彈丸出筒初速度為例,對基于幾何相似法的單目相機測速方法進行布站,將相機布置于火炮側(cè)方,相機視場覆蓋火炮發(fā)射管和發(fā)射方向彈丸飛行部分軌跡,測速彈丸飛行速度只需設(shè)定標(biāo)志物為火炮發(fā)射管。布站方案需要的已知條件包括:相機拍攝方向與彈丸飛行方向(即射向)水平投影方向夾角α
,相機仰角E
,炮管長度L
。相機布置方案如圖1所示。圖1 相機布置方案
具體測量方法如下。
1)首先計算彈丸飛行軌跡在經(jīng)過相機光心水平面上的投影距離公式:
試驗前通過全站儀標(biāo)定位置關(guān)系,得到相機拍攝仰角E
,火炮發(fā)射仰角e
,使用量具測量標(biāo)記炮管長度為L
。相機及鏡頭參數(shù)試驗前后標(biāo)定均可,已知的必要參數(shù)包括機分辨率、像元尺寸、焦距、主點坐標(biāo)、鏡頭畸變系數(shù)。經(jīng)過相機光心建立一個平面S
(水平面),見圖2。彈丸在空中飛行只受重力和空氣阻力作用,在發(fā)射初始段短時間內(nèi)可以視為勻速直線運動,因此彈丸飛行軌跡在水平面投影為一直線。如圖,A
點為炮管根部位置在S
平面內(nèi)投影,M
為炮管口位置在S
平面內(nèi)投影,B
為彈丸出筒后空間某一點位置在S
平面內(nèi)投影,AB
為炮管及彈丸飛行軌跡在該平面上的投影,ab
為炮管及彈丸在相機探測器上成像軌跡在該平面上的投影。O
為相機光心,AM
為標(biāo)記炮管在該平面上的投影,B
點為某時刻彈丸在該平面上的投影,α
為彈丸射向與相機拍攝方向在水平面S
投影的夾角,am
為炮管在相機探測器上成像在該平面上的投影,b
為彈丸成像在該平面投影。圖2 平面坐標(biāo)系計算
在S
平面內(nèi),以光心O
為原點,光軸在S
平面上的投影為y
軸,過光心O
在該平面內(nèi)與y
軸垂直的線為x
軸,如圖2建立平面直角坐標(biāo)系。已知:發(fā)射仰角為e
,則炮管投影長度為L
*cose,拍攝方向與射向在平面S
投影夾角為α
,ab
與光心O
點間距離為k
,a
點坐標(biāo)為(x
,k
),m
坐標(biāo)(x
,k
),b
坐標(biāo)(x
,k
)。計算得出:
(1)
公式(1)中:|MB
|為彈丸出筒至B
點的距離;L
為標(biāo)記的炮管長度;e
為火炮發(fā)射仰角;x
為相機探測器上炮管根部成像點在S
平面上的投影點坐標(biāo);x
為相機探測器上炮管口成像點在S
平面上的投影點坐標(biāo);x
為相機探測器上彈丸成像點在S
平面上的投影點坐標(biāo);k
為S
平面內(nèi)ab
與光心O
點間距離;α
為拍攝方向與射向在平面S
投影夾角。2)根據(jù)探測器所在平面成像位置對公式進一步推導(dǎo):
平面P
為相機探測器所在平面,相機拍攝仰角為E
時(即∠qOo
=E
,平面P
與平面S
相交于直線ab
,既a
、m
、q
、b
、O
所在平面為S
平面,Oq
為光軸Oo
所在直線在S
平面內(nèi)投影),成像系統(tǒng)關(guān)系如圖3所示,O
為相機鏡頭光心,o
為相機探測器成像主點位置(需通過相機標(biāo)定得到,一般在圖像中心點附近),其中Oo
距離為成像的像距,在平面P
中,a
m
為炮管成像,彈丸飛行軌跡成像為a
b
。在P
平面中,以o
為原點,水平為x
軸,垂直x
軸方向為y
軸,在平面P
內(nèi)建立平面直角坐標(biāo)系,設(shè)a
、m
、b
點坐標(biāo)分別為a
(x
,y
)、m
(x
,y
)、b
(x
,y
)。圖3 相機仰角為E時成像系統(tǒng)與光軸關(guān)系
根據(jù)平面P
內(nèi)的已知條件計算,對公式(1)進一步推導(dǎo)計算得出:(2)
公式(2)中:f
為相機焦距(需通過相機標(biāo)定得到);E
為相機拍攝仰角;x
為a
點橫坐標(biāo);x
為m
點橫坐標(biāo);x
為b
點橫坐標(biāo)。3)計算彈丸實際飛行距離:
如圖4,已知彈丸實際飛行軌跡為A
B
,OQ
為光軸方向(相機拍攝方向),C
、A
、M
、Z
、B
、V
、O
點所在平面為水平面S
,直線CV
為水平面S
與彈丸飛行軌跡所在鉛錘面相交直線,OZ
為光軸OQ
在水平面S
內(nèi)的投影,AB
為彈丸飛行軌跡在水平面S
平面投影,AB
與OZ
交與Z
點,彈丸射向與拍攝方向在S
平面內(nèi)投影夾角為α
,即∠AZO
=α
,彈丸發(fā)射仰角為e
,即∠B
CB
=e
。圖4 相機仰角為E時彈丸軌跡與光軸關(guān)系
根據(jù)圖4已知條件以及公式(2)進行計算,彈丸實際飛行距離M
B
為:(3)
由公式(3)可知,根據(jù)標(biāo)記的炮管長度L
、彈丸射向與拍攝方向在水平面S
平面內(nèi)投影夾角α
、相機焦距f
、相機拍攝仰角E
、炮管根部成像橫坐標(biāo)x
、炮口成像橫坐標(biāo)x
以及彈丸成像橫坐標(biāo)x
,可以計算出所拍攝任意一幀火炮彈丸與炮口間的距離。由此可通過判讀炮管出口處某一幀圖像彈丸B
與任意其他幀圖像彈丸B
點位置,分別計算彈丸與炮口間的距離M
B
及M
B
。為了進一步驗證方法的可行性,利用高速相機結(jié)合某型火炮試驗進行了試驗驗證。根據(jù)測量方法要求進行布站,單臺高速攝像機布置于火炮發(fā)射右側(cè)方,相機與火炮位置關(guān)系見圖5。
圖5 火炮測量布站方案
如圖5所示,相機位于C
點,拍攝方向與射向在水平面投影夾角為α
。使用全站儀進行標(biāo)定,α
=65°,相機拍攝仰角E
=1.6°。相機參數(shù):
分辨率:1024×1024;
灰度等級:8 bit;
工作頻率:500 fps;
焦距:29 mm;
像元尺寸:12 μm。
為了便于后續(xù)判讀計算,在火炮發(fā)射管上做標(biāo)記,將火炮發(fā)射管作為參考標(biāo)志物。布站時,需將炮管放置在相機拍攝視場內(nèi)。將相機放置在離彈丸飛行方向右側(cè)方約40米處,采用固定拍攝方法。
在得到拍攝圖像后,需對相機鏡頭內(nèi)參數(shù)進行標(biāo)定,內(nèi)參數(shù)主要包括鏡頭的像素焦距、主點坐標(biāo)、鏡頭畸變系數(shù)等,已知相機像元尺寸可反算出相機鏡頭焦距值。相機鏡頭在小焦距寬視場情況下畸變較大,若不進行畸變校正,則在測量應(yīng)用上會帶來較大測量誤差,因此需對采集的圖像進行畸變校正之后再進行判讀,降低判讀誤差。
采用2D棋盤格標(biāo)定板對相機鏡頭進行標(biāo)定,2D棋盤格標(biāo)定方法簡單快捷并且技術(shù)成熟,在相機鏡頭標(biāo)定中應(yīng)用廣泛。
在Matlab2014以上版本,使用棋盤格進行相機標(biāo)定已經(jīng)集成為內(nèi)部工具箱,可以直接使用,且方法簡單。這里以Matlab2019版本為例,進行相機標(biāo)定,標(biāo)定方法如下。
1)選用專用相機黑白棋盤格標(biāo)定板,規(guī)格為22×14,50 mm。黑白棋盤格標(biāo)定板如圖6所示。
圖6 黑白棋盤格標(biāo)定板
2)用相機從不同角度對標(biāo)定板進行圖像采集,采集數(shù)量一般多于9張,圖像數(shù)量越多標(biāo)定精度越高。
3)如圖7所示,程序完成標(biāo)定后,在右側(cè)窗口顯示單張圖像的重投影誤差,并顯示相對于靶板在空間中的位置。如圖8所示,在Matlab中可查看保存的相機標(biāo)定參數(shù)。包括相機像素焦距、主點坐標(biāo)、鏡頭畸變系數(shù)、外參數(shù)旋轉(zhuǎn)和平移矩陣等。
圖7 Matlab標(biāo)定程序
圖8 相機標(biāo)定結(jié)果
4)標(biāo)定結(jié)果解釋:
圖8中PrincipalPoints為主點坐標(biāo),即光軸與相機探測器交點位置坐標(biāo)。RadialDistortion為徑向畸變系數(shù),包括k
、k
、k
。TangentialDistortion為切向畸變系數(shù),包括p
、p
。可以根據(jù)徑向畸變系數(shù)k
、k
、k
和切向畸變系數(shù)p
、p
對圖像進行畸變矯正。Matlab提供了去畸變語句undistortImage,可對原始圖像進行畸變校正,得到精確圖像,靶板的畸變校正圖像對比如圖9。圖9 畸變校正前后對比圖像(左為校正前圖像,右為校正后圖像)
通過Matlab計算可以得到鏡頭的內(nèi)參數(shù),供后續(xù)判讀計算。根據(jù)所標(biāo)定的畸變參數(shù)對試驗圖像進行畸變校正,再進行判讀。
選取部分火炮發(fā)射管作為參考標(biāo)志物,標(biāo)記長度經(jīng)測量為L
=3 935 mm,根據(jù)圖像判讀的點位像素值、發(fā)射管長度L
、相機鏡頭焦距f
、像元尺寸、拍攝方向與發(fā)射方向夾角α
、兩幀圖像之間時間間隔t
,利用基于幾何相似法的彈丸類目標(biāo)測量方法,可以算出炮彈飛行速度v
。將判讀的像素坐標(biāo)、標(biāo)志物長度以及相機的關(guān)鍵參數(shù)、角度關(guān)系等數(shù)據(jù)代入公式(3)中進行計算,高速相機拍攝幀頻為500 Hz,為方便計算,分別計算第一幀和第十一幀彈丸位置,算出初速度。試驗共發(fā)射5枚彈丸,最后測量數(shù)據(jù)處理結(jié)果見表1。
該測量方法在測量彈丸類目標(biāo)時,因為目標(biāo)會受空氣阻力以及重力加速度的影響,目標(biāo)不是勻速直線運動,并且在后期的圖像數(shù)據(jù)處理過程中會引入一些人為操作的誤差。綜合各種情況,主要的誤差來源有空氣阻力、重力加速度、像距、判讀、鏡頭標(biāo)定、角度標(biāo)定以及時間精度帶來的誤差。
在試驗任務(wù)中,采用的相機拍攝頻率為500 fps,測量10幀間隔圖像,彈丸飛行時間為20 ms,根據(jù)空氣阻力公式(F
為空氣阻力;C
為空氣阻力系數(shù);ρ
為空氣密度;S
為物體迎風(fēng)面積;v
為物體與空氣相對速度),計算得出空氣阻力造成的誤差影響在1 m/s左右,對精度影響為0.01%。重力加速度在水平方向上對速度沒有影響,重力加速度一般取g=9.8 m/s,根據(jù)加速度公式可得,在垂直方向上20 ms將會產(chǎn)生0.2 m/s的速度差,對彈丸初速度影響可以忽略。
公式中的焦距f
實為像距,與相機焦距f
值存在一定的誤差。相機焦距經(jīng)過相機標(biāo)定得到為29 mm,物距為相機與目標(biāo)之間的距離大于40 m,根據(jù)透鏡成像公式(f
為相機焦距,u
為物距,v
為像距),可以計算得出像距小于29.021 mm,給計算結(jié)果帶來的誤差小于0.07%,該誤差可以后期根據(jù)目標(biāo)測量位置進行修正,像距帶來的誤差在修正后可以基本消除。表1 測量結(jié)果
判讀圖像內(nèi)容包括標(biāo)志物和彈丸,判讀圖像所使用軟件可以達到亞像素判讀,判讀誤差一般取0.5像素。對于標(biāo)志物炮管,0.5像素帶來的速度測量誤差為0.4%。對于彈丸的位置判讀,飛行方向上0.5像素帶來的速度測量誤差為0.2%。
鏡頭標(biāo)定誤差主要為鏡頭焦距標(biāo)定,誤差一般在0.1 mm以內(nèi),帶來的速度測量誤差為0.05%。
角度標(biāo)定主要為彈丸射向和拍攝方向之見的夾角,標(biāo)定誤差小于0.1°,結(jié)果誤差小于0.06%。
時間精度取決于相機同步精度和相機外接時碼鐘授時精度,目前高速相機時間同步精度以及時碼鐘授時精度均優(yōu)于1 μs,時間精度帶來的誤差小于0.001%,可以忽略不計。
綜合上述誤差來源,對測量誤差影響較大的主要為判讀誤差,其中標(biāo)志物判讀誤差大于彈丸判讀誤差。因此,為了提高測量精度應(yīng)在試驗之前,提前對標(biāo)志物進行標(biāo)記處理,提高標(biāo)志物成像質(zhì)量,另外可以選擇更高分辨率的相機,減小判讀誤差。
高速彈丸類目標(biāo)的可視化測量與高速相機密切相關(guān),隨著高速相機性能的發(fā)展,高速可視化測量領(lǐng)域也同步快速發(fā)展,著眼彈丸類快速目標(biāo)的可視化測量,在幾何相似法的基礎(chǔ)上研究一種單目相機彈丸類目標(biāo)初速度測量方法,并根據(jù)該測量方法進行實際測量試驗,得到測量圖像數(shù)據(jù)。采用Matlab鏡頭參數(shù)標(biāo)定程序計算得出鏡頭的內(nèi)參數(shù),并對高速相機采集的圖像進行畸變校正,輸出滿足判讀要求的圖像,應(yīng)用基于幾何相似法的單目相機測量原理計算得到測量結(jié)果,測量結(jié)果誤差在1%以內(nèi),同時對試驗的結(jié)果進行了誤差分析,驗證了采用單相機進行彈丸類出筒初速度測量方法可行性。
該方法簡化了幾何相似法測量原理中相機布置的限制要求,使得單目視覺測量更加靈活方便,增強了單相機測量能力,豐富了單目視覺測量領(lǐng)域的內(nèi)容。隨著超高拍攝幀頻、高像素分辨率相機的發(fā)展,單目視覺測量精度將會越來越高,單目視覺測量應(yīng)用也會越來越廣泛。