王 皓 杜向陽 耿英博 張克平
(上海工程技術(shù)大學(xué)機械工程學(xué)院)
基于LabVIEW的相機標定技術(shù)研究*
王 皓 杜向陽 耿英博 張克平
(上海工程技術(shù)大學(xué)機械工程學(xué)院)
使用LabVIEW平臺和視覺開發(fā)模塊完成對相機的標定,選用圓點陣標定板,利用Canny算子提取圓形輪廓,然后基于亞像素邊緣提取的圓擬合方法提取特征點在圖像坐標系下點中心坐標。該方法降低了攝像機標定的難度,極大地縮短了軟件開發(fā)周期,具有較高的標定精度,能夠滿足實際工業(yè)檢測的精度要求。
相機標定 機器視覺 LabVIEW Canny算子
機器視覺就是利用計算機和視覺傳感器件替代人眼來做度量和判決[1]。近年來,機器視覺技術(shù)以非接觸、快速、高精度及自動化程度高等優(yōu)點在各個領(lǐng)域都得到廣泛應(yīng)用。
相機標定是機器視覺檢測和定位系統(tǒng)研究中的重要組成部分。相機標定的實質(zhì)就是求解相機內(nèi)外參數(shù)的過程。目前,用于相機標定的方法多種多樣,大致可以分為3類:傳統(tǒng)的相機標定方法、主動視覺中的標定方法和相機自標定方法。筆者在基于張正友標定算法的基礎(chǔ)上,利用LabVIEW作為開發(fā)平臺,并考慮到二次徑向畸變,建立非線性相機模型,完成對相機的標定。
LabVIEW作為一種編程語言,與其他常見的編程語言相比,最大的特點在于它是一種圖形化編程語言,使程序開發(fā)更直觀、簡潔,界面也更加具有說服力,極大地提高了編程的效率,縮短了軟件的開發(fā)時間。
視覺開發(fā)模塊是專為開發(fā)機器視覺而設(shè)計的,NI視覺開發(fā)模塊包括IMAQ Vision和NI Vision Assistant,IMAQ Vision擁有強大視覺處理函數(shù)的庫,NI Vision Assistant提供不通過編程就實現(xiàn)將LabVIEW 應(yīng)用于快速成型的直觀環(huán)境。其中IMAQ Vision 是一套包含各種圖像處理函數(shù)的功能庫,它將400 多種函數(shù)集成到LabVIEW、Measurement Studio、LabWindows/CVI、Visual C++和Visual Basic開發(fā)環(huán)境中,為圖像處理提供了完整的開發(fā)功能;NI Vision Assistant是圖像模型建立與驗證的一個工具,它能夠自動生成LabVIEW程序框圖,該程序框圖中包含NI Vision Assistant建模時一系列操作的相同功能,而且開發(fā)者可以根據(jù)實際需求進行二次編寫,并將程序框圖集成到自動化或生產(chǎn)測試應(yīng)用中,用于運動控制、儀器控制及數(shù)據(jù)采集等。
針孔相機模型是各種相機模型中最簡單、常見的一種,這是一種不考慮相機畸變因素而建立的理想狀態(tài)模型。它的優(yōu)點是成像關(guān)系是線性的,簡單實用而且保證準確性,因此在機器視覺中得到了廣泛的應(yīng)用。但是在實際的工程應(yīng)用中,由于相機鏡頭的制造和安裝中存在一定的誤差,鏡頭均會產(chǎn)生一定的畸變,為了提高相機標定的精度,筆者在理想的針孔相機模型的基礎(chǔ)上考慮鏡頭的徑向畸變,從而重新建立相機的成像模型。
2.1針孔相機模型
CCD相機采集獲取的圖片在計算機內(nèi)是以M行N列的數(shù)組形式保存的,M行N列的圖像中的元素稱為像素。在圖像上定義直角坐標系每一像素的坐標(u,v)分別為該像素在數(shù)組中的列數(shù)和行數(shù),所以(u,v)是以像素為單位的圖像坐標系的坐標。而在實際的工程應(yīng)用中,需要將以像素為單位的圖像坐標系轉(zhuǎn)變成以物理單位毫米(mm)表示的圖像坐標系,以物理單位毫米表示的圖像坐標系的x軸和y軸分別平行于u軸和v軸,這兩個坐標系之間的關(guān)系如圖1所示。
圖1 圖像坐標系關(guān)系
其中o點在(u,v)坐標系中的坐標為(u0,v0),即圖像中每一個像素在x軸和y軸方向上的物理尺寸為dx,dy,所以在圖像中,每個像素在坐標系(u,v)和坐標系(x,y)下的關(guān)系用齊次坐標與矩陣形式表示為:
(1)
圖2為針孔相機模型示意圖。針孔相機模型是指在理想狀態(tài)下,采集的圖像點經(jīng)過透鏡成像后,在成像平面上可形成與之對應(yīng)的理想的像點,使得空間圖像點、鏡頭的光心點和成像點都在一條直線上[2]。設(shè)Oc-XcYcZc為相機坐標系、Ow-XwYwZw為世界坐標系,相機坐標系的原點Oc為CCD相機鏡頭的光心,Zc軸與相機的光軸重合,原點o為相機光軸和圖像平面的交點,f為相機的有效焦距,圖像平面和XcOcYc平面平行,以物理單位毫米表示的圖像坐標系的x軸和y軸分別平行于相機坐標系的Xc軸和Yc軸。(Xw,Yw,Zw)、(Xc,Yc,Zc)分別為空間中任意一點P的世界坐標和相機坐標,(x,y)為點P在圖像平面上的投影坐標。
對于空間上任意一點P,在世界坐標系下的坐標(Xw,Yw,Zw)和在相機坐標系下的坐標(Xc,Yc,Zc)之間的變換關(guān)系為:
(2)
圖2 針孔相機模型示意圖
其中,R和T分別表示從世界坐標系到相機坐標系的旋轉(zhuǎn)矩陣和平移矩陣,旋轉(zhuǎn)矩陣R是3×3的正交矩陣,平移矩陣T是3×1的列向量;H1是4×4的矩陣,用于反映相機坐標系和世界坐標系之間的位置關(guān)系,表示相機的外參數(shù)矩陣。
按圖2建立針孔相機模型,得到空間上一點P在圖像平面上的坐標用齊次坐標與矩陣形式表示為:
(3)
根據(jù)式(1)、(3)得到圖像坐標系與相機坐標系之間的轉(zhuǎn)換關(guān)系:
(4)
其中,H2是3×4的矩陣,表示相機的內(nèi)部參數(shù)矩陣;fx、fy、u0、v0只與相機的內(nèi)部結(jié)構(gòu)有關(guān)。根據(jù)式(4),當采集3幅及以上的標定板圖像,就可以求出相機內(nèi)參數(shù)矩陣H2。
根據(jù)式(2)、(4)得到圖像坐標系與世界坐標系之間的轉(zhuǎn)換關(guān)系:
(5)
其中,H是3×4的單應(yīng)性矩陣。根據(jù)式(5),當已知足夠多的空間點的世界坐標及其對應(yīng)的圖像坐標,就可求出H矩陣。知道了投影矩陣H和相機內(nèi)參數(shù)矩陣H2,便可求出相機的外參數(shù)矩陣,得到相機的外部參數(shù)。確定了相機的內(nèi)外參數(shù),即完成了相機線性模型的標定。
2.2非線性相機模型
在實際的成像過程中,考慮到相機鏡頭的制造和安裝過程中存在一定的誤差,會造成鏡頭的失真,一般都存在非線性畸變,相機的鏡頭畸變主要分為3類:徑向畸變、偏心畸變和薄棱鏡畸變[3],考慮到非線性畸變,所以在相機標定時使用非線性優(yōu)化算法。而有研究表明,引入過多的非線性(如偏心畸變和薄棱鏡畸變)不僅不能提高解的精度,還會引起解的不穩(wěn)定,所以筆者在考慮畸變的情況下建立實際的非線性相機模型,而在一般情況下徑向畸變就足以描述非線性畸變,因此筆者只考慮徑向畸變[4],建立相機非線性模型的方程如下:
(6)
筆者利用LabVIEW+NI Vision去完成相機的標定,考慮到圓心提取算法的穩(wěn)定性和定位精度要優(yōu)于棋盤標定板的角點提取,因此選用6×8圓點陣列標定板,如圖3所示。
圖3 圓點陣列標定板
具體的標定步驟如下:
a. 首先選擇相機的標定類型為Camera Model(Grid),用至少5幅標定圖像才能得到相機參數(shù)和鏡頭的畸變;
b. 加載采集的標定板圖像,為了提高標定的精度,筆者載入11張在不同角度下采集的標定板圖像,并按照要求,選用基本上與鏡頭光軸相垂直的圖像1為標定的參考工作平面,并將以此平面為基準來修正鏡頭的非線性畸變;
c. 對每一幅圖像進行閾值參數(shù)的選擇,將標定板圖像上的圓點從背景中清晰地顯現(xiàn)出來,若標定版圖像上的圓點沒有被完全覆蓋,則需要手動畫出相對應(yīng)的范圍,以保證圓點區(qū)域完全顯示,并采用Canny濾波器提取圓形輪廓;
d. 輸入標定版圖像上圓點間的相關(guān)參數(shù),包括X Spacing、Y Spacing和Unit,分別表示標定板上相鄰圓點之間的X方向上的圓心距離、Y方向上的圓心距離和距離的單位,筆者使用的實際相鄰圓點間X方向上和Y方向上的距離均為12,單位為mm;
e. 利用圓擬合算法提取圓心特征點的坐標,得出相機的內(nèi)參和相應(yīng)的誤差參數(shù),如圖4所示;
f. 為標定圖像設(shè)定坐標系,選取右上角的圓心為坐標圓點,以便在后續(xù)測量中得出點的精確坐標值;
g. 最后將標定結(jié)果保存為png文件格式,方便在后續(xù)的測量中調(diào)用。
圖4 相機標定步驟e
對矯正后的圖像進行形狀邊緣檢測,得到圓點陣列標定板中所有圓的半徑、圓心的圖像坐標及世界坐標等詳細的參數(shù),筆者只選取標定板圓點的半徑參數(shù)數(shù)據(jù)信息(表1)。
表1 標定板圓點半徑參數(shù)
實驗結(jié)果表明該方法矯正效果較好,平均物理誤差在0.032 9mm左右,畸變?yōu)?.100 7%。
在計量學(xué)中,常用標準差衡量所測數(shù)據(jù)的精度,筆者選用標準差σ對垂直方向相機標定精度進行評定,公式如下:
(7)
根據(jù)表1選取圖像圓點的半徑結(jié)果數(shù)據(jù)進行具體的分析處理,分別計算得出以像素為單位的圓的半徑標準差σpixel=0.1639和以毫米為單位的圓的半徑的標準差σmm=0.0088。因此經(jīng)過上述的數(shù)據(jù)分析表明,筆者使用的標定方法具有較高的標定精度,能夠滿足實際機床加工或工業(yè)檢測的精度要求。
基于LabVIEW 的標定方法可以很有效地消除圖像中線性與非線性的畸變,操作簡單,標定精度較高,而且能夠方便地與NI視覺開發(fā)模塊結(jié)合使用,是傳統(tǒng)方法無法相比的,對實際生產(chǎn)有很重大的意義,將會廣泛地應(yīng)用到機械工件加工、零件檢測等眾多領(lǐng)域,進一步提高自動化程度,極大地提高生產(chǎn)效率,降低成本。
[1] Carsten S, Markus U, Christian W. Machine Vision Algorithms and Applications[M]. Berlin: Wiley-VCH, 2007.
[2] Yang X F, Huang Y M, Gao F.A Simple Camera Calibration Method Based on Sub-pixel Corner Extraction of the Chessboard Image[C].Proceedings of IEEE International Conference on Intelligent Computing and Intelligent Systems.Piscataway,NJ,2010:688~692.
[3] 劉超.移動視覺檢測系統(tǒng)的建模與標定方法研究[D].天津:天津大學(xué),2013.
[4] Zhang Z Y. A Flexible New Technique for Camera Calibration[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,2002,22(11):1330~1334.
TheResearchofTechnologyforCameraCalibrationBasedonLabVIEW
WANG Hao, DU Xiang-yang, GENG Ying-bo, ZHANG Ke-ping
(CollegeofMechanicalEngineering,ShanghaiUniversityofEngineeringScience)
Employing LabVIEW platform and visual development module to calibrate cameras was implemented, including having dot matrix chosen to calibrate the board and Canny operator adopted to extract the circle edge and then having the method of circle fitting extracted based on subpixel edge to get feature points’ coordinate in the image coordinate system. The proposed method can reduce the difficulty of camera calibration and shorten the software development cycle. The most important is that it has a high calibration accuracy as the actual industrial detection required.
camera calibration, machine vision, LabVIEW, Canny operator
王皓(1993-),碩士研究生,從事圖像處理的研究,wanghaoxsj@qq.com。
TP301.6
A
1000-3932(2017)10-0944-05
2017-06-21,
2017-06-30)