盧 玥,劉 學 軍,王 美 珍,甄 艷
基于數(shù)位的相機徑向畸變參數(shù)計算
盧 玥,劉 學 軍,王 美 珍,甄 艷
(南京師范大學虛擬地理環(huán)境教育部重點實驗室,江蘇 南京 210046)
相機畸變是影響基于圖像的幾何量測、三維重建精度的重要因素之一??臻g中一條直線在透視投影作用下理應成為一條直線,但因畸變其構象發(fā)生彎曲,通過場景信息中共線點的透視投影不變性可以求解出相機徑向畸變系數(shù)??紤]畸變的漸變特性,該文設計了基于數(shù)位的相機徑向畸變參數(shù)解算方法:將相機一階徑向畸變系數(shù)k1用科學計數(shù)法X×10-m表示,依次確定其指數(shù)m及尾數(shù)X,直至滿足精度的設定,最終求解出k1的值。最后通過模擬和實例數(shù)據(jù)對該方法進行了分析驗證。
徑向畸變;相機標定;場景信息;數(shù)位
基于圖像的幾何量測、三維重建需要高質量的圖像。然而相機光學系統(tǒng)的設計、加工和裝配中存在一定誤差,導致所獲取的圖像包含著變形與失真,這些失真雖然不影響成像的清晰度,但卻影響成像的幾何位置精度,因此在成像幾何模型描述中,需考慮相機鏡頭的畸變因素,特別是對于大視場、精度高的應用場合。
為消除鏡頭畸變所帶來的誤差,需要對圖像進行畸變校正。目前相機畸變校正的方法主要有兩種:一種是傳統(tǒng)的基于畸變混合模型的標定方法,以Tsai、Heikkila等為代表,將相機內外參數(shù)與鏡頭畸變參數(shù)一起進行非線性優(yōu)化,這樣雖可獲得高精度的結果,但缺點是需要通過特定的標定模板,獲取特征點的三維坐標進行標定,且非線性優(yōu)化過程復雜耗時,其結果難以保持一致性[1];另一種是畸變分離的標定方法,利用圖像中的場景信息,如直線特征的投影不變性來標定相機的畸變參數(shù),主要有Levenberg-Marquardt優(yōu)化算法求解[1-3]、二分法逐漸逼近最短距離求解[4,5]、基于交比不變性的鏡頭畸變參數(shù)標定方法[6]等,該類方法僅僅利用圖像信息,標定的過程簡單,但非線性優(yōu)化或二分求解一般不能獲得穩(wěn)定解,有時無解;基于交比的方法則對圖像內容有較高要求。本文采用畸變分離的相機模型,利用圖像畸變的漸變特性,提出了一種基于數(shù)位的相機徑向畸變校正方法,以便快速、高效地標定相機的徑向畸變參數(shù),修正圖像的畸變,進而提高三維量測與重建的效率和精度。
相機的光學畸變主要分為3類:徑向畸變、偏心畸變和薄棱鏡畸變。Tsai[7]認為考慮過多的畸變可能導致計算復雜性增加,計算結果不收斂反而得不到較高精度,在一般情況下,考慮一階或二階徑向畸變是較好的選擇[8-10],本文只考慮相機的一階徑向畸變;周富強等[1]證明,非廣角鏡頭相機在其主點距圖像中心偏移較小時,標定結果產生的誤差不大,故本文假設相片的主點位于圖像中心。徑向畸變會引起圖像點沿徑向移動,離中心點越遠,其變形量越大。正的徑向畸變導致起點向遠離圖像中心的方向移動,其比例系數(shù)增大,稱為枕形畸變;負的徑向畸變導致點向靠近圖像中心的方向移動,其比例系數(shù)減小,稱為桶形畸變(圖1)。
圖1 徑向畸變類型Fig.1 Radial distortion type
相機的徑向畸變模型可由下列數(shù)學公式表示[1,11,12]:
1.2.1 原理 空間中一條直線在透視投影的作用下,理應映射為一條直線,但由于相機畸變的存在,同一條直線的像點呈曲線分布。給某個無畸變像點加一個徑向畸變值k1,該點則會根據(jù)不同的值發(fā)生不同的徑向畸變;同理,對有一定徑向畸變的像點,總存在某個徑向畸變值k1,使其能夠恢復理論像點的位置。根據(jù)徑向畸變的原理可知,這種像點的位移是漸變的,畸變點在漸變值k1的作用下,距理論點的距離從原始值開始不斷縮小,直至為零后又不斷增大。因此給定k1一個初始值,使其漸變,當畸變點與原始點的距離為零時,即得到該點的一階徑向畸變值。同理,若圖像中存在一條直線,擬合出經(jīng)過該點陣的直線,并計算出所有點距離該擬合直線的距離d。給定一個k1的初始值,使其漸變,當畸變點陣至擬合直線的距離的平方和達極小值(最小值)時,即可求出一階徑向畸變值k1(圖2),而傳統(tǒng)LM優(yōu)化算法,其設定目標函數(shù)為每組共線點到擬和直線的距離之和,優(yōu)化使其達到最小可估計鏡頭的畸變參數(shù)。
圖2 畸變點陣的校正Fig.2 Distortion correction of collinear points
1.2.2 畸變參數(shù)的數(shù)位計算法 徑向畸變值k1通常可表示為X×10-m,其中X為任意實數(shù),m為正整數(shù),表示徑向畸變參數(shù)值k1的數(shù)位?;儏?shù)的確定就是計算X和m。按照代數(shù)知識,X可分解為X=x0+0.1x1+0.01x2+…,xi∈{0,1,2,…,9}。因而對X的計算可轉化為對xi的確定。又由于xi只可能存在于0~9之間,故可枚舉確定xi。考慮到m、xi間的獨立性,在k1初始值給定情況下,首先確定m,然后依次確定x0,x1,x2,…,直到滿足預設精度為止(根據(jù)精度需要設定)。如此可形成k1序列{X1,X2,…,Xn},由于k1的漸變性,在該序列中必然存在一個值Xn,使得畸變點陣到擬合直線的距離最小,該值即為k1(圖3)。
圖3 算法示意Fig.3 Algorithm diagram
可通過如下方法確定m和xi:
(1)確定m。當畸變值k1為0時,計算畸變點陣至擬合直線距離的平方和d1;取x0=1,m=5為畸變值的初始值(一般情況下,普通非量測型相機的畸變量級在10-8左右,即m=8),計算畸變點陣至擬合直線距離的平方和d2;觀察d1和d2變化:如果d1<d2,說明量級m過大,須降低一個數(shù)位,d1不變,d2為m=m+1時對應的距離平方和,重復上述比較直至d1>d2;如果d1>d2,一種情況是此時d2還在最小值左側,則m值確定為當前值,進入下一步計算,另一種情況是此時d2在最小值右側,但仍比d1值小,此時對k1加一個微小值,判斷距離平方和是否增加,如果是,m=m-1,否則m值確定為當前值,進入下一步計算。
(2)確定xi。m確定之后,xi所在的數(shù)位即可確定。首先計算x0,x0初始值為1,此時計算畸變點陣至擬合直線距離的平方和d1;取x0=x0+1,計算畸變點陣至擬合直線距離的平方和d2;觀察d1和d2變化:如果d1>d2,按照已遞增的x0重復以上步驟,計算出d1和d2并繼續(xù)比較,直至d1<d2;如果d1<d2,則x0=x0-1。用相同方法依次計算x1、x2等值,直至滿足精度需要。
表1給出了一個求得k1值的示例流程。
表1 示例流程Table 1 Example process
1.2.3 算法流程 根據(jù)以上原理,設計出的分數(shù)位畸變參數(shù)算法流程如下:
(1)在圖像上提取某條直線上的若干特征點,得到這些特征點的像點坐標并用最小二乘法擬合過該點陣的直線。
(3)判斷出畸變類型后,對每一幅圖像,由先驗知識為其設定畸變初始值及精度位數(shù),將相機一階徑向畸變系數(shù)k1用科學計數(shù)法X×10-m表示(X=x0+0.1x1+0.01x2+…),利用畸變產生的漸變性,依次確定其指數(shù)m及尾數(shù)X。首先設定畸變初始值1×10-n(n>m),k1按初始數(shù)位的最小單位1×10-n逐漸累加,觀察點陣距擬合直線的距離平方和d值的變化,若d較原始值縮小,則繼續(xù)給k1一個1×10-n的增量,若d增大,則該數(shù)位前的系數(shù)確定,降低一個數(shù)位,并以同樣方法求得該數(shù)位前的系數(shù),直至滿足精度的設定,最終求解出k1的值。
利用Visio 2003繪制兩張10×9的表格,分別為400×300像素(圖4)和800×600像素,編寫算法對圖片上各點增加不同的一階徑向畸變值,得到畸變圖像(圖5、圖6)。利用分數(shù)位標定算法對畸變圖像進行糾正,取30組樣本(圖4中每條標號直線取樣三次),每組15個點,解算出的畸變值如圖7、表2。由實驗發(fā)現(xiàn),分辨率一定的情況下,畸變值越大,其結果的精度越高;分辨率不同時,分辨率越高,同一數(shù)位的畸變值標定結果越好。
表2 仿真實驗統(tǒng)計結果Table 2 The statistics of emulational results
使用Nikon D80型號數(shù)碼相機進行拍攝,焦距18 mm,分辨率為3 872×2 592像素。取圖像中的12條直線目標(圖8),利用本算法和LM優(yōu)化算法分別求解,結果見表3。從實驗可以看出,該方法與傳統(tǒng)非線性優(yōu)化標定方法的標定精度相當,且結果非常穩(wěn)定。
圖8 真實場景圖像Fig.8 Real environment image
表3 場景實驗結果Table 3 Real environment results
分數(shù)位求解相機徑向畸變方法原理簡單:隨著畸變系數(shù)值逐級累加,畸變量呈遞增或遞減的規(guī)律。與已有的算法相比,該方法更容易實現(xiàn)且結果更為穩(wěn)定。二分法求解徑向畸變須設定最小閾值,在閾值設定不當時容易產生無解的情況;交比法需要知道圖像中一條直線目標上4個特征點形成的線段比值關系,不適用于比值關系未知或者直線目標不清晰的情況;而非線性優(yōu)化法需要最小化復雜的代數(shù)函數(shù),其結果也不穩(wěn)定。分數(shù)位求解方法則具有以下優(yōu)勢:1)對場景的要求不高,只需一條直線目標就可以進行標定,具有多條直線目標的場景,通過多次計算取均值即能獲得較為滿意的結果;2)由于畸變系數(shù)是逐級累加的,該算法必然有解,且結果在不同分辨率的圖像下均能保證一定的精度;3)該方法可以根據(jù)需求設定結果的精度,而且可以預估循環(huán)的次數(shù)范圍及算法效率。
雖然本文采用畸變值累加的原理,但是基于數(shù)位的方法大大減少了循環(huán)次數(shù)。假設一幅圖像的畸變系數(shù)為1.235E-8,給定的初始值為1E-6,則只需要16次循環(huán)判斷即可解出。算法的效率與設定的精度位數(shù)n有關,最小循環(huán)次數(shù)為n+1(各數(shù)位系數(shù)都為0);最大循環(huán)次數(shù)為(n+1)×9左右(各數(shù)位系數(shù)都為9,根據(jù)k1初始值的不同循環(huán)次數(shù)有所偏差)。與非線性優(yōu)化法與二分法相比,本算法不用求解復雜的非線性方程,雖然循環(huán)次數(shù)較多,但方程求解簡單,計算量大大減少。
由一階徑向畸變模型可以得知,某像點所產生的畸變大小與其距離主點的長度有關。假設主點位于圖像中心,一幅相片中畸變最大的點在其4個角點,此時,像點半徑為圖像對角線長度的一半。在計算過程中,像點距主點的距離以像素為單位計算,因此,圖像的分辨率越高,其產生的像素位移就越大,由以上的仿真結果可以看出,相同的畸變真值,在分辨率更高時其標定精度越高。手動提取圖像中的共線點時,以一個像素為最小位移單位,所以圖像的分辨率一定程度上決定了標定結果的精度。
假設主點位于圖像中心,即x0=0,y0=0時,由畸變系數(shù)k1帶來的像素偏移量為:
故在x或y軸上產生一個像素的位移時,k1與像點的x坐標或y坐標的關系為:k1x3=1,或k1y3=1,由此可以算出,當k1確定為某個數(shù)位的值時,距離圖像中心某個范圍內的像素沒有變化。例如,當k1=1E-8時,距圖像中心464像素內的像點都不會產生形變,故如需標定1E-8數(shù)位的畸變系數(shù),其相片的分辨率至少要達到1 000×1 000像素。
若相片的分辨率不能滿足畸變值本身的精度,不論用任何方法都無法得到真實穩(wěn)定的標定結果。由于一般非量測相機的一階徑向畸變值都在1E-8數(shù)位左右,分辨率較高(1 000×1 000像素以上)的圖片或相片會獲得較好的效果。
畸變分離的相機模型為分步相機標定奠定了良好的基礎,尤其是基于場景的相機標定,通常圖幅數(shù)量有限,或僅有單幅圖像,該模型將畸變參數(shù)與相機內外參數(shù)分離,使得進一步的相機標定可以線性進行,簡化了非線性優(yōu)化的難度,也一定程度上提高了標定的精度。本文在現(xiàn)有相機徑向畸變求解算法的基礎上,利用相片產生畸變時的漸變性,分數(shù)位對相機的徑向畸變進行求解,標定過程簡單快捷。實驗結果證明,該方法與傳統(tǒng)非線性優(yōu)化標定方法的標定精度相當,且結果非常穩(wěn)定。針對畸變系數(shù)存在的漸變性,此種方法還可運用至除徑向畸變以外的其他畸變,使得畸變求解的過程更加簡單高效;同時,這種逐級累加的方法也為迭代算法提供了一個新的思路。
[1]周富強,蔡斐華.基于非量測畸變校正的攝像機標定方法[J].機械工程學報,2009,45(8):228-232.
[2]周富強,胡坤,張廣軍.基于共線特征點的攝像機鏡頭畸變校正[J].機械工程學報,2006,42(9):174-177.
[3]周富強,胡坤,張廣軍.基于共線特征點的攝像機畸變快速校正方法X[P].200710000174.2007-01-09.
[4]沙月進.基于相對控制的影像解析及三維測量技術研究[D].南京師范大學,2008.
[5]閭國年,沙月進,劉學軍.一種與攝影設備無關的影像畸變標定方法X[P].200810024762.2008-05-05.
[6]鄭榜貴,田炳香,段建民.基于交比不變量的攝像機標定方法[J].北京工業(yè)大學學報,2008,34(5):476-480.
[7]TSAI R.A versatile camera calibration technique for high accuracy 3D machine vision metrology using off-the-shelf TV cameras and lenses[J].Robotics and Automation,1987,3(4):323-344.
[8]林宗堅,崔紅霞,孫杰,等.數(shù)碼相機的畸變差檢測研究[J].武漢大學學報(信息科學版),2005,30(2):122-125.
[9]康志忠,譚玉敏.一種根據(jù)曲率變化檢校畸變差的方法[J].武漢大學學報(信息科學版),2006,31(9):777-780.
[10]衛(wèi)征,方俊永,張兵.非量測相機鏡頭光學畸變的改正[J].光學技術,2007,33(6):885-888.
[11]WENG J,COHEN P,HERNIOU M.Camera calibration with distortion models and accuracy evaluation[J].IEEE Trans.Pattern Analysis Machine Intelligence,1992,14(10):965-980.
[12]DEVERNAY F,F(xiàn)AUGERAS O.Automatic calibration and removal of distortion from scenes of structured environments[A].Investigative and Trial Image Processing,1995[C].San Diego:SPIE,2567.62-72.
Camera Radial Distortion Parameters Calculation Based on Numerical Digit
LU Yue,LIU Xue-jun,WANG Mei-zhen,ZHEN Yan
(KeyLaboratoryofVirtualGeographicEnvironment,NanjingNormalUniversity,MinistryofEducation,Nanjing210046,China)
Camera distortion is one of the important factors which affect accuracy of geometric measurement and three-dimensional reconstruction based on image.The images of straight spatial lines become curves in perspective projection because of distortion,and we can calculate the radial distortion parameters through the invariability of collinearity of the points on the line.In view of the gradient characteristics of camera distortion,this paper presents a method of camera radial distortion parameters calculation based on numerical digit.First,express first-order radial distortion in scientific notation asX×10-m,then calculate its indexmand mantissaXsuccessively,until it meets the accuracy set before.Finally,simulation experiments and real experiments are presented and they confirmed the correctness and efficient of the method.
radial distortion;camera calibration;scene information;numerical digit
TP75
A
1672-0504(2011)06-0018-05
2011-06- 10;
2011-08-01
國家863計劃資助項目(2007AA12Z238);江蘇省高校自然科學研究重大項目(10KJA420025)
盧玥(1986-),女,碩士,主要研究方向為視頻GIS、交通GIS等。E-mail:kiyota2@163.com