劉常杰,李 斌,郭 寅,張云昊,劉 洋
(1.天津大學精密測試技術(shù)及儀器國家重點實驗室,天津300072;2.清華大學 精密儀器系,北京100084)
由激光三角法原理發(fā)展而來的結(jié)構(gòu)光視覺測量方法在目前工業(yè)領(lǐng)域應用愈加廣泛,該方法具有結(jié)構(gòu)簡單、精度較高、可靠性好等優(yōu)點。其中,結(jié)構(gòu)光條紋圖像包含被測量物體表面的3維形貌信息,是被測點3維坐標求取的依據(jù)。光條提取是結(jié)構(gòu)光視覺傳感器最常用的算法,提取精度決定測量精度,提取算法穩(wěn)定性決定測量穩(wěn)定性[1]。
目前常用的激光條紋中心提取算法有極值法、灰度重心法[2]、梯度重心法[3]、方向模板法[4]、互相關(guān)算法[5]、高斯擬合法[6]、曲線擬合法[7]和 Steger方法[8]等。極值法處理速率極快,但精度低,受噪聲影響嚴重?;叶戎匦姆ㄌ幚硭俾士?,易受環(huán)境噪聲影響,常結(jié)合閾值分割進行處理。基于骨架的灰度重心法解決了精度差的缺點,精度能達到亞像素級,但算法復雜、處理時間長,難以滿足實時性的要求。梯度重心法結(jié)合梯度法改進的閾值法和重心法相結(jié)合,具有一定的精度、抗噪性和魯棒性,但難以滿足高精度測量。方向模板法處理速率快,但提取精度不高、易受環(huán)境影響?;ハ嚓P(guān)算法有較高的精度和實時性。高斯擬合法和曲線擬合法精度高,但處理速率較慢,且不適合窄光條提取。在此基礎(chǔ)上提出的自適應窗曲線擬合方法和變邊限高斯擬合方法[9]一定程度上提升了算法速率。Steger方法精度高、穩(wěn)定性高,但運算量很大,很難實現(xiàn)結(jié)構(gòu)光條紋實時性提取。為解決Steger算法運算量大的問題,基于感興趣區(qū)域(region of interest,ROI)的結(jié)構(gòu)光條紋中心混合圖像處理方法和基于脊線跟蹤的結(jié)構(gòu)光條紋中心提取方法先后提出,大大提高了處理速率[10]。
作者在嵌入式Linux系統(tǒng)中采用一種激光條紋快速提取方法,并在自制6410開發(fā)板上進行實驗驗證,采用灰度中心法粗略提出條紋中心,并用承上啟下的搜索方式進行優(yōu)化搜索,然后采用優(yōu)化的Hessian矩陣法對條紋進行精確提取。該提取方法具有精度高、速率快的特點,從而可運用到視覺傳感器中,滿足其實時性和高精度的要求。
本研究應用在視覺測量系統(tǒng)實時引導機器人高精度焊接中,如圖1所示,系統(tǒng)需要實時測量出被測特征與理論位置的差別,并實時引導機器人對軌跡進行微調(diào)整,從而實現(xiàn)高精度焊接。柔性視覺器通過激光條紋信息獲取預焊點3維坐標,并反饋到焊接系統(tǒng),進而調(diào)整焊槍的位姿,對其誤差進行補償,提高焊接質(zhì)量。對于高節(jié)拍的生產(chǎn)線而言,每個機器人需要在1s左右的時間對一個焊點進行精確焊接,而傳感器進行圖像采集到返回給機器人補償信息的過程不超過0.5s。因此要保證視覺測量系統(tǒng)的高精度和實時性,實現(xiàn)對激光條紋中心的快速、精確提取對結(jié)構(gòu)光測量系統(tǒng)的研究具有重要意義。
Fig.1 Welding robot and structured light vision sensor
在已有的柔性傳感器設(shè)計中,現(xiàn)有硬件平臺有個人計算機(personal computer,PC)、微控制單元(micro control unit,MCU)、復雜可編程邏輯器件(complex programmable logic device,CPLD)平臺、現(xiàn)場可編程門陣列(field-programmable gate array,F(xiàn)PGA)平臺、微處理器(advanced risc machines,ARM)平臺等。PC機成本比較高、處理速率一般。MCU+CPLD平臺數(shù)據(jù)處理速率較慢、多任務處理能力較弱、FPGA平臺處理速率快、多任務處理能力較弱、可擴展性不強,適合圖像采集和預處理,高速的、重復的處理過程適合在FPGA中處理。ARM平臺設(shè)計復雜、多任務處理能力強、可擴展性強,適合進行高層處理算法。考慮到本應用中柔性傳感器不僅完成圖像采集和處理工作,還要完成傳感器和機器人的通信工作,因此選用可以使用Linux操作系統(tǒng)、易于開發(fā)和后期擴展、主頻高、處理速率快的ARM11平臺。
由于視覺測量系統(tǒng)實時引導機器人高精度焊接系統(tǒng)在室內(nèi)進行時,外界光強影響變化不大,該系統(tǒng)對精度和速率要求較高。根據(jù)系統(tǒng)要求,本文中提出優(yōu)化Steger快速條紋提取算法,并在自制6410開發(fā)板上進行驗證,該方法可以降低外界噪聲的影響,提高提取速率和精度。
Steger方法是一種高精度、高魯棒性的激光條紋中心提取方法[8],通過高斯卷積算出的Hessian矩陣得到條紋的法線方向,在此方向上進行泰勒展開求取條紋中心亞像素坐標,常用在精密測量中。
Steger方法具有精度高、穩(wěn)定性好的特點,但由于圖像上的所有點都要參與大規(guī)模高斯卷積計算,導致運算量極大,算法處理速率很低,不能滿足實時性要求。因此作者在此方法的基礎(chǔ)上進行優(yōu)化,大大縮短處理時間。本文中算法首先采用中值濾波對圖像進行預處理,然后用灰度重心法粗略提取條紋中心,最后運用Hessian矩陣法對粗提的條紋中心特定處理區(qū)域內(nèi)的條紋進行亞像素中心精確提取。
首先對圖像進行中值濾波[11],對圖像進行預處理,去除大部分由測量環(huán)境和圖像采集過程中等引起的椒鹽噪聲。
2.3.1 灰度重心法粗略提取中心位置 在預處理之后,本文中采用灰度重心法對光條進行粗提取,其原理是計算圖像中光線灰度分布的重心位置,逐行進行計算,采用優(yōu)化的掃描方式分割出條紋區(qū)域,計算出此區(qū)域光條灰度重心的橫坐標作為其光條中心位置,假設(shè)圖像像素大小為M×N,對第j行閾值分割后的連續(xù)m個像素參與計算,把這m個像素中像素的橫坐標設(shè)為xi,相應灰度值為Ii,其中i∈[1,m],計算得出第j行的光條中心橫坐標為Xj,其中j∈[1,N],具體計算公式如下:
2.3.2 掃描方式 在進行灰度重心法粗提取的時候,采用優(yōu)化的掃描方式對圖像進行搜索,可以大大縮短搜索時間,提高算法的速率。
針對圖像上連續(xù)或間斷的條紋圖像,本文中在圖像相鄰行之間光條中心位置采用優(yōu)化的搜索方式,縮小搜索范圍,從而提高處理速率。從第1行開始對圖像進行整行搜索進行梯度閾值法分割圖像,然后提取中心,如果不滿足要求,則下一行繼續(xù)整行搜索,直到第i行閾值分割后進行灰度重心粗提取得到條紋中心Xi,則在第i+1行Xi左右各7個像素進行閾值分割中心提取工作,這樣只需所搜這15個像素即可,如果找到中心則進入下一行,沒找到中心則再改行重新進行整行搜索,以此類推完成整幅圖像。圖2為不連續(xù)條紋搜索示意圖。
Fig.2 Coarse search of center location of discontinuous laser strips
在粗提取后,對圖像使用優(yōu)化Hessian矩陣方法進行精提取,由于傳統(tǒng)求Hessian矩陣方法的過程中,圖像上的每個點至少要進行5次高斯卷積計算,運算量極大,難以達到實時性條紋提取要求。由于高斯卷積具有可分離性,在不影響結(jié)果的前提下,可將2維高斯卷積改用兩次1維高斯卷積[12]代替,兩次卷積使用同一個1維模板,先沿豎直方向進行卷積,計算出結(jié)果后再沿水平方向進行卷積,以求得最終結(jié)果。這樣將1維卷積中的重復部分除去,將圖像處理的5n2次乘加減少為8n次乘加,結(jié)合灰度重心粗提取,在粗提取的條紋附近自動分割出條紋所在區(qū)域作為圖像處理區(qū)域,做此優(yōu)化后,可大幅減小算法的運算量,并保證Hessian矩陣算法的精度。
本文中提出的優(yōu)化條紋處理方法,結(jié)合灰度重心粗提取,在粗提取的條紋附近自動分割出條紋所在區(qū)域作為圖像處理區(qū)域,依據(jù)條紋寬度在整條條紋取邊緣整像素坐標后左右各取N個像素點,即為該段圖像的處理區(qū)域,如果條紋是分段的,則處理區(qū)域也分段處理。在選出的所有區(qū)域內(nèi)使用1維高斯卷積代替2維卷積求得相應的Hessian矩陣,根據(jù)Hessian矩陣計算出每點對應的條紋法線方向,在此方向上進行泰勒展開計算出極值點,即為亞像素級的激光條紋中心坐標。
設(shè)求取Hessian過程中,g(x,y)為N階高斯卷積模板,G(x,y)為高斯函數(shù)的 2 階偏導,I(x,y)是以(x,y)為中心、大小為N×N的圖像矩陣,Ixx,Ixy,Iyy為高斯函數(shù)的2階偏導與圖像的卷積,Hessian矩陣可表示為:
同理可求得Ixy和Iyy。
求得Hessian矩陣后,可根據(jù)Hessian矩陣的特征值和特征向量得到條紋的法線方向。圖像上點(x0,y0)的法線方向由該點2階方向?qū)?shù)絕對值取極大值的方向得到,即為其Hessian矩陣最大特征值的絕對值所對應的特征向量(nx,ny)。求得法線方向后將此點圖像灰度分布函數(shù)沿該方向2級泰勒展開,表示為I(x0+tnx,y0+tny),光條灰度值在該方向上近似呈現(xiàn)高斯分布,光強越大,越靠近光條中心,因此求出該方向上的灰度極值,即當I(x0+tnx,y0+tny)的1階導數(shù)為0 時,得到的點 (x0+tnx,y0+tny)即為點(x0,y0)法線方向上對應的亞像素條紋中心點,該點的切線方向即為條紋方向。其中,Ix和Iy為高斯函數(shù)的1階偏導與圖像的卷積,且:
Fig.3 Processing area
圖3a為原算法處理區(qū)域,圖3b為本文中算法處理區(qū)域。本文中算法只在圖3b所示的處理區(qū)域內(nèi)對條紋進行高斯卷積計算,相比原算法對如圖3a所示的處理區(qū)域進行計算,大大減小了運算量,并保證了Hessian矩陣算法的計算精度,實現(xiàn)了激光條紋的快速提取。
算法及系統(tǒng)流程圖如圖4所示,圖5是焊接機器人實時引導流程。
Fig.4 Algorithm flowchart in this article
Fig.5 Flowchart of welding robot real-time guidance
根據(jù)以上算法,在自制6410開發(fā)板上進行了實驗驗證。實驗分為三部分:(1)采用優(yōu)化Steger方法提取激光條紋實驗;(2)與Steger算法比較試驗;(3)算法精度驗證實驗。
考慮傳感器要完成圖像采集和圖像處理工作,并與機器人進行實時通訊,還有激光器的控制工作,并基于系統(tǒng)對算法的高處理速率、實時性和多任務處理的要求,以及系統(tǒng)后期的可擴展性,因此選用ARM11平臺、SAMSUNG公司的S3C6410核心芯片進行硬件設(shè)計,S3C6410主頻可達667MHz,運算能力強、功能齊全、開發(fā)資料豐富、可擴展性強。該系統(tǒng)采用底板加核心板的硬件結(jié)構(gòu),節(jié)約空間,可完成柔性傳感器的設(shè)計。該系統(tǒng)包括以下幾個模塊:采集模塊采集電荷耦合器件(charge coupled device,CCD)相機拍攝的圖片信息;存儲模塊用于存儲圖片信息和其它信息(存儲模塊包括NAND FLASH閃存和雙倍速率同步動態(tài)隨機存儲器(double data rate synchronous dynamic random access memory,DDR SDRAM));通信模塊用于與機器人和激光器的實時通信(通過局域網(wǎng)(local area network,LAN)進行數(shù)據(jù)傳輸,通過通用輸入輸出端口(general purpose input output,GPIO)控制激光器開關(guān));調(diào)試模塊用于開發(fā)階段的調(diào)試工作,包括通用異步收發(fā)傳輸器(universal asynchronous receiver/transmitter,UART),其中 6410 有1個RS-232C標準(electronic industry association recommended standard 232,EIA-RS-232C)串口和3個晶體管-晶體管邏輯電平(transistor-transistor logic,TTL)串口,通用串行總線(universal serial bus on-the-go,USB OTG)端口和聯(lián)合測試行為組織(joint test action group,JTAG)3種端口。各個模塊由ARM內(nèi)核通過AHB系統(tǒng)總線(advanced high performance bus,AHB)進行控制,系統(tǒng)圖如圖6所示。
Fig.6 Hardware framework
采用穩(wěn)定性好、資源豐富易開發(fā)的Linux系統(tǒng)平臺,并以V4L2作為視頻驅(qū)動框架,進行應用程序設(shè)計:傳感器上電自啟動,等待機器人進入預設(shè)位置的命令后開始進行測量任務,使用V4L2的用戶層接口函數(shù)來完成圖像采集工作,進行激光條紋中心提取,進行數(shù)據(jù)處理后算出機器人偏移位置數(shù)據(jù),機器人接到數(shù)據(jù)后調(diào)整位置進行焊接,之后再進入下個焊接任務點以完成整個焊接任務。
激光條紋提取實驗在自制6410開發(fā)板平臺上進行,將傳感器與PC機相連,將處理后的圖片和數(shù)據(jù)通過socket網(wǎng)絡(luò)傳給PC機進行數(shù)據(jù)分析。選用工作距200mm、波長635nm的激光器投射激光,選用Toshiba Teli Corporation CCD工業(yè)相機采集圖像,在室內(nèi)環(huán)境條件下,以特征孔為被測對象,將激光條紋打到被測孔特征上進行實驗驗證。采用本文中算法進行激光條紋中心提取,進行高斯卷積時取σ=1.5,n=3,進行精提取時取N=3,圖像像素大小設(shè)置為768×576,如圖7所示,采用本文中算法進行中心提取后的圖像如圖8所示,圖中包括原始圖像和提出的條紋中心。
Fig.7 Stripe images to be processed
Fig.8 Extraction results of stripe
3.4.1 精度比較實驗 對圖7中的條紋圖像進行處理,并對Steger方法和本文中算法的提取精度進行了分析比較,實驗結(jié)果如表1所示。由表1可知,本算法與Steger算法之間的誤差約為0.071pixel,具有很好的精度。
Table 1 Comparison of stripe center extraction accuracy
Fig.9 Image of single linear stripe
3.4.2 運算速率比較實驗 對圖9所示的單線狀條紋圖像進行處理,并對Steger方法和本文中算法的運算速率進行了分析比較,理論上卷積運算量Steger方法有5n2×768×576=19906560次乘加,本文中的算法有8n×7×576=96768次乘加,Steger算法是本文中算法的200多倍。實驗結(jié)果如表2所示,本文中算法提取速率比傳統(tǒng)Steger方法提高100多倍,運行速率大幅提升,滿足系統(tǒng)要求。
為了防止連續(xù)采集圖像時存在圖像重疊,采集的圖像有黑邊、圖像抖動和圖像純在黑邊的現(xiàn)象,本文中對6410相機接口、TVP5150寄存器及相機驅(qū)動進行優(yōu)化設(shè)置,保證圖像采集的穩(wěn)定性。
(1)設(shè)置TVP5150部分BT656輸出。
(2)設(shè)置6410驅(qū)動部分為interlace模式、BT656格式、設(shè)置為720像素×576像素,每場為720像素×288像素,交替輸出。
(3)設(shè)置應用程序為768像素×288像素格式,識別BT656的F位;偶數(shù)場存在0,2,奇數(shù)場在1,3。最后奇偶場合并為一幀。
Linux V4L2驅(qū)動為camera接口申請4塊內(nèi)存,由于相程序讀取速率約為相機寫入速率的4.5倍,為了在取多幅圖像時防止內(nèi)存中的數(shù)據(jù)在完全讀出之前被新數(shù)據(jù)洗掉,本文中采用相機等待一場圖像捕捉完畢后停止捕捉來采集圖像,采集完畢后再開始捕捉的方法。以此方法可以保證采集圖像的穩(wěn)定性及對激光條紋提取算法驗證的可靠性。
以此方法對本文中的算法進行重復性實驗,在相同環(huán)境中,對條紋圖像進行多幅連續(xù)拍攝,計算出的每幅條紋圖像的中心線理論上均應相同,而實際情況由于多種原因而有誤差:硬件系統(tǒng)的制造誤差及實驗環(huán)境的影響導致每次采集的圖像不能保證完全相同;算法本身的誤差也會直接影響條紋提取的精度?,F(xiàn)忽略了硬件系統(tǒng)及實驗環(huán)境的影響,且修改后的相機驅(qū)動不會影響圖片采集,直接分析本文中的算法對條紋精度提取的影響,實驗中取條紋圖像的第11行條紋進行多次中心提取分析,如表3所示,采用本文中的算法進行激光條紋中心提取,具有較小的重復性誤差。
Table 3 Repetitive experiments of the algorithm in this paper
采用優(yōu)化的Steger算法對激光條紋進行了亞像素級別的條紋中心提取,并在自制6410開發(fā)板上進行實驗驗證。該方法對圖像條紋進行預處理,并采用優(yōu)化處理區(qū)域,提高了算法精度,大幅減小運算量,提升了算法運行速率。實驗結(jié)果表明,在保證Hessian矩陣算法高精度和高魯棒性的前提下,使用優(yōu)化Steger算法進行激光條紋中心提取,精度高、速率快、魯棒性好,適合用于視覺測量系統(tǒng)實時引導機器人高精度焊接中。
[1] CHEN H D,ZHOU G,WANG C J,et al.An algorithm for laser stripe matching based on the epipolar constraint[J].Laser Technology,2003,27(6):584-587(in Chinese).
[2] LI D,GENG N,KANG J N.Research on laser stripe centre extraction algorithm under complex background[J].Computer Applications and Software,2013,30(3):271-273(in Chinese).
[3] WU J Y,WANG P J,CHEN J H,et al.Method of linear structured light sub-pixel center position extracting based on gradient barycenter[J].Journal of Image and Graphics,2009,14(7):1354-1360(in Chinese).
[4] YANG J H,YANG X R,CHENG X Y,et al.Review of extracting the centers of linear structured light stripes for 3-D visual measurements[J].Journal of Guangdong University of Technology,2014,31(1):74-78(in Chinese).
[5] LIU Zh,LI Sh,F(xiàn)ENG Ch.Laser stripe center extraction based on cross-correlation algorithm[J].Chinese Journal of Lasers,2013,40(5):197-202(in Chinese).
[6] SUN P Q,YANG Y Y,HE L L.An improved Gaussian fitting method used in light-trap center acquiring[J].Electronic Design Engineering,2012,20(13):179-181(in Chinese).
[7] HE Zh H,WANG B G,LIAO Y B,et al.Subpixel algorithm using a curve fitting method[J].Chinese Journal of Scientific Instrument,2003,24(2):195-197(in Chinese).
[8] STEGER C.An unbiased detector of curvilinear structures[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1998,20(2):113-125.
[9] LI Y Y,ZHANG Zh Y,YUAN L.Survey on linear structured light stripe center extraction[J].Laser& Optoelectronics Progress,2013,50(10):100002(in Chinese).
[10] YANG W.Research on method for extracting center of structured light stripe[D].Harbin:Harbin Institute of Technology,2009:6-31(in Chinese).
[11] YU X J.Application of median filtering for removing image noise[J].Computer Knowledge and Technology,2008,8(3):1795-1796(in Chinese).
[12] HU K,ZHOU F Q,ZHANG G J.Fast extrication method for subpixel center of structured light stripe[J].Chinese Journal of Scientific Instrument,2006,27(10):1326-1329(in Chinese).
[13] ZHANG Q T,YANG XE Y,LIU T,et al.Design of a smart visual sensor based on fast template matching[J].Chinese Journal of Sensors and Actuators,2013,26(8):1039-1044(in Chinese).