徐子恒,夏仁波,趙吉賓,付生鵬,張?zhí)煊?,陳月?/p>
(1.中國科學院a.沈陽自動化研究所機器人學國家重點實驗室;b.機器人與智能制造創(chuàng)新研究院,沈陽 110016;2.中國科學院大學,北京 100049)
相較于傳統(tǒng)的接觸式測量方法,結(jié)構(gòu)光因其主動受控、精度高、非接觸等優(yōu)點,廣泛應用于制造檢測、逆向研發(fā)甚至醫(yī)療衛(wèi)生等領(lǐng)域[1-3]。在結(jié)構(gòu)光系統(tǒng)中,尤其是單相機單投影儀系統(tǒng)中,投影儀的標定精度往往影響系統(tǒng)精度,因為投影儀無法直接攝影,標定流程不僅更為復雜,標定精度也遠低于相機,所以提高投影儀的標定精度是提高系統(tǒng)重建精度的關(guān)鍵,投影儀的標定參數(shù)主要包括設(shè)備內(nèi)參、相對外參以及鏡頭畸變。
主流投影儀標定方法主要分3類:
(1)反相機法[4-8]:借助已標定的相機內(nèi)外參數(shù),利用投射點在相機圖像坐標系上的坐標,計算其對應的三維空間坐標,但該方法會引入相機的標定誤差,導致投影儀標定誤差較大。
(2)幾何原理法[9-11]:首先精確已知投影圖像的圖像坐標,然后投影特定圖案到標定物上,利用幾何關(guān)系估算出投影點的世界坐標,此方法需要精密導軌輔助以獲得需要的約束關(guān)系,比較有局限性。
(3)偽相機法[12-15]:使用匹配手段建立投影儀像平面和相機像平面之間的對應關(guān)系,利用映射關(guān)系實現(xiàn)投影儀的標定,該方法不會引入相機誤差,標定精度高。但相移映射法解相難以避免高頻噪聲,圓環(huán)映射缺少灰度級,棋盤格不具備旋轉(zhuǎn)不變性,相比之下圓模式的平面標靶受環(huán)境影響較小,恢復精度高,其中Halcon標定板系列最為廉價易得。
為了解決反相機投影儀的標定精度低,幾何原理法標定成本高的問題,本文在偽相機法的基礎(chǔ)上提出一種基于Halcon標定板映射的標定算法。先對標定板進行橫向縱向編碼,利用圓點靶標的性質(zhì)進行映射成像;對圖像進行圖像降噪與對比度增強等預處理后,根據(jù)圖像特征進行位置、面積、顏色過濾,分割出邊框與圓點陣列;隨后通過圖像識別以及邏輯運算判斷邊框方向并對亞像素橢圓中心排序;最后進行透視變換正視糾正投影帶來的圓心誤差。實驗證明本方法標定簡單,魯棒性強,標定精度高,標志點識別方法也可標定相機,使程序撰寫更簡化。
投影儀的光路和相機相反,由于光路可逆也可以將投影儀看作理想針孔模型,如圖1所示。
圖1 結(jié)構(gòu)光系統(tǒng)示意圖
(1)
單應性矩陣H為:
(2)
式中,s為比例系數(shù);M為內(nèi)參矩陣;fx=f/dx;fy=f/dy;f為投影儀的焦距;dx、dy為x、y的像素間距離;cx、cy為像素平面的中心坐標;R、T為投影儀坐標系到世界坐標系的旋轉(zhuǎn)平移矩陣。
由于鏡片的制造誤差,這里引入非線性畸變模型校正,考慮切向和徑向畸變的情況。
(3)
(4)
正弦碼有灰度漸變,很容易受到反光污染,二值化編碼圖案只有開關(guān)狀態(tài),可以顯著提高解碼魯棒性,格雷碼編碼方案使每個條紋的編碼與前后位的編碼均有不同,可進一步減少錯誤譯碼的數(shù)量級。在位深解碼相同的情況下,2n分辨率需要n的位深解碼,根據(jù)奈奎斯特采樣定理—編碼的最大有效分辨率為最小的黑白間距的2倍。格雷碼的最小間隔為2像素,如圖2a所示,而長程格雷碼最大最小條紋在n=11時有7像素的最小寬度,該特性可以顯著提高信噪比,如圖2b所示。數(shù)學中已經(jīng)證明格雷碼有多種排列組合方式,因為排列組合有2n!種,n≤6時,文中已給出,n>6需要采用快速生成算法減少計算量,實驗中結(jié)合正反碼以達到更好的動態(tài)范圍[16-17]。
(a) 格雷碼 (b) 長程格雷碼
圓形陣列標靶采用Halcon標準標定板,氧化鋁覆膜使其基本不會產(chǎn)生鏡面反光,首先拍攝原圖像素灰度為Oij(i=1,2,…,1234;j=1,2,…,1624),對標定板進行橫縱掃描,編碼解碼得到i行j列相機行編碼值Rij以及列編碼值Cij,如圖3b和圖3c所示,由于黑色部分對于光線有著較好的吸收能力,編碼失敗概率較高,于是初始化新圖像灰度為0,IRijCij為新圖像Rij行Cij列的像素灰度,編碼成功(1≤Cij≤1280且1≤Rij≤720)部分保持原灰度Oij,編碼失敗灰度置0,同時對映射圖像進行閉運算以去噪。
(5)
該策略使黑色映射失敗與否都為黑色,實驗檢驗輸出照片清晰銳利,如圖3a所示。
(a) 映射示意圖
(b) 行解碼 (c) 列解碼
映射后需要執(zhí)行標志點的識別與補償算法,程序流程圖如圖4所示。
圖4 識別點標定與補償算法流程圖
首先對映射出的灰度圖進行對比度增強,其次進行基于局部閾值的自適應閾值分割,對二值化圖進行邊緣提取[18],對封閉輪廓計算面積,提取出面積最大的3個輪廓O1,O2,O3,相鄰輪廓面積比小于設(shè)置閾值thresh(SO2/SO1 圖5 邊緣分割示意圖 接下來按照文獻[19]的方法進行標定板橢圓的初步提取,記各標定特征點為Pij(i,j=1,2,…,7)。方向識別過程中,對于下圖的五邊形檢測最小邊時文章內(nèi)使用了K-R法通過梯度檢測五邊形角點,如圖6b所示,實驗中發(fā)現(xiàn)角點處往往因為開閉運算或者標定板傾斜而不夠尖銳,使最短邊的角點檢測魯棒性不足,本算法通過采用累計概率霍夫變換設(shè)置閾值過濾長邊線并在空白圖像中加粗繪制[20],如圖6c所示,使用相減后的圖像質(zhì)心C作為參考,如圖6d所示,距離其最近的點即為P11,其次為P12、P21,P12與P21的區(qū)分依然按照文獻[19]的算法執(zhí)行。 圖6 算法實驗圖 當P11、P21、P12確定后,其余圓的排序需要將所有圓點圍繞P11旋轉(zhuǎn),P11和P12的連線逆時針旋轉(zhuǎn)至水平,第一排按照x值進行排序,其余各排先按照y值排序再按照x值排序,排序完畢后需要利用臨近坐標大小關(guān)系進行有序校驗,如圖7所示。 相對有序需要滿足: (6) 式中,xPij、yPij分別為對應點的坐標,邊界條件需要單獨考慮,滿足該條件即為有序。 同時使用Devernay亞像素邊緣檢測標定板橢圓,通過計算圖像梯度、邊緣點擬合、鏈路聚合以及雙閾值抑制連接,得出邊緣為相鄰幾個梯度模值差值的最大值η,如圖8所示。η可以通過計算梯度方向上相鄰的三點處梯度模值的二次函數(shù)插補求得[21]。 (7) 圖7 臨近點及坐標示意圖 圖8 邊緣梯度模型 由于透視偏差和圖像畸變的存在,當標定平面與圖像平面存在旋轉(zhuǎn)和位移時,標定板上的圓形投影在圖像平面為近似的橢圓,即成像橢圓的中心并非標靶上對應圓心的投影,因此直接使用亞像素識別中心會降低標定精度,如圖9所示。 圖9 成像橢圓與重建橢圓對比 所以檢測完畢后利用P11、P17、P71、P77進行正視變換,例如將P11、P17、P71、P77映射為x,y:(100,100)、(700,100)、(100,700)、(700,700)4個像素,透視正視變換可以部分抵消橢圓投影變換帶來的圓心誤差,反變換識別后圓心即可完成正畸,且由于: (8) 并不引入誤差,式中,PT為3×3的變換矩陣;u,v為圖像原坐標;w=1;x=x′/w′;y=y′/w′;x、y為變換后坐標。由于不同角度不同大小的敏感性不同,可以通過大小變換以及小幅度的旋轉(zhuǎn)變換進一步消除誤差[22],如圖10所示,對變換后的圖片再次利用上述算法進行橢圓識別排序,最后校驗圓心有序性的同時需要校驗P11、P17、P71、P77位置是否位于變換點附近,校驗成功后將識別圓心反變換,滿足校驗的圖即可參與加權(quán)平均進行張氏標定。 圖10 試驗圖 本文程序使用C++語言編寫,集成開發(fā)環(huán)境為Visual Studio2017,結(jié)合OpenCV庫實現(xiàn)圖像處理以及Qt庫進行界面開發(fā),投影儀以及相機均有對應的SDK進行控制。 如圖11所示,該系統(tǒng)主要包含:①投影儀:DLP 3010模組,LED藍光光源,分辨率1280×720;②相機:分辨率1624×1234,幀速30 fps,像素大小4.4 μm;③鏡頭:焦距25 mm,光圈F1.4-F16視場D×H×V=24.9°×20°×15.1°;④標定板:Halcon系列標定模板HC200-10 7×7以及12×9棋盤格標定板;⑤電腦:酷睿I7-7700HQ,16G RAM;⑥標準球:計量陶瓷球R=14.3 mm。 為了驗證本文方法的有效性,第1種方法采用文獻[7]的反相機法;第2種方法采用文獻[12]的方法進行標定;第3種方法采用本采用本文映射方法加夏瑞雪的識別算法標定;第4種方法采用本文算法映射加Halcon標定;第5種算法使用本文算法—映射、識別、補償圓心后標定。 實際操作中第1種方法通過調(diào)整棋盤格位姿37次同時標定相機和投影儀的內(nèi)外參;第2種方法通過相移法映射棋盤格37個位姿并標定;第3種通過本文映射方法獲得37個標定板的圖片通過夏瑞雪算法直接提取圓心導入OpenCV的標定函數(shù)標定;第4種方法通過本文映射方法獲得相同數(shù)目圖片運用Halcon的官方標定工具進行標定;第5種通過本文算法提取圓心補償后使用OpenCV的標定函數(shù)標定,標定板的位置大體一致。 標定的同時統(tǒng)計了各個算法對于不同傾斜程度的Halcon標定板的識別準確率,如圖12所示,可以看到本文算法對于不同傾角的標定板均可正確識別,識別率幾乎100%,自動化水平和準確率幾乎齊平Halcon的官方算法。 圖11 結(jié)構(gòu)光實驗平臺 圖12 標定板識別正確率對比 同時使用上述算法分別標定投影儀和相機的內(nèi)外參后對標準球進行掃描,投影儀標定參數(shù)如表1所示,重投影誤差可以達到0.065像素,相機的重投影誤差可以達到0.045像素,得益于大傾角標定板的識別可能性,外參標定更為準確,球擬合的表面均方根誤差在0.047 mm,如圖13所示,兩項指標均優(yōu)于Halcon官方標定算法,如圖14所示。 表1 投影儀標定參數(shù) 圖13 球擬合實驗 圖14 各算法重投影誤差柱狀圖 本文針對結(jié)構(gòu)光系統(tǒng)中投影儀標定困難標定精度低的問題,提出一種基于圓點標定板的圖像映射和標志點識別與補償算法,統(tǒng)一了相機和投影儀的標定邏輯。實驗結(jié)果顯示該算法對于不同位姿的標定板不僅有著很高的識別準確率,也有著很高的圓點識別精度,相較于目前算法,標定精度和重建精度均有提升。2 標定實驗及結(jié)果分析
3 結(jié)論