趙棟
(沈陽市勘察測繪研究院有限公司,遼寧 沈陽 110000)
20世紀80年代,光束法平差以及附加參數(shù)的引入,促使很多研究者進行了相機標定方法的各種改進。比如Ziemann提出的將鉛垂線和光束法平差相結合的兩步標定法,即在標定過程中將畸變差和主距、像主點分開求解,通過反復迭代完成標定。目前室內三維控制場標定在攝影測量和計算機視覺界中使用比較多、精度較高,大量實驗證明,基于高精度室內三維控制場的標定精度是最高的,而基于平面格網的標定方法是最方便的。
隨著普通數(shù)碼相機的普及,研究各種方便實用、靈活度高,精度好的相機標定系統(tǒng)已經成為當今攝影測量界和計算機視覺界的研究熱點之一。并且問題主要集中在使用何種標定參考對象和采用何種算法上。自標定算法和自檢校光束法平差是兩種非常有效的標定方法,前者利用同名點和約束條件進行相機標定靈活方便,后者利用高精度控制點進行標定,適用于特殊環(huán)境下的高精度測量。
目前,找到能適應不同投影類型(包括中心投影),標定簡單、可靠性高、精度高、算法快速的軟件是主要的研究趨勢。傳統(tǒng)標定模型的畸變項已不適合用來矯正超廣角鏡頭(以下簡稱魚眼鏡頭)拍攝影像的畸變,因此需要用新的模型和畸變項取代傳統(tǒng)的標定模型。投影模型的確定是核心,很多文章提到了有關投影模型的確定,例如:英向華等提出的一種基于球面透視投影約束的魚眼鏡頭校正方法,此方法通過擬合一個與選取的離散點距離最近的圓曲面,輔以多項式的切向和徑向畸變項來確定相機內參數(shù)。缺陷是不同相機的投影方式各異,投影面可能并不是圓曲面,而是一個不規(guī)則曲面[1]?;趲缀翁卣鞯臉硕ǚ椒ㄍㄟ^提取特征物體并矯正到實際的幾何模型上來標定內參數(shù),如邱志強等提出的用射影不變性糾正魚眼鏡頭畸變,利用直線物體在糾正影像中也應該是直線這樣一種約束來標定相機內參數(shù),這對特征點的選取和提取精度要求較高[2]。還有通過立體標定來確定內參,這種方法對像點匹配精度要求很高。目前用非專業(yè)測量相機進行低精度測量已大量普及,用其部分替代傳統(tǒng)測量可以大大降低測量成本,研究適用于非專業(yè)測量相機的高精度標定算法,可使普通相機在測量領域的應用更加廣泛。
經典的模型以中心投影為基礎,加上線性和非線性的畸變項對圖像邊緣的徑向和切向畸變進行糾正。經典模型的求解首先通過二維直接線性變換(DLT)或者求同形矩陣給出外方位元素的初值,然后用光束平差進行參數(shù)的優(yōu)化,最后得到可靠的相機內參數(shù)[3,4,5],式(1)描述了經典模型所依賴的共線方程。
(1)
通過平面格網控制點將其轉化為8個參數(shù)相關的二維DLT模型,如下:
(2)
式(2)中:L1…L8為二維DLT模型的8個參數(shù),由于8個參數(shù)相關,故得到的參數(shù)精度不夠高,故只能作為迭代解算的初始值。由于切向畸變和徑向畸變的影響對高精度測量不可忽略,如公式(3)所示△x,△y為像點坐標的畸變改正數(shù),其中:K1,K2,K3…為徑向畸變系數(shù),p1,p2為切向畸變系數(shù)。
(3)
魚眼相機由于其超大視場角的原因,不遵守透視投影,故物方點、投影中心和像方點不在一條直線上(除了與主光軸平行的那條光線),基于共線方程的經典模型不適用于魚眼相機的成像模型,故有必要討論魚眼相機的投影模型的性質。
(1)投影模型
人工選取的區(qū)域,并由計算機自動識別的圓心
(ⅰ)中心投影:r=f×tan(θ)
(4)
(ⅱ)立體投影:r=2×f×tan(θ/2)
(5)
(ⅲ)等距投影:r=f×θ
(6)
(ⅳ)等角投影:r=2×f×sin(θ/2)
(7)
(ⅴ)正交投影:r=f×sin(θ)
(8)
式中:f為焦距,θ為入射角,r為投影半徑
5種投影模型中投影半徑r與入射角θ的函數(shù)關系如圖1所示。
圖1 以上5種投影模型中投影半徑r與入射角θ的函數(shù)關系
圖2 魚眼相機投影模型中投影半徑與入射角的關系圖示
由圖2可以看出,P為物方點,經過投影中心,彎曲投射到了p,而不是沿直線到達p′。
目前魚眼鏡頭的成像模型大都可以用以上其中一種公式近似表達,等距投影是理想的球面投影,但是魚眼鏡頭的等效投影面是一個近似球面的不規(guī)則曲面而非理想曲面,考慮到擬合度,可以選擇更一般的多項式作為投影模型即:
r=k1×θ+k2×θ2+k3×θ3+k4×θ4+k5×θ5+…+kn×θn
(9)
將以上5個典型的投影模型展開為泰勒多項式:
(ⅰ)中心投影:
(10)
(ⅱ)立體投影:
(11)
(ⅲ)等距投影:r=f×θ
(12)
(ⅳ)等角投影:
(13)
(ⅴ)正交投影:
(14)
由以上式子可以看出理想的魚眼成像模型的泰勒展開式都是奇次項,在θ接近0時,三次項以上的項可以忽略不計。隨著θ增大,高次項的作用越來越明顯。以上投影模型的泰勒展開式呈現(xiàn)出高度的一致性,故可以選擇一個一般的奇次多項式開擬合各種成像模型的參數(shù),定為r(θ),k1、k2、k3等代表成像模型系數(shù)。選擇多少次的模型取決于控制點數(shù)量,精度和特征點提取的精度。對于多項式擬合,次數(shù)越高,理論上也就越精確,但是需要一定數(shù)量和足夠高精度的觀測值。否則,高次項沒有意義。
魚眼鏡頭也存在非線性的對稱和非對稱畸變,對稱畸變可以由成像模型來修復,非對稱畸變可以通過增加適當?shù)膮?shù)來加以改正。
這里自然而然得從形式上給出不考慮非線性畸變的不同于經典模型的魚眼相機成像模型:
u=r(θ)×cos(φ)×mu+u0
(15)
v=r(θ)+sin(φ)×mv+v0
(16)
以上兩式中:(u,r)為像點坐標,θ為像點對應的光線入射角,φ為像點與主點的連線與像坐標系中u方向軸的夾角,(u0,v0)為主點坐標,mu為影像水平方向上單位長度所包含的像素個數(shù),mv為影像垂直方向上單位長度所包含的像素個數(shù)[6~9]。
特征點的提取在模式識別中有很多方法例如:二值分割,邊緣算子提取等,這里我們選用計算機視覺開源庫里OPENCV里的Canny算子進行圓形物邊緣的提取以便計算圓的中心[10]。Canny算子是John F. Canny1986年開發(fā)出來的一個多級邊緣檢測算法,實踐證明,這種邊緣檢測算法是眾多邊緣檢測算子中表現(xiàn)較突出的一種方法,下面我們詳細闡述特征點提取的步驟:
(1)對原圖進行中值濾波,然后用Canny算子提取邊緣,如圖3所示。
圖3 使用Canny算子得到的邊緣二值圖像
(2)人工選擇區(qū)域并且由計算機識別圓心,如圖4所示。
圖4 人工選取的區(qū)域,并由計算機自動識別的圓心(綠色環(huán)狀物)
對于主點(u0,v0)的初始值,可以由像片的長度和高度來決定,即:
(17)
式中:widht為影像以像素為單位的寬度,height為影像以像素為單位的高度,對于mu,mv,可以由像片大小,視場角和焦距算出,式中符號含義與前文相同:
(18)
對于5個投影參數(shù)k1、k2、k3、k4、k5,我們采用r=k1×θ+k2×θ3進行擬合。θ為0°~75°的等間隔采樣點(單位為弧度),投影半徑r=f×θ,并且暫時忽略k3、k4、k5。得到至少2個方程,解出k1、k2作為整體迭代求解的初始值。
由于魚眼影像的變形越靠近邊緣越大,我們只將離主點較近的9個圓心點作為像方點用二維DLT進行外參數(shù)的初始化。
(19)
(X,Y)為控制點坐標,(x,y)為相應的像點坐標,當控制點大于等于4個時,將式(18)線性化,通過線性方程求解二維DLT的8個參數(shù),由于8個參數(shù)是內外方位元素的函數(shù)值,由這8個參數(shù)解出外方位元素。當平面控制點的z坐標為0時,經典的共線方程可表示為式(19):
(20)
將式(20)轉化成式(21):
(21)
式中:λ=(a3×XS+b3×YS+c3×ZS)
比較式(19)與式(21),可得出以下8式:
(22)
由上式可得:
(23)
由上式最終可得到:
(24)
主點(x0,y0)與4.2節(jié)提到的主點(u0,v0)等同,f在前文4.2節(jié)已有論述。
(25)
通過sin(ω)=-b3可求得ω,再由旋轉矩陣的正交性:
(26)
由式(22),可得到:
(27)
XS,YS,ZS的初值可通過解(27)方程組得到。
觀測方程如下:
u=r(θ)×cos(φ)×mu+u0
(28)
v=r(θ)×sin(φ)×mv+v0
(29)
由4.2節(jié)求出的3個旋轉角可得到a1,a2,a3,b1,b2,b3,加上3個平移參數(shù)XS,YS,ZS,根據(jù)坐標齊次變換:
(30)
式(30)(X,Y)為物方坐標點,(x,y,z)為近似像空間坐標點:
(31)
式(19),式(20)建立了物方點和像方點之間的關系,由上述關系,對于每一對物方點和像方點可得間接平差的誤差方程:
v=Ax-L
(32)
式(32)中:A為觀測值對每個待求參數(shù)的偏導,V為殘差,L為觀測值減去近似值。對每一點對依次求出像點坐標對內參、外參、畸變系數(shù)的偏導數(shù)。但是這里對內外參求偏導數(shù)的解析式較為復雜。我們應用數(shù)值微分,通過8點的函數(shù)值求得近似偏導數(shù),由數(shù)值微分理論,求偏導數(shù)的精度可達o(x^4)。
最后用非線性鄰域里較為可靠的優(yōu)化方法L_M進行非線性最小二乘求解,此方法亦將“殘差平方和最小”作為準則進行優(yōu)化。
4.5.1 直接糾正
通過原影像坐標的反解,得到入射角θ和極角φ,再代入中心投影方程得到糾正后影像的坐標,由于重投影后,糾正影像的高度和寬度比原圖像大,會有空白點,可以對其進行格網插值,選擇雙三次卷積進行插值。
具體步驟如下:
求解多項式r=k1×θ+k2×θ3+…+k5×θ9的根,選擇合理的值φ=acos(x/r),注意r=0的情形;
4.5.2 間接糾正
直接糾正會導致糾正圖像上存有空白點,間接糾正是從糾正影像上的坐標點通過中心投影反算得到(θ,φ),再應用模型正算映射到原影像,通過雙三次卷積插值恢復其灰度。具體介紹其步驟:
基于MFC框架設計了一個從數(shù)據(jù)輸入到結果輸出操作過程流程化的工具,對算法進行了實現(xiàn),采用了University of Oulu的Juho Kannala and Sami S. Brandt提供的影像數(shù)據(jù),其相機為Watec 221S CCD color camera,魚眼鏡頭的焦距為 1.178 mm,糾正結果如圖5、圖6所示。
圖5 魚眼鏡頭拍攝的影像
圖6 其中一個通道進行糾正后的影像
對于糾正影像的精度,放棄了用觀測值殘差來評價,而直接用特殊物體幾何特征。選取糾正影像上共線的一組圓心坐標,進行直線擬合,得到的標準差為 0.415 7個像素,糾正精度達到了攝影測量的要求。