03顧及鏡頭畸變參數的像素坐標與像平面坐標相互轉換方法
來自專欄攝影測量學演算法研究與C語言實現4 人贊了文章
摘要:像素坐標和像平面坐標的相互轉換是數字攝影測量軟體開發過程中經常用到的一項基本變換,在核線重採樣、數字化測圖以及正射影像生成過程中均有所應用。像素坐標與像平面坐標相互轉換時,除用到影像內定向參數外,還須顧及鏡頭畸變參數。本文以常用的鏡頭畸變描述模型布朗模型為例,詳細介紹兩種坐標間的轉換方法,並給出C語言實現代碼。
在攝影測量中一般將攝影機簡化為針孔相機。在針孔成像模型中,來自地物的光線經鏡頭髮生折射後照射到承像介質(膠片、CMOS、CCD等)上,形成構象。攝影測量(顧名思義,先攝影后測量)在測量地物坐標時,將地物與構象間的光線進行逆轉,通過像點坐標(地物在影像上構象的坐標)反求成像時的光線,據此實現地物測量。然而,鏡頭在設計和加工過程中受工藝水平制約,很難做到穿過鏡頭的所有光線均像針孔相機所描述的那樣,直線傳播併到達承像片,而是存在一定的光路彎曲,使得實際成像點偏離了理想成像點。為了描述實際成像點與理想成像點之間的關係,常採用布朗模型,也稱作徑向複合畸變加薄稜鏡畸變模型。
式中,ki,i=1,2,3為徑向畸變參數,所描述的畸變數隨著像點p(x,y)與投影中心間距離的變化而變化,且具備各向同性,在距離投影中心相同的距離上畸變數與像點p在影像上的位置無關。Pi,i=1,2為切向畸變參數,是由於攝像機製造上的缺陷使得透鏡與圖像平面不平行而產生的。a為非正形參數,描述了成像面在行列兩個方向上的比例不一致情況。b為非正交畸變參數,描述了實際成像面為平行四邊形而非理想矩形時的參數。
根據布朗模型參數,代入實際成像時的像點坐標,可計算出實際成像點與理想成像點之差,與實際成像坐標相加可得到理想成像點坐標。
例如在空中三角測量區域網平差中,像點坐標觀測值是通過影像匹配方法獲得的,當被處理影像未經過畸變改正處理時,所得到的像點觀測值中包含了鏡頭畸變,此時需要按照上圖所示的代碼,將像點坐標做去畸變處理。
又例如在正射糾正時,正射影像上某一像素在攝影測量坐標系下的坐標為(X,Y,Z),代入共線條件方程可得其像點坐標(x,y),此時所得的像點坐標是按照針孔相機成像模型得到理想成像點坐標,而非實際成像點坐標,因此不能直接按照上圖代碼求取畸變改正量,而須採用迭代法求解。
通過多次迭代,可在理想成像點基礎上逼近實際成像點,從而求得正確的鏡畸變數。這樣的處理方法在核線重採樣,立體測量等作業步驟中同樣會用到,編程時務必注意,不可將來自共線條件方程的理想像點坐標直接代入畸變改正公式。
(1)傳統航攝儀畸變參數的常見方式
在傳統數字攝影測量時代,航攝儀採用的鏡頭是經過嚴格設計的,加工工藝也非常嚴謹,畸變一般較小,再加上它們都用膠片作為承像片,需要經過數字化掃描才能用於數字攝影測量,受數字化掃描儀解析度制約,掃描解析度較低。在這種條件下,因鏡頭畸變引起的像點位移通常較小,與像點觀測偶然誤差處於同一個級別,因此在內定向作業中經常忽略鏡頭畸變參數。有些航攝儀也會提供畸變參數,但不是按照布朗模型的參數給出的,而是採用了半徑和畸變數的方式。
r1 dr1
r2 dr2
… …
rn drn
也有採用入射角和畸變數方式的。
a1 da1
a 2 da2
… …
a n dan
當採用入射角和畸變數方式時,需要將入射角換算成半徑,r=r×tana,將其看作已知半徑和半徑所對應的畸變數。此時,只需使用布朗模型中的徑向畸變參數即可描述鏡頭畸變,由半徑和對應畸變數反求徑向畸變參數k的代碼如下。編程實現時需要特別注意的是,因畸變數較小,在相機檢定報告中一般以「微米」單位給出,而半徑通常以「毫米」單位給出,須注意量綱統一問題。
(2)無人機航空攝影測量畸變參數的常見方式
無人機航空攝影一般用家用數碼相機作為成像感測器,畸變數較大,但仍以徑向畸變為主。中國測繪科學研究院、武漢大學、航天遠景等科研院所和商業軟體開發商一般都直接提供了布朗模型參數,可以直接使用。在使用時需要注意報告中的度量單位,「像素」和「毫米」兩種度量單位都是比較常見的。在有些相機檢定報告中,主距f有兩數值,分別為fx和fy,一種方法是取f=(fx+fy)/2,另外一種方法取f=fy,a=(fx-fy)/fy。
結論:相機畸變模型中的自變數一般是實際成像時的像點坐標,實際成像像素坐標往理想成像坐標換算時,可將坐標值直接代入畸變公式,求解對應的畸變數,而將理想成像坐標換算為實際成像坐標時則須採用迭代求解法。
推薦閱讀: