徐立國 孫瑞東 黨敬民
(1.吉林大學機械與航空航天工程學院, 長春 130022; 2.吉林大學通信工程學院, 長春 130022;3.吉林大學生物與農(nóng)業(yè)工程學院, 長春 130022)
攝像機視覺檢測具有豐富的內(nèi)涵(集顏色、尺度、方位、姿態(tài)等信息于一體),在農(nóng)用機器人領域備受關注。由于鏡頭的非線性,任何用于視覺檢測的攝像機都需標定,標定精度直接關系到農(nóng)用機器人執(zhí)行任務的成敗[1-3]。
標定方法的精度取決于所采用的相機數(shù)學模型,一些簡單方法忽略了鏡頭的失真,相機的參數(shù)可以輕易地計算出來。直接線性法(DLT)由ABDEL-AZIZ等[4]提出,它用一個3×3轉換矩陣描述由世界坐標系向像平面的透視變換。但對于高精度的應用場合,必須考慮鏡頭失真,建立非線性的投射模型[5-7]??紤]鏡頭失真的模型分為顯式模型和隱式模型。
顯式相機模型采用具有特定物理意義的參數(shù)描述相機的光學特性。在機器視覺中,常用的相機模型都是從針孔模型引申而來,為了補償鏡頭失真可再引入附加參數(shù)。TSAI[8]的標定模型中通過引入2階徑向失真補償來平衡線性投射和真實鏡頭投射的差異。ZHANG[9]引入了3階、5階的徑向失真補償。以上這些方法一般由幾個參數(shù)即可對現(xiàn)有的相機進行有效標定[10]。SHEN等[11]應用傳統(tǒng)的直接線性變換法(DLT)和非線性優(yōu)化的方法,將相機拍攝的圖像分為中心區(qū)域和邊緣區(qū)域,并分別在這些區(qū)域單獨標定相機。YAO等[12]運用BP神經(jīng)網(wǎng)絡的非線性優(yōu)勢,將文獻[9]的算法推進到基因算法范疇。LIU等[13]利用3D球的影像建立相機的投影約束,求解了相機參數(shù)。LIU等[14]用純二次曲線的影像作為媒介,獲得相機參數(shù)。在機器視覺領域,研究者開發(fā)出一些針對多個相機的聯(lián)合標定方法[15-17]。
然而,在顯式模型標定中,必須預知相機的一些幾何或光學特性才能獲得較為精確的結果。雖然在一些應用中獲得了較高的精度,但那只是局限于特定的視覺系統(tǒng),且不足以補償圖像的局部失真和非常規(guī)失真。
隱式模型的標定方法將相機定義為一個“黑盒子”,試圖將相機的輸入、輸出更直接地聯(lián)系起來,本質(zhì)上是建立世界坐標系物點傳來的投射線和相機像平面上二維像素點之間的聯(lián)系。因不需了解相機的預先知識,又不需計算其物理及光學參數(shù),使得標定方法更為通用。GROSSBERG等[18]提出了一種通用模型,它給每一個像素賦予光學參數(shù),可確定從像平面發(fā)出的射線位置和方向。徐贏等[19]提出一種應對大視場的非參數(shù)標定法,使相機沿橫向以一定角度步進拍攝一條直線,相機轉動90°后再依上述方法步進,得到了一個變形的直線網(wǎng)格圖像,以此建立像素與物點的映射關系。HALL等[20]提出的三維標定模型包括兩種方法,第2種方法直接采用多項式映射建立實物空間的三維表示。SRIKUMAR等[21]提出一種通用的相機標定模型,用相機拍攝3個相對位置未知的標定網(wǎng)格,找出對應于某一個像素點的3個標定網(wǎng)格點,基于這3個網(wǎng)格點必然在同一直線上建立線性約束,求解標定網(wǎng)格的相對位置,通過計算這3個網(wǎng)格點的視線而完成標定。雙平面法[22]應用忽略失真的隱式相機模型,該方法在相機的可見范圍內(nèi)放置2個假想平面,雙平面法的2個平面都是Z坐標為常數(shù)的平面,停留在直線的映射層面。由于線性映射限制了它的精度,GREMBAN等[23]將模型擴展為應用平方變換或三角形法處理失真信息。
CHAMPLEBOUX等[24-25]提出了幾個平面的B樣條法(NPBS),實質(zhì)上是雙平面法的擴展。該方法把兩個平面擴充為幾個平面,以最小化一個線性約束為目標,一方面擬合數(shù)據(jù)點,另一方面平滑曲面。由于B樣條曲面的優(yōu)越特性,理論上可補償任何連續(xù)失真。該方法只關注投射線與像素點之間的聯(lián)系,不限定光學中心的唯一性。CHAMPLEBOUX模型采用固定階數(shù)的B樣條曲面,編程較為方便,但限制了其靈活性[26]。
本文提出可變階數(shù)NURBS曲面的相機標定模型,根據(jù)應用場合的精度要求,階數(shù)可調(diào),并且可在不同的像平面區(qū)域應用不同階數(shù)的NURBS曲面模型,以使得該模型適應性更強,而不需要過多增加求解難度和計算量。
采用NURBS曲面代替雙平面法中的平面。NURBS曲面的通用方程表達式為[27-28]
(1)
Q(u,v)表示自由曲面的空間坐標,是參數(shù)u、v的函數(shù),式(1)右側展開后是關于u和v的有理多項式。本模型中u和v的冪次相同,稱為模型次數(shù),冪次加1即模型階數(shù)。對于NURBS曲面,控制頂點數(shù)等于u向階數(shù)和v向階數(shù)的乘積。通常根據(jù)對模型精度的要求確定控制頂點數(shù),即確定模型階數(shù)??刂祈旤c越多,模型階數(shù)越高,精度也越高,但計算量隨階數(shù)上升而激增。本文所述m階模型代表自由曲面在u向和v向具有m×m個控制頂點陣列。
Pi,j為控制頂點列向量(x,y,z)T,m×m個控制頂點的坐標決定了自由曲面形狀。wi,j為權重,其值越大,自由曲面越靠近控制頂點。Bi,k(u)和Bj,l(v)分別是u向k次和v向l次的B樣條基函數(shù),它們的確定依賴于節(jié)點矢量。
參數(shù)u和v的定義域均為0~1。對于分辨率為800像素×600像素的相機,u向像素索引數(shù)為1~800,規(guī)范化后u在節(jié)點處可取值0,1/800,2/800,…,799/800,1;同理v在節(jié)點處可取值0,1/600,2/600,…,599/600,1;也是確定節(jié)點矢量的依據(jù)。本標定模型中u參數(shù)軸的方向與x軸相同(不要求平行),v參數(shù)軸的方向與y軸相同。通過式(1)建立相機像平面內(nèi)像素點和拍攝到的空間實物點的映射關系。
u向和v向的節(jié)點矢量分別為
U=[0=u0=u1=…=uk,uk+1,…,ur-k-1,ur-k=ur-k+1=…=ur=1]
(2)
V=[0=v0=v1=…=vl,vl+1,…,vs-l-1,vs-l=vs-l+1=…=vs=1]
(3)
u向和v向的節(jié)點矢量節(jié)點數(shù)分別為r+1和s+1,其中r=n+k+1,s=m+l+1。
節(jié)點矢量確定后,基函數(shù)計算式為
(4)
兩點可確定一條射線,由NURBS曲面的單值性可知,對任意像素點(u,v),至少需要2個NURBS曲面才能確定世界坐標系中的對應投射線。對標定網(wǎng)格拍攝一幅圖像,根據(jù)圖像提取的信息可建立一個NURBS曲面,它代表像平面的(u,v)坐標向世界坐標系空間點(x,y,z)的映射。為獲得NURBS曲面,首先需確定NURBS曲面多邊形網(wǎng)格的控制頂點Pi,j。由于基函數(shù)是標量,坐標值可分別處理。Pi,j頂點的x坐標可用線性最小二乘估計求得[29-30],即
(5)
(up,vp)——對應像素點的位置
因式(5)中的代價函數(shù)無光順約束,所以計算是線性的,擬合曲面可以盡可能地靠近數(shù)據(jù)點。為了求解代價函數(shù),需要足夠的數(shù)據(jù)支撐。每個控制頂點的控制區(qū)域內(nèi)至少注冊1個數(shù)據(jù)點。
當建立至少2個NURBS曲面后,像平面上(u,v)點所對應的投射線可由投射線與每個曲面的交點(x,y,z)確定。式(5)的最小二乘估算需要迭代算法,相機模型建模時可應用多于2個NURBS曲面;將多出的曲面數(shù)據(jù)結合前述2個確定投射線的曲面數(shù)據(jù)投入運算,可以加速運算的收斂過程,減輕在線計算的負擔。NURBS曲面上點的坐標是控制頂點坐標值的線性組合;為了生成一個無誤差的相機模型,多個不同曲面的對應控制頂點應該線性相關。因此,可以由不同曲面上對應的控制頂點擬合投射線,這些投射線與2個NURBS曲面相交。為避免坐標之間的比例舍入誤差,投射線用參數(shù)方程表示為
(6)
應用線性最小二乘法,由對應的控制頂點擬合出投射線方程,將投射線用于誤差分析和模型階數(shù)的切換。由此可建立一個雙NURBS曲面模型,該模型唯一地確定了像平面上的像素點和投射線之間的關系,示意圖見圖1。
圖1 雙NURBS曲面模型Fig.1 Double NURBS surface calibration model
圖1給出了5個NURBS曲面,分別對應于表1中5組數(shù)據(jù)(索引號是1、3、4、5、7)。這些曲面除Z坐標不同導致采樣點數(shù)不同外,沒有差別。選取索引號為3和5的兩個曲面作為模型的雙NURBS曲面,剩余的擬合曲面提供冗余的數(shù)據(jù)支持。
表1 采集圖像數(shù)據(jù)Tab.1 Data acquisition of captured images
實驗基本設備有:直線滑軌、平面的標定網(wǎng)格和機器人夾持裝置。夾持裝置令機器人歸“零位”,使標定實驗具有可重復性。
實驗采用一臺SEIKO工業(yè)級攝像機,分辨率800像素×600像素。世界坐標系固定于滑軌基座,使Zw軸平行于直線滑軌,見圖2。在A0圖紙上打印40 mm×40 mm的網(wǎng)格,將其貼在繪圖板,繪圖板垂直固定于直線滑軌,可沿Zw軸做500~1 300 mm范圍的直線運動。在相機標定中,借助標定網(wǎng)格可同時獲取空間點的陣列,從而提高工作效率。
圖2 標定網(wǎng)格、滑軌和世界坐標系Fig.2 Calibration grid,slide way and world frame
實驗共采集7個不同滑動位置的標定網(wǎng)格圖像,7個不同位置網(wǎng)格Z坐標見表1。對每幅圖像進行交點提取,網(wǎng)格交點即檢測數(shù)據(jù)點,網(wǎng)格交點提取見圖3。獲取的數(shù)據(jù)點集合見表1。機器人的相機面對Z軸方向放置;當標定網(wǎng)格Z坐標越大時,網(wǎng)格將越靠近鏡頭;使得相機在網(wǎng)格上的視野變小,捕獲的數(shù)據(jù)點變少。
圖3 圖像的交叉點檢測圖(以方塊表示)Fig.3 Crossover points detection of image (cubes)
對表1給出的7幅圖像應用不同階數(shù)的NURBS曲面模型進行擬合,以便獲得最佳的階數(shù)搭配。計算借助便攜式計算機,處理器是Intel Core i7四核CPU@1.8 GHz 1.99 GHz,內(nèi)存8 GB,64位操作系統(tǒng),編程環(huán)境是Matlab 2018a。表2給出對采集的7幅圖像進行4、5、6階NURBS曲面擬合的時間對比。
索引號為2、6的圖像用于誤差分析。其他5個NURBS曲面,可以擬合對應于控制頂點的投射線。將這些投射線與預留的圖像2、6曲面相交,就可以直接將相機模型求取的結果與圖像2、6在標定板上實際測量值相比較,求得擬合誤差。圖像2和圖像6不同階數(shù)擬合誤差見表3。
表2 不同階數(shù)NURBS曲面擬合耗時Tab.2 Time consuming in NURBS surface fitting with different orders
表3 不同階數(shù)曲面的擬合誤差Tab.3 Fitting error of different surface orders
由表3可知,6階模型誤差最小,但運算量太大。4階與5階模型具有較小的擬合誤差。對比4階與5階模型可發(fā)現(xiàn),5階模型較4階模型的精度提高有限,而4階模型較3階模型的精度提高較大。經(jīng)以上分析可知采用3階與4階NURBS曲面建立相機模型可達到精度和計算投入的優(yōu)化。
本實驗中,圖像1、3、4、5、7用于3階與4階NURBS曲面的擬合。得到2個(3階、4階)雙NURBS曲面的相機模型,模型、投射線和像平面的對應關系見圖4。
圖4 像平面和雙NURBS曲面的相機模型Fig.4 Image plane and double NURBS surface camera model
每一次曲面擬合都存在誤差,表4給出了圖像1、3、4、5、7的4階模型誤差,而3階模型誤差略大。
表4 曲面擬合誤差Tab.4 Surface fitting error
2.3.1雙NURBS模型標定誤差
在模型完全確立后進行標定誤差分析。標定誤差分析包含模型切換過程,切換方法見2.4節(jié)。如果把雙NURBS曲面相機模型的2個擬合曲面分別設置于被測的標定板位置2和6,標定的誤差等于真實測量的標定網(wǎng)格坐標減去由圖像2(或6)中抽取的交叉點經(jīng)標定模型反求得到的坐標值。
將標定誤差定義為向量,得誤差向量如圖5、6所示;為了顯示清晰,誤差向量的幅值擴大了30倍。誤差向量模(或稱為標量誤差)見表5。
圖5 模擴大了30倍的標定誤差向量(圖像2)Fig.5 Calibration error vectors of image 2 (30 times magnitude)
圖6 模擴大了30倍的標定誤差向量(圖像6)Fig.6 Calibration error vectors of image 6 (30 times magnitude)
標定所產(chǎn)生的誤差有多種原因:①不同曲面階數(shù)的選擇會影響標定精度。②相機的分辨率和交叉點提取的精度也會影響標定精度。如圖3所示,在4個角處圖像出現(xiàn)散焦,使提取的交叉點位置精度下降,會給圖像處理帶來困難。③必須指出數(shù)據(jù)采集的精度和可靠性嚴重影響相機標定模型的質(zhì)量。標定板的平面度、標定板與滑軌的垂直度、網(wǎng)格的打印精度、空間點位的測量精度等都會影響標定結果。其他因素還包括用于實驗的滑軌精度和標定板固定的牢固程度等。在7個測量位置的運動過程中,標定板可能出現(xiàn)偏移狀況。
表5 標定誤差Tab.5 List of calibration error
可見,精確的標定模型需要高精度的滑軌和更精密的標定板。經(jīng)實驗數(shù)據(jù)的誤差分析,在世界坐標系Z坐標550~1 100 mm的范圍內(nèi),標定平均誤差不大于0.89 mm。
2.3.2與傳統(tǒng)標定方法精度比較
標定誤差嚴重地依賴于標定所用的設備精度和采樣數(shù)據(jù)的精度,不同的評估方法也影響標定誤差。應把標定模型置于同等實驗條件下進行比較。
由于數(shù)學方法的相似性,本文提出的標定方法可轉換為CHAMPLEBOUX的NPBS模型。以圖像6的采樣數(shù)據(jù)作為實驗樣本,按2.3.1節(jié)的分析方法,對NPBS模型進行誤差計算,得到標定誤差見表6,同時給出雙NURBS法的誤差??芍疚奶岢龅臉硕ǚㄔ?階和4階NURBS曲面方程之間切換,已超過了NPBS模型的精度。而CHAMPLEBOUX等[24]在實驗中已經(jīng)證明,NPBS模型在標定精度上明顯優(yōu)于雙平面法。
表6 NPBS法與雙NURBS曲面法的誤差對比Tab.6 Calibration error of NPBS and double NURBS
NPBS方法在CHAMPLEBOUX的實驗條件下精度會好一些,這也證明了實驗條件對模型誤差評估的影響。
由誤差分析可知,采集圖像的中心區(qū)域偏差較小,用較低階數(shù)的標定模型即可滿足應用精度要求;而在邊角處偏差較大,需要用較高階數(shù)的標定模型。本算法中預先建立兩個標定模型,分別是3階與4階NURBS曲面的相機標定模型。先用3階模型,按2.3.1節(jié)的方法對圖像2和圖像6進行擬合誤差計算,以提供模型切換依據(jù)。
將像平面按參數(shù)(u,v)的一定間距均勻劃分,劃分示意圖如圖7所示。切換依據(jù)是:對每個區(qū)塊內(nèi)散落的交點誤差向量求取模平均值。再用一個閾值將其二值化,即可得到切換模型的依據(jù)。圖7中,區(qū)塊中的數(shù)字表示該區(qū)塊內(nèi)模型的階數(shù)。由于圖像處理是以像平面坐標(u,v)進行索引,使得模型切換快捷方便。本實驗只進行了兩模型切換。規(guī)定多個閾值時可進行多模型間的切換。
圖7 NURBS曲面標定模型的階數(shù)切換示意圖Fig.7 Sketch of order matching for NURBS surface calibration model
圖7中,虛線是以像平面的參數(shù)(u,v)為依據(jù)均勻分區(qū)的示意圖。分區(qū)的疏密程度取決于標定網(wǎng)格。用于多模型切換時,需增加網(wǎng)格密度,隨之造成計算量的增加。事實上,相機鏡頭的失真是穩(wěn)定的,分區(qū)計算只需標定時進行。對于圖4中的雙NURBS曲面模型,在2個NURBS曲面上的分區(qū)圖可能會不同。
圖像校正是驗證標定模型有效性最直觀的方法,圖像校正體現(xiàn)了視覺系統(tǒng)的測量精度。利用建立的相機模型把原來拍攝的圖像2(沒有參加建模)沿著視線反投射到任何表面都會形成一幅新的目標圖像。如果投射到一個平面上,目標圖像就會由于模型的補償作用而消除相機造成的失真。
實驗中,圖像2被反投影到它原來的標定平面上,產(chǎn)生一個校正的目標圖像,見圖8。理想相機沒有失真,即現(xiàn)實中的直線投射到像平面后應該還是直線。圖2中的標定板上是均勻、正交的直線網(wǎng)格;
圖8a圖像是相機拍攝獲得,出現(xiàn)了明顯的桶形失真。圖8b圖像是經(jīng)過標定模型校正的結果,直觀上看所有彎曲的線都變成了直線,圖像的網(wǎng)格更均勻,證明了標定模型是正確、有效的。
圖8 雙NURBS曲面相機模型對圖像2的校正結果Fig.8 Rectifying result of image 2 using double NURBS surface camera model
(1)提出了可變階數(shù)NURBS曲面的相機標定模型。該模型不需要預知相機的光學特性,直接關聯(lián)像平面上的點和世界坐標系中的投射線,可以隱式地修正鏡頭的失真。該模型具有分區(qū)選取NURBS曲面階數(shù)的優(yōu)點,優(yōu)選曲面階數(shù)后,可在像平面的不同區(qū)域應用不同階數(shù)的NURBS曲面模型,達到運算量與精度的綜合優(yōu)化,使模型適應性更強。提出的可變階數(shù)標定模型具有實際應用價值,通過適當匹配模型的切換階數(shù),可提升標定精度。
(2)采用雙3階和雙4階NURBS曲面的混合模型時,已經(jīng)超過了NPBS方法的精度。在模型建立過程中,NPBS方法簡潔,在視覺系統(tǒng)實際應用中,本文方法速度較快。
(3)雖然NURBS相機模型可獲得較高的精度,但是與線性相機模型相比,NURBS模型在運算量方面無優(yōu)勢。如果對計算速度要求很高,可以預先計算出足夠的采樣點對應投射線,以滿足在線計算NURBS曲面的要求。標定精度依賴于測量的精度以及選擇適當?shù)那骐A數(shù)。實驗表明,提出的標定模型能夠滿足農(nóng)用機器人的應用精度要求。