胡得林 胡 勇* 于 洋 何朋朋 俞 峰
(武漢理工大學船海與能源動力工程學院1) 武漢 430063) (江南造船(集團)有限責任公司2) 上海 201913)
船體曲板的制造是船舶建造中的重要環(huán)節(jié),目前船體曲板的加工主要依賴水火彎板工藝和機械冷沖壓工藝[1-2].船體曲板成型后,需要對曲板進行測量,用以計算回彈補償量和確定制造精度.傳統(tǒng)的接觸式船體曲板測量依靠人工樣箱,測量精度低,且測量結果不能量化.為此,需要對船體曲板測量方法進行改進,以滿足大尺寸船體曲板高精度測量要求,實現(xiàn)大尺寸船體曲板的自動化測量.
隨著計算機視覺和攝影技術的發(fā)展,基于計算機視覺的攝影測量技術在船舶制造領域得到了廣泛的應用.Goldan等[3]利用近景攝影測量技術與CAD/CAM系統(tǒng)結合,測量在建船體曲板,提高了測量效率和精度,并且適合大尺寸船體曲板的測量,但該方法需要輔助靶標,對拍攝要求較高.Heo等[4]將多條結構光投影到船體曲板表面,實現(xiàn)了多結構光同步測量,該方法測量精度和效率都很高,但只適合小尺寸船體曲板的測量.Paoli等[5]將基于面結構光的雙目立體視覺傳感器安裝在機械臂上,實現(xiàn)了對船體表面的全方位測量,該方法測量范圍大、自動化程度高,但測量設備昂貴.王振興[6]利用基于結構光的雙目立體視覺技術對船體曲板進行在位測量,實現(xiàn)了加工過程中船體曲板的自反饋檢測,但該方法測量場景偏小.Deng等[7]用三維激光掃描儀掃描船體曲板,得到高精度點云,直接獲取船體曲板三維數據,但測量效率較低.考慮到船體曲板具有線性復雜、尺寸較大的特點,因此需要研究出一種能適應大尺寸測量且測量效率高的測量方法.
文中提出了基于計算機視覺的大尺寸船體曲板攝影測量方法,通過拍攝目標物體,將獲取的數字圖像通過算法進行特征提取與匹配,還原特征的三維坐標,得到目標物體的三維點云數據.相比于傳統(tǒng)攝影測量方法,投入成本低,測量視場大,可完成大尺寸船體曲板的攝影測量,且測量精度小于1mm.文中整體算法框架見圖1.
圖1 本文算法框架
攝影測量是基于立體像對的前方交會視覺成像模型,利用立體像對上的同名像點,得到兩條同名射線在空間的相交點,從而計算出目標點的三維坐標.圖2為雙目攝影測量的基本原理圖,Ol、Or為左右攝像機的光學中心.設世界坐系下上任意一點P,經過攝像機成像,在左右攝像機的成像平面Il、Ir分別對應有Pl(xl,yl)、Pr(xr,yr)兩個同名像點.左右攝像機的光軸Olzl、Orzr互相平行,f為攝像機焦距,PlPr滿足極線約束,d=Δl-Δr為視差.
圖2 雙目攝影測量原理圖
根據視差原理,P點在攝像機坐標系下可以表示為
(1)
由式(1)可知,在滿足極線約束的情況下,只要知道P點在圖像中的位置,并知兩臺攝像機的內參數和外參數,就可以得到P點在攝像機坐標系下的位置,進而通過坐標轉換還原出P點的實際位置.攝像機內外參數的獲取必須通過實驗和計算求解,這個過程就是攝像機標定.P點在圖像坐標系下的位置,則需要通過特征匹配算法得到.
攝像機成像的基本數學模型描述了一個物理過程:物理世界中的一點P,經過相機成像呈現(xiàn)在圖像上的像素坐標為(u,v),見圖3.點P經過坐標轉換在圖像坐標系Oi-xy下的坐標為(x,y);經過透視變換在攝像機坐標系Oc-xcyczc下的坐標為(xc,yc,zc);通過投影變換在世界坐標系Ow-xwywzw下的坐標為(xw,yw,zw).
圖3 攝像機成像模型
在不考慮攝像機光學畸變的情況下,設Oi在像素坐標系Op-uv下的坐標為(ui,vi),由透視變換理論和投影變換理論可以推導出物理世界任意一點P(xw,yw,zw)經過攝像機成像最終投影為攝像機成像平面上一點Pi(x,y)(其像素坐標為(u,v)),其數學模型為
(2)
式中:dx、dy分別為一個像素點在x、y方向上的單位物理尺寸;s為一比例因子,f為攝像機焦距;I為攝像機外參矩陣;T和R分別為平移向量和旋轉矩陣,構成攝像機外參矩陣E.
由于制造工藝等因素影響,攝像機成像過程會存在光學畸變.畸變會導致P點在攝像機圖像坐標系下的位置與理想狀態(tài)下的位置存在偏差,見圖3的Pr(xr,yr).由相機的畸變校正模型,兩個位置之間的計算關系為
(3)
由式(2)~(3)可知:為確定物理空間物體表面某點的三維幾何位置與其在攝像機成像平面上對應點之間的關系,必須建立起攝像機成像的幾何數學模型,這些數學模型的參數就是攝像機的參數.本文采用張正友標定算法,具體步驟如下.
步驟1打印標定圖案貼到一個平面上或者購買標準的標定板,利用標定板的特征點坐標作為已知條件.
步驟2移動平面或者攝像機,并從至少兩個角度拍攝標定板圖像,建立和已知條件的映射.
步驟3在計算機上用算法實現(xiàn)對圖像中特征點的亞像素級檢測.
步驟4在不考慮攝像機畸變的情況下,估計出內參矩陣和全部外參.
步驟5考慮攝像機畸變,通過最小二乘法計算畸變參數.
步驟6通過收斂函數改進全部參數,使得誤差最小.
目標物體的高精度攝影測量需要高質量的點云數據,這些數據來源于立體匹配.基于特征點的立體匹配具有良好的尺度不變性和較快的匹配速度,應用較為成熟.
在特征提取階段,AKAZE算法采用與尺度不變換特征(scale invariant feature transform, SIFT)算法類似的模型,即在同一金字塔層內的不同尺度空間的一組圖像中尋找最大特征點.不同的是,AKAZE算法采用的是非線性擴散濾波來構建尺度空間,從而保留圖像更多的邊緣特征.在特征描述子生成階段,采用M-LDB特征描述算法[8]來生成二進制描述子,使得最終得到的特征具有旋轉不變性,提高了魯棒性.AKAZE算法的核心步驟[9]如下.
1) 非線性擴散濾波 非線性擴散濾波方法是將圖像亮度L在不同尺度空間上的變化作為熱擴散函數的散度因子,通常采用非線性偏微分方程進行求解,其表達式為
(4)
式中:c(x,y,t)為傳導函數;t為圖像尺度參數;div和的分別表示散度和梯度.
2) 構造非線性尺度空間 AKAZE算法特征的尺度空間構造與SIFT算法類似,都有O組圖像,每組圖像有S個子層級,尺度級別按對數遞增,各個層級采用與原始圖像相同的分辨率,并通過下面的式子與尺度參數σi相對應.
(5)
式中:o∈[0,…,O-1];s∈[0,…,S-1];i∈[0,N-1];N為圖像總數;σ0為圖像初始尺度參數.
綜合式(4)~式(5),對于一副輸入圖像,通過加性算子分裂算法(additive operator splitting,AOS)可以得到非線性尺度空間的所有圖像,圖像高度L的尺度空間表達式為
Li+1=(I+τA(Li))Li
(6)
式中:τ為步長;I為單位矩陣;A(Li)為圖像在維度上的傳導矩陣.
3) 特征點檢測 圖像的非線性尺度空間構造后,AKAZE算法通過尋找不同尺度歸一化后各像素點對應的Hessian矩陣局部極大值,來實現(xiàn)特征點的檢測.比較Hessian矩陣值與同層八個領域點,以及上下鄰層18個像素點的響應值大小,得到的極小值點就是圖像在該尺度下的特征點,見圖4.二維圖像中Hessian矩陣表達式為
(7)
圖4 特征點檢測
4) M-LDB描述子 AKAZE算法根據特征點的局部圖像結構來確定其主方向,保證了圖像的旋轉不變性.圖5為特征點主方向,特征點的尺度參數為σi,則以6σi為半徑搜索,以60°扇形為一個滑動窗口,按照近大遠小(即離特征點越近,貢獻值越大,反之則越小)的原則,對像素點進行向量加權疊加,向量之和最大的向量方向即為特征點主方向.
圖5 特征點主方向
確定了特征點的主方向,AKAZE算法采用M-LDB描述子對特征點進行描述.對網格像素進行尺度自適應,比例采樣后以平均值來近似劃分網格像素,進行尺度采樣的描述子對尺度變化具有更好的魯棒性[10].
當兩幅圖像的特征點和特征向量生成后,采用KNN算法對AKAZE特征點的描述子進行匹配,再使用RANSAC算法進行誤匹配點消除,得到理想的特征匹配.
1) KNN特征匹配算法 KNN算法采用測量不同特征向量之間的歐式距離進行相似判斷度量,因此具有精度高、對異常值不敏感等優(yōu)點.文中取K=2,即對于特征點p,在另一幅圖像中搜索匹配點q、q的最鄰近點q1和q的次鄰近點q2.設p與q1的歐式距離為d1,與q2的歐式距離為d2.當遠d1小于d2時,則認為q為有效匹配點;當d1與d2接近時,設置一個閾值范圍,若d1/d2在閾值范圍內,則認為q為有效匹配點,否則不是有效匹配點.實驗表明,閾值范圍為0.6~0.8時,算法效果最好.
2) RANSAC算法 采用KNN算法進行粗匹配會后出現(xiàn)特征點的誤匹配,采用RANSAC算法進行匹配優(yōu)化.RANSAC算法的原理是依據迭代算法從參考模型中選取樣本集合,然后計算所有樣本與該模型的偏差,再使用一個預先設定好的閾值與偏差比較,當偏差小于閾值時,該樣本點屬于模型內點,否則屬于模型外點,迭代這一過程,最終找出性能更加優(yōu)異的參數模型,實現(xiàn)精確匹配.
圖像的特征匹配只能獲取稀疏的點云,無法完成物體的三維重建.準稠密匹配算法是將特征匹配得到的稀疏匹配點作為種子點集合,再次利用RANSAC算法設置閾值從集合中得到種子匹配點,這些種子匹配點在鄰域內進行擴散來獲取更多新匹配點,最終得到稠密匹配結果.利用視差法對所有匹配點進行計算,還原出匹配點在世界坐標系下的三維坐標,得到目標物體的點云數據,實現(xiàn)三維重建.此部分原理在1節(jié)已經闡述,這里不再贅述.
按照上述攝像機標定步驟,在位置1和位置2分別對標定板進行拍攝.標定板規(guī)格為6×9,單格尺寸為40 mm.為保證拍攝圖像最清晰,先使用自動對焦模式,使得圖像最清晰.然后將攝像機定焦,通過移動標定板,在不同角度一共拍攝14組照片,圖像分辨率為2 736×1 842,標定板棋盤格見圖6.
圖6 標定板
基于OpenCV庫在Visual Studio 2017上實現(xiàn)張正友標定法,對攝像機進行標定.標定過程分為兩步,第一步為對兩個位置的攝像機分別進行單目標定,得到攝像機的內參數,見表1.第二步進行攝像機雙目標定,得到攝像機的外參數,即旋轉矩陣R和平移向量T.
表1 攝像機標定參數
旋轉矩陣R和平移向量T的標定數值為
T=[-848.693 1 1 892.277 6 216.282 1]
實驗表明,本標定算法可行、有效,重投影誤差RMS達到0.05個像素左右,算法具有較高的標定精度,可以進行下一步攝影測量實驗.
為了從二維圖像中獲得被測物體特征的三維坐標,基于結構光的雙目攝影測量系統(tǒng)至少需要從不同位置獲取包含物體特征點的兩幅圖像.事實上,獲取兩幅圖像并不一定需要兩個攝像機,由一個攝像機通過運動,在不同位置觀測同一個靜止的物體,都可以滿足要求.采用單攝像機,降低了系統(tǒng)的成本,根據攝像機的移動的位置的不同,很容易構成不同基線距的雙目視覺測量系統(tǒng),具有很大的靈活性.為增加船體曲板表面的特征點,用投影儀投射結構光,本次投射的結構光為棋盤格,見圖7.使用標定好的攝像機在位置1和位置2分別對船體曲板進行拍攝.
圖7 攝影測量系統(tǒng)
攝像機位置1和攝像機位置2為相對固定,保證船體曲板在視場中即可,本次實驗中B=1 000 mm;攝像機與船體曲板的距離值為r=1 500 mm;投影與船體曲板的距離不設值,根據船體曲板大小,保證投射的結構光完全覆蓋船體曲板,并且投影到船體曲板上顯示最清晰.此次拍攝的船體曲板尺寸大約為1 500 mm×2 000 mm,用攝像機分別在位置1和位置2拍攝船體曲板,圖像的分辨率為2 736×1 824,見圖8a).圖像采集完成之后,在Visual Studio 2017上進行圖像處理,見圖8b)~d).
圖8 船體曲板攝影測量結果
標準塊是邊長為100 mm的標準立方體,實際尺寸由游標卡尺測得,精度為±0.02 mm.放在與船體曲板同一個視場中進行測量.用標定后的相機對標準塊進行拍攝,標準塊模型圖、實物圖見圖9a).按照文中的攝影測量方法對標準塊進行測量,得到標準塊的點云數據,見圖9b).
圖9 標準塊測量
從圖9中標準塊的點云數據中采樣a、b、c、d點的坐標,見表2.并計算ab、bc、bd的距離,與標準塊的實際邊長比較,計算其絕對誤差,見表3,以此來分析本文船體曲板攝影測量的精度.
表2 標準塊角點坐標 單位:mm
表3 標準塊邊長誤差 單位:mm
由表2~3可知,測量結果的誤差在1 mm以內,測量精度滿足船舶行業(yè)工程制造的精度要求.
文中針對大尺寸船體曲板測量提出了一種非接觸式基于計算機視覺的船體曲板攝影測量方法,搭建了攝影測量系統(tǒng)進行船體曲板的測量實驗.利用張正友標定法對攝像機進行了標定.在圖像處理方面,利用AKAZE算法進行船體曲板的特征點提取;利用KNN機器學習算法與RANSAC算法相結合進行特征匹配算法;用獲得匹配點對,基于特征匹配點進行匹配擴散,獲得稠密匹配,實現(xiàn)對船體曲板的三維重建. 試驗結果顯示,在測量場景不小于3 000 mm×3 000 mm,船體曲板尺寸為1 500 mm×2 000 mm范圍內,攝影測量誤差在1 mm以內,滿足船舶制造的精度要求.在實驗過程中發(fā)現(xiàn)了在結構光投影到目標物體顯示有重影處,特征提取和匹配的誤差相對較大,為了進一步提高測量精度,后續(xù)工作將圍繞如何將這類點進行精確提取與匹配展開.