劉仁峰,龔俊斌,田金文
(1.華中科技大學(xué)圖像識別與人工智能研究所多譜信息處理技術(shù)重點實驗室,武漢 430074;2.中國艦船研究設(shè)計中心,武漢 430070)
線陣相機(jī)由于具有比普通面陣相機(jī)更大的視野和更高的精度,在多領(lǐng)域具有很強(qiáng)的實際意義。此外,線陣相機(jī)所獲取的1D數(shù)據(jù)比面陣相機(jī)獲取的2D圖像數(shù)據(jù)更容易運算,速度更快。在許多應(yīng)用場合,需要對線陣相機(jī)進(jìn)行標(biāo)定。有些方法需要多條線來進(jìn)行相機(jī)的標(biāo)定,有些方法需要三維立體靶標(biāo)進(jìn)行標(biāo)定[1],但是立體靶標(biāo)的制作成本較高,而且加工精度受到一定的限制。
對于面陣相機(jī),目前已經(jīng)有非常成熟的標(biāo)定方法[2-4]。線陣相機(jī)標(biāo)定的難點在于尋找成像點與靶標(biāo)點的對應(yīng),因為線陣圖像不能提取角點、線段等特征。本文使用包含多個二次曲線的平面作為靶標(biāo),這種靶標(biāo)制作簡單,而且對圍繞固定軸旋轉(zhuǎn)的線陣相機(jī)具有很好的標(biāo)定效果。由于這種相機(jī)各次成像時光心的相對角度是已知的,因此可以充分利用這些信息設(shè)計標(biāo)定方法。
針對繞固定軸旋轉(zhuǎn)的線陣相機(jī),首先研究如何將多幀線陣圖像排列成面陣圖像;其次,研究如何提取二次曲線并且根據(jù)二次曲線求解單應(yīng);最后,利用面陣相機(jī)的標(biāo)定方法進(jìn)行標(biāo)定,再從面陣相機(jī)的參數(shù)中提取出線陣相機(jī)的參數(shù)。
面陣相機(jī)的成像平面是一個平面,根據(jù)射影幾何,二次曲線在面陣相機(jī)上的圖像仍然是二次曲線[5-6]。本文研究的待標(biāo)定系統(tǒng)是繞固定軸旋轉(zhuǎn)的線陣相機(jī),通過研究它與面陣相機(jī)之間的聯(lián)系,能夠找到它們所拍攝圖像之間的等效轉(zhuǎn)換。
圖1示意了面陣相機(jī)與繞定軸旋轉(zhuǎn)的線陣相機(jī)。由圖1(b)可見,繞固定軸旋轉(zhuǎn)的線陣相機(jī)的成像面等價于一個圓柱面,因此,二次曲線的成像一般不是二次曲線。但是,通過適當(dāng)?shù)淖鴺?biāo)系轉(zhuǎn)換將線陣圖像上的點轉(zhuǎn)化到虛擬的成像平面,從而可以將線陣相機(jī)的成像變成二次曲線。
圖1 面陣相機(jī)與線陣相機(jī)的示意圖
首先,分析投影后u坐標(biāo)的變換。設(shè)通過線陣相機(jī)拍攝了 N幀線圖像,每次轉(zhuǎn)動的角度為w,w是已知的。從1~N之間任選第p幀作為參考幀,例如選擇 p為中間數(shù) p=(N + 1)/2,然后將第i幀線圖像的u坐標(biāo)定義為:
其中,c為任意正實數(shù)。
其次,分析投影后v坐標(biāo)的變換。需要將各幀線圖像在v0處對齊,并且對各幀進(jìn)行尺度縮放。圖 2示意了線陣圖像向虛擬成像平面上的投影。其中,點O、A、B、C對應(yīng)于圖1(b)中的各點,點E是線圖像上的某個點,點D是點E在虛擬投影面上的對應(yīng)點。
圖2 線陣圖像向虛擬成像平面上的投影
由圖2可得:BD/CE=OC/OB=OA/OB= sec(AOC),BD=CE×sec(AOC)。所以,第i幀線圖像的 v坐標(biāo)縮放尺度為:
式(1)~(3)給出了將線陣圖像的坐標(biāo)(i, v)到虛擬面陣圖像的坐標(biāo)(u′, v′)的轉(zhuǎn)化方法。將N次成像的v坐標(biāo)進(jìn)行適當(dāng)縮放,并按照相應(yīng)的u坐標(biāo)擺放,結(jié)果等價于面陣相機(jī)。于是線陣相機(jī)的標(biāo)定問題轉(zhuǎn)換為面陣的標(biāo)定問題,可以利用面陣相機(jī)已有的標(biāo)定方法。
設(shè)二維空間中的點記作向量 m =[u ,v]T,三維空間中的點記作向量 M=[X ,Y,Z]T,m和M分別是相應(yīng)的齊次坐標(biāo)。攝像機(jī)模型采用針孔模型,那么空間點M與圖像點m之間的關(guān)系為:
其中,s是尺度因子;[R , t ]稱作相機(jī)外參數(shù);A稱作相機(jī)內(nèi)參數(shù)。A可以寫成如下矩陣:
其中,(u0,v0)為主點的坐標(biāo),α和β分別為圖像 u坐標(biāo)和v坐標(biāo)的尺度因子。
文獻(xiàn)[2]提出了一種基于平面模板的相機(jī)標(biāo)定方法。該方法使用平面靶標(biāo),只要進(jìn)行2次或更多次的成像,然后分別計算圖像與靶標(biāo)之間的單應(yīng),就能夠計算出相機(jī)的內(nèi)外參數(shù)。使用的特征為角點。文獻(xiàn)[7-8]推廣了這種方法,他們使用二次曲線作為特征,根據(jù)二次曲線之間的對應(yīng)關(guān)系求解單應(yīng)。
本文的方法與文獻(xiàn)[7]的方法類似,但做了如下改進(jìn):(1)橢圓擬合,根據(jù)二次曲線計算單應(yīng)分別采用的是文獻(xiàn)[6, 9]的方法。由于這 2個環(huán)節(jié)都采用了具有閉合解的方法,因此計算效率高。(2)靶標(biāo)包含非同心的二次曲線,這樣可以消除單應(yīng)的歧義,并且使得估計的單應(yīng)更加準(zhǔn)確[10]。
當(dāng)估計出面陣相機(jī)的參數(shù)后,可以提取出線陣相機(jī)的參數(shù):β是線陣相機(jī)的尺度因子,v0是通過光軸在線陣圖像上的坐標(biāo)。將多幀線陣圖像排列成面陣圖像時,需要用到v0,而v0在標(biāo)定前是未知的。采用一個梯度下降的方法估計v0?;诙吻€的線陣相機(jī)標(biāo)定流程如下。
預(yù)備工作:
(1)打印一個靶標(biāo)圖案,圖案中包括3個或更多的二次曲線,將它貼在一個平面上。
(2)改變靶標(biāo)(或相機(jī))的位置進(jìn)行 2次或 2次以上成像。每次成像包含N幀線陣圖像,并且相鄰兩幀線陣圖像對應(yīng)的相機(jī)旋轉(zhuǎn)角度為w。
相機(jī)標(biāo)定的步驟:
(1)令k=0。設(shè)置v0的初始值為線陣圖像的中心坐標(biāo)=L /2,其中,L是線陣圖像像素數(shù)目。設(shè)置閾值ε和步長l。
(2)對于每次成像,依次做以下工作:
1)將多幀線陣圖像擺放成面陣圖像,見式(1)~式(3)。
2)從面陣圖像中擬合出二次曲線,估計參數(shù)[1]。
3)根據(jù)二次曲線的參數(shù),求面陣圖像與靶標(biāo)圖案之間的單應(yīng)矩陣[6]。
(3)根據(jù)步驟(2)求得的多個單應(yīng)矩陣,求解面陣相機(jī)的內(nèi)參數(shù)[2]。
(4) k←k+1。從面陣相機(jī)的參數(shù)中提取線陣相機(jī)的參數(shù) β(k)和v0(k)。
(5)若當(dāng)前標(biāo)定的v0值與前一次的標(biāo)定值相差很小,< ε,則結(jié)束。否則,令=+,返回步驟(2)。
為了檢驗相機(jī)標(biāo)定算法的有效性,設(shè)計了仿真實驗。線陣相機(jī)的參數(shù)設(shè)置如下:α=1 200,v0=511,圖像分辨率是1 024×1像素。相機(jī)每次轉(zhuǎn)動的角度為1.5°,轉(zhuǎn)動范圍為 45°,因此,相機(jī)在某個位置可以進(jìn)行31幀成像,選擇第16幀作為參考幀。
平面模板包含4個圓,半徑均為95 mm,圓心分別位于(100, 100)、(100, ?100)、(?100, 100)、(?100,?100),單位為mm。靶標(biāo)平面的方向用三維向量r表示(單位為°);位置由三維向量t表示(單位為mm)。實驗中進(jìn)行了3次測量,靶標(biāo)平面的方向與位置分別為:
圖3給出了仿真成像的結(jié)果。其中,圖3(a)是靶標(biāo)圖案;圖 3(b)~圖 3(d)是靶標(biāo)位于 3個不同位置得到的多幀線陣圖像。實心點代表原始的成像點,空心點代表坐標(biāo)變換后的成像點??梢钥闯?,排列后的面陣圖像可以很好地擬合出橢圓。
圖3 靶標(biāo)圖案和仿真成像
圖像上相應(yīng)的投影點位置加上均值為0、均方差為σ的高斯噪聲。將估計的相機(jī)參數(shù)與真實值比較。使用相對誤差評價α的精度,使用絕對誤差評價v0的精度。均方差σ的變化范圍從0.1像素~1.5像素。對于每個噪聲水平,實驗100次然后取平均值,實驗結(jié)果如圖4所示。可以看出,誤差與噪聲水平大致呈線性關(guān)系。當(dāng)均方差σ=0.5時(高于實際中的噪聲水平),α的相對誤差低于 0.4%,v0的絕對誤差低于1.5個像素。可見,本文的標(biāo)定方法精度較高,且魯棒性較強(qiáng)。
圖4 不同噪聲水平下的誤差
圖5給出了均方差σ為10個像素時,橢圓擬合與單應(yīng)估計的結(jié)果。圖5(b)畫出了將圖像根據(jù)單應(yīng)映射到靶標(biāo)上時的情況,靶標(biāo)圖案和映射后的圖像基本重合,說明單應(yīng)估計得比較精確。
圖5 橢圓擬合與單應(yīng)估計的結(jié)果
針對繞固定軸旋轉(zhuǎn)的線陣相機(jī),本文提出了一種基于二次曲線的相機(jī)標(biāo)定方法。靶標(biāo)上的圖案是3個或3個以上的二次曲線。該方法只需要攝像機(jī)在2個或2個以上不同的方位拍攝靶標(biāo)的圖像,相機(jī)和靶標(biāo)平面都可以自由移動。由于二次曲線自身包含有豐富的結(jié)構(gòu)信息,因此二次曲線之間的單應(yīng)不需要利用點的對應(yīng),特別適合線陣相機(jī)。
[1]Luna C A, Mazo M, Lázaro J L, et al.Calibration of Line-scan Cameras[J].IEEE Transactions on Instrumentation and Measurement, 2010, 59(8): 2185-2190.
[2]Zhang Zhengyou.A Flexible New Technique for Camera Calibration[J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 2000, 22(11): 1330-1334.
[3]吳福朝, 阮宗才, 胡占義.非線性模型下的攝像機(jī)自標(biāo)定[J].計算機(jī)學(xué)報, 2002, 25(3): 276-283.
[4]高立志, 方 勇, 林志航.立體視覺測量中攝像機(jī)標(biāo)定的新技術(shù)[J].電子學(xué)報, 1999, 27(2): 12-14.
[5]Hartley R I, Zisserman A.Multiple View Geometry in Computer Vision[M].2nd ed.Cambridge, UK: Cambridge University Press, 2004.
[6]Kannala J, Salo M, Heikkil? J.Algorithms for Computing a Planar Homography from Conics in Correspondence[C]//Proc.of British Machine Vision Conference.Edinburgh,UK: [s.n.], 2006.
[7]楊長江, 孫鳳梅, 胡占義.基于平面二次曲線的攝像機(jī)標(biāo)定[J].計算機(jī)學(xué)報, 2000, 23(5): 541-547.
[8]Ying Xianghua, Zha Hongbin.Camera Calibration Using Principal-axis Aligned Conics[C]//Proc.of the 8th Asian Conference on Computer Vision.Berlin, Germany:Springer-Verlag, 2007.
[9]Fitzgibbon A W, Pilu M, Fisher R B.Direct Least Squares Fitting of Ellipses[J].IEEE Transactions on Pattern Analysis and Machine Intelligence, 1999, 21(5): 476-480.
[10]Zhao Zijian, Liu Yuncai.Applications of Projected Circle Centers in Camera Calibration[J].Machine Vision and Applications, 2000, 21(3): 301-307.