安微微,武憶涵,王高峰
(1.貴州宇鵬科技有限責(zé)任公司,貴陽 550014;2.長安大學(xué) 信息工程學(xué)院,西安 710018)
近些年,計算機技術(shù)逐漸成熟,計算機圖像處理技術(shù)也在此基礎(chǔ)上取得了快速發(fā)展,應(yīng)用廣泛,逐漸與人們的生活密不可分。同時隨著移動通信技術(shù)日新月異的發(fā)展,人們對于視頻和圖像的清晰度、豐富度、大視野的需求也越來越高,同時對于視覺體驗要求也越來越多[1]。但是由于普通的單目相機鏡頭廣角的局限性,其只能獲取固定角度內(nèi)的視覺信息,無法覆蓋到所有的場景,因此一般的廣角鏡頭已經(jīng)不能滿足人們的需要,人們對監(jiān)控視角和圖像質(zhì)量要求越來越高。
基于此,為了獲取較大的視角,人們根據(jù)仿生學(xué),通過觀察魚在水中的成像原理發(fā)明了魚眼鏡頭。該鏡頭通常具有超過180°的視角。因其自身焦距極短的特性,一般小于等于16 mm,這為遠距離拍攝大范圍景物創(chuàng)造了條件,因此魚眼相機被認為是拍攝全景的利器。魚眼相機廣泛應(yīng)用于交通安全監(jiān)測、智能全景、醫(yī)療檢測以及車聯(lián)網(wǎng)等領(lǐng)域[2]。極限運動愛好者會利用魚眼鏡頭的廣視角去捕獲一系列動作,以達到強烈的視覺沖擊力及身臨其境的感覺;在目標追蹤任務(wù)中,通常的球機或者槍機方案無法避免人群遮擋的問題,從而導(dǎo)致追蹤不穩(wěn)定,但魚眼相機的頂視角安裝方式天然地緩解了該問題;無死角的攝像頭監(jiān)控正是利用魚眼鏡頭的廣視角特性,在不增加設(shè)備大小的前提下去捕獲更大的視角范圍。雖然魚眼鏡頭在許多場景下優(yōu)于普通的廣角鏡頭,其成像路徑完全不同于一般的小孔成像。針對普通針孔相機將三維點直接投影到歸一化平面上,魚眼相機則是先將三維點投影到單位球面,再將單位球面上的點投影到歸一化平面上。魚眼鏡頭采用非相似成像,在成像過程中引入畸變,通過對直徑空間的壓縮,突破成像視角的局限,從而達到廣角成像。由于魚眼鏡頭焦距較短以及其成像原理,導(dǎo)致顯示的圖像畫面除中心部分外的圖像邊緣會產(chǎn)生較為嚴重的畸變,這種畸變是明顯的桶形畸變,不符合現(xiàn)實視角以及人眼視覺觀測效果且不利于對魚眼圖像進行后續(xù)的處理,因此,如何對魚眼圖像進行畸變校正正成為國內(nèi)外研究熱點[3]。
魚眼鏡頭有4種投影模型:正交投影、等距投影、等立體角投影和體視投影[4]根據(jù)以上4種模型設(shè)計制作等立體角投影鏡頭。在復(fù)雜的棱鏡系統(tǒng)、相機幾何和圖像傳感器表面的共同累積作用下產(chǎn)生了畸變。因為一般魚眼相機模型的通用性不好,所以引入了畸變模型。而目前國內(nèi)外的主要畸變校正技術(shù)圍繞投影和標定方法:標定方法需要采用外部設(shè)備對鏡頭進行標定[5],獲取參數(shù)之后在進行后續(xù)的操作,對實驗設(shè)備要求較高,并且處理過程繁瑣,不適用于監(jiān)控系統(tǒng)的實時性;投影校正主要包括:球面投影,柱面投影,雙經(jīng)度校正,扇形校正等方法[6]。球面投影采用對多個球面上的點進行擬合,形成新的半徑,并且以此計算畸變校正參數(shù),該方法精度低,并且計算量大,魯棒性低并且對于魚眼圖像中出現(xiàn)的非線性特征點拉伸較為嚴重。柱面投影是將原始圖片采用圓柱方式進行投影,該算法雖然過程簡單,但是效果太差[7]。雙經(jīng)度校正首次提出是采用經(jīng)緯映射的方法進行校正設(shè)計,后文獻[8]對其進行改進,采用球面模型半徑大于魚眼圖像半徑的方法改進邊緣拉現(xiàn)象,但是過程較為復(fù)雜,不能同時滿足校正效果和監(jiān)控畫面實時性的要求[9]。而同樣,文獻[10]的扇形校正方法對圖像進行了區(qū)域分塊,但是對畫面整體性效果比較差。
因此,為保證魚眼鏡頭可以快速校正并實現(xiàn)實時性,本文擬提出一種新的魚眼圖像處理方法,首先采用投影模型進行坐標點變換,其次采用雙橢圓模型進行校正,利用雙線性插值生成固定的矩陣,并通過CUDA進行加速輸出達到實時效果,經(jīng)實驗結(jié)果證明,本算法能夠在保證校正效果的情況下達到實時輸出的結(jié)果,方法具有可行性。
在了解魚眼鏡頭原理前,先對相機坐標進行簡單介紹,在立體視覺和圖像處理方面[11],通常有4個坐標系分別是像素坐標系、圖像坐標系、相機坐標系和世界坐標系,如圖1所示。
圖1 坐標系
其中:OW-XW,YW,ZW為世界系坐標,描述相機位置,單位為m。OC-XC,YC,ZC為相機坐標系,光心為原點。o-x,y為圖像坐標系,光心為圖像中點,單位為mm。u,v為像素坐標系,原點為圖像左上角,單位為pixel。
4個坐標系相互聯(lián)系,轉(zhuǎn)換關(guān)系如下:
1)假設(shè)P(XW,YW,ZW)為世界坐標系一點,從世界坐標系轉(zhuǎn)化為相機坐標系屬于剛體變換:即物體不會發(fā)生形變,只會涉及到旋轉(zhuǎn)和平移,R表示旋轉(zhuǎn)矩陣,T表示偏移向量。如圖2(a)所示,因此轉(zhuǎn)換關(guān)系為:
圖2 相機轉(zhuǎn)換坐標示意圖
R:3*3,T:3*1
(1)
其中:XC,YC,ZC為世界坐標系對應(yīng)坐標。
2)從相機坐標轉(zhuǎn)換到圖像坐標系,屬于透視投影關(guān)系,采用投影方式進行坐標關(guān)系轉(zhuǎn)換,從3D轉(zhuǎn)換為2D。也可看作針孔模型的改變模型。如圖2(b)所示。
根據(jù)三角形相似原理,可以得到轉(zhuǎn)換關(guān)系為:
(2)
(3)
其中:x,y為圖像坐標系對應(yīng)坐標,f為魚眼鏡頭焦距。
3)而對于計算機而言,所處理的坐標系為像素坐標,如圖2(c)所示,與以上變換不同,該轉(zhuǎn)換沒有旋轉(zhuǎn)變換,但是坐標原點位置不一致,大小不一致,只有伸縮變換和平移變換。圖像坐標與像素坐標轉(zhuǎn)換關(guān)系為:
(4)
(5)
其中:u,v為像素坐標系對應(yīng)坐標。
因此,從上述可以看出,從世界坐標系轉(zhuǎn)化為像素坐標系關(guān)系如式(6)所示:
(6)
4)從相機坐標轉(zhuǎn)換到圖像坐標系,采用投影方式進行坐標關(guān)系轉(zhuǎn)換,從3D轉(zhuǎn)換為2D。
(7)
為了獲取更大的視角,使視野變大,因此采用魚眼鏡頭。一般魚眼鏡頭都是由幾個不同的透鏡組合而成的,在成像過程中,經(jīng)過不同程度的折射,使得更大視角的圖像投影到成像平面上[12]。但同時也伴隨著更大的畸變。一般情況下可以根據(jù)控制光線的路徑來設(shè)計各種各樣的鏡頭類型。魚眼相機先將三維點投影到單位球面,再將單位球面上的點投影到歸一化平面上。魚眼圖像的一般模型如圖3所示。
圖3 魚眼鏡頭投影模型
首先,將世界坐標系即真實空間一點經(jīng)過線性投影至魚眼鏡頭的三維坐標系中,其次,將魚眼鏡頭的點通過選擇投影方式投影至投影平面,最后顯示在圖像坐標上。正常相機通過投影會映射到圖像坐標系的m1點處,而魚眼相機采用不同的投影映射的方向,投影到m點處,在獲取更大視角的同時產(chǎn)生了畸變[13]。
1.2.1 魚眼鏡頭常用的投影模式
標準魚眼鏡頭通常由多層鏡片組成,故呈現(xiàn)出較為復(fù)雜的光學(xué)設(shè)計結(jié)構(gòu)。進入魚眼相機的光線經(jīng)過多次折射,通過相機的傳感器成像。
一方面,從數(shù)學(xué)理論角度進行分析:通過對魚眼相機的投影曲線進行擬合可以得到合適的數(shù)學(xué)公式來表示魚眼相機成像模型;另一方面,從光學(xué)原理角度進行分析:利用“非相似”成像機制,通過對物理空間進行擠壓,一定會引入無法避免的畸變(多為徑向的桶形畸變)來描述魚眼相機成像模型。主光線的路徑?jīng)Q定了光學(xué)系統(tǒng)畸變程度,所以圖像產(chǎn)生了一定程度的形變,但是處于三維空間的物和二維空間的像依舊是一一對應(yīng)的映射關(guān)系,保障了“非相似”成像機制的可行性。
在魚眼鏡頭進行圖像投影的過程中,比常用的投影方式有4種:等距投影、體視投影、等立體角投影、正交投影[14]。它們的投影模型分別如圖4(a)~(d)所示。成像模型實際上是為了用來描述入射角與成像像高之間的映射關(guān)系,等距投影是以線性關(guān)系來定義,等立體角投影模型是用正弦函數(shù)來定義,體視投影是以正切函數(shù)來定義。由于等距投影的線性關(guān)系、適用于大于180°的場景且價格親民的特點,因此本文算法主要采用等距投影進行校正。定義光線的入射角為θ,成像像高為r,對比4種成像模型的優(yōu)缺點。
圖4 魚眼鏡頭投影模型
1)等距投影:
r=fθ
等距投影成像模型中徑向距離與入射角呈單倍數(shù)的正比例關(guān)系,這個比例系數(shù)就是鏡頭焦距。在這種投影模型中,入射光線之間的角度相同時,保持其對應(yīng)各投影點之間的間距相同,這也是這個投影模型名稱的來源。同時這種模型還可以解決在小孔成像下入射角90°時圖像無限拉伸的問題。等距投影模型作為應(yīng)用最廣泛的魚眼相機成像模型,具有計算簡便、算法簡單、實時性強的優(yōu)點。本文也采用該成像模型。
2)體視投影:
這是一種保角不變投影模型,球形物面上的微小面元經(jīng)過體視投影后,其像仍然是一個小圓。因此這種投影模型對微小物體成像具有相似性。但是相似性帶來視場角不足的影響。體視投影對視角接近180°的圖像壓縮較小,成像面積小,畸變較大,價格昂貴。因此本文也不采用。
3)等立體角投影:
這也是魚眼相機常用的一種投影模型。在虛擬單位半球形面上兩個相等立體角的入射面,在成像平面上的兩個像的面積相同。等立體角投影圖像不失真,映射關(guān)系較為復(fù)雜,算法執(zhí)行速度較慢,不符合本文所要求的實時輸出效果。
4)正交投影:
r=fsinθ
這種投影方式帶來的畸變最大,對邊緣物體壓縮最厲害近180°處的圖像信息幾乎全部丟失。體視投影光心無限遠映射關(guān)系簡單,圖像中心畸變小邊緣圖像失真嚴重,僅適用于視角小于180°的場景,不符合本文大于180°視角的需求。
由于魚眼鏡頭的特殊成像原理,拍攝出來的圖像中心點畸變較小,由圓心向外擴展,畸變依次增加,在邊界處最為明顯[15],因此在產(chǎn)生最終圖像之前一定要進行畸變校正。采用單一傳統(tǒng)的球面校正模型,不能夠?qū)︳~眼畸變進行很好的校正,尤其是圖像邊緣位置校正效果尤為的差。因此在對傳統(tǒng)方法和一些文獻方法進行對比之后,本文提出一種新型校正方法,首先采用球面半徑擬合法進行邊界掃描,對魚眼圖像進行去黑邊處理。其次用邊緣檢測進行魚眼輪廓提取,對輪廓上多個點進行采樣,擬合出最符合實際情況的魚眼圖像的半徑和圓心,再采用雙橢圓模型進行校正處理,最后通過CUDA處理加速,實現(xiàn)實時輸出的效果[16-17]。
在實際的拍攝采樣中,魚眼相機并不是覆蓋全平面的,因此需要進行輪廓提取,本文所用的提取方法為橫縱遍歷法,周圍的黑色區(qū)域均為無效區(qū)域,在處理過程中應(yīng)先進行去除,利用無效區(qū)域各通道顏色值為0的特性,采用從上到下,從左到右提取出魚眼圖像。掃描臨界點如圖5所示。
圖5 魚眼圖像掃描過程
其中:A、B、C、D點分別為魚眼圖像的邊界值,經(jīng)過掃描可以去除空白無效區(qū)域,將處理后的魚眼圖像進行邊緣檢測,通過線性擬合的方式確定魚眼圖像的光心和半徑。如圖6所示。
圖6 邊緣檢測圖像
在本次的實驗過程中,采用的魚眼圖如圖7(a)和圖7(b)所示。
圖7 實驗示例圖
在邊緣檢測確定魚眼圖像之后,采用線性擬合進行半徑的確定。由于單次實驗存在數(shù)據(jù)的不確定性和不準確性,所以要在多次實驗之后,求取平均值,得出本次采用魚眼相機的半徑為925,光心坐標為(960,1 280)。
魚眼圖像經(jīng)過畸變校正需要經(jīng)過以下幾個步驟:
1)將像素坐標轉(zhuǎn)化為圖像坐標。
2)經(jīng)過雙橢圓映射關(guān)系進行三維坐標系轉(zhuǎn)化。
3)計算公式,得到原始圖像和校正圖像后的關(guān)系映射表。
4)采用雙線性插值得到目標圖像的灰度值。
5)根據(jù)輸出結(jié)果對半徑和光心進行微調(diào),達到最佳校正結(jié)果。
采用球面模型近似模擬魚眼圖像的復(fù)雜光學(xué)成像原理如圖8(a)所示,空間中一點P(x,y,z),根據(jù)光學(xué)成像和幾何原理,投影至半球面點P1(x1,y1,z1)位置,點P1垂直投影至XOY平面得到魚眼圖像上的點m(u,v)。
根據(jù)該球面投影模型,球面半徑為R,我們可知,若空間中存在一條直線,該直線在球面的投影為一半徑等于球面半徑R的大圓,在魚眼圖像上的投影為長軸等于球面半徑的橢圓。
根據(jù)該特點,我們可以在魚眼圖像上選取一條在實際空間為直線的弧線,在該弧線上選取多個點坐標信息,進行曲線擬合,曲線擬合的過程是求一條曲線使得所有的數(shù)據(jù)點都在該曲線附近,這樣一來,該曲線可以反映數(shù)據(jù)總體分布,而且不會出現(xiàn)較大的局部波動。曲線擬合可以反映被逼函數(shù)的特性,逼近函數(shù)和已知函數(shù)偏差在某種程度達到最小。如圖8(b)所示。利用最小二乘法進行線性擬合出橢圓的一般表達式,即可得到該弧線所在橢圓的數(shù)學(xué)表達示。根據(jù)橢圓長軸等于球面模型半徑,即可計算出橢圓半徑R的值。對比校正效果,對得到的半徑和光心進行微調(diào)找到最佳校正效果的光心和半徑。
如圖8(c)所示,目標圖像中的一點P(u,v),以點O為圓心建立直角坐標系,點P的坐標為:
(8)
過點P的兩條分別垂直于U軸和V軸的直線,根據(jù)圖8(d)中的球面模型,投影在球面上為兩個半徑為R的大圓。投影至魚眼圖像中為兩個交點為P2(x,y)、長軸等于R的橢圓,如圖8(e)所示。
根據(jù)幾何關(guān)系可計算出兩個橢圓的數(shù)學(xué)表達式,從而可計算出目標圖像點P(u,v)與它在魚眼圖像中的投影點P2(x,y)之間的映射關(guān)系:
(9)
(10)
(11)
其中:為橢球面投影至XOZ平面后與X軸的夾角,為橢球面投影這YOZ平面后與Y軸的夾角。
根據(jù)目標圖像點P(u,v)與它在魚眼圖像中的投影點P2(x,y)之間的映射關(guān)系,即可獲取畸變校正后的目標圖像。
常見的插值運算包括雙線性插值、最鄰近插值、雙三次插值等方法。雙線性插值,又被稱作雙線性內(nèi)插,是對兩個變量的插值函數(shù)的線性插值拓展。在兩個方向分別進行一次線性插值是雙線性插值的核心思想。目標圖的一個像素值根據(jù)源圖中虛擬點的4個真實的像素值決定;最鄰近插值作為最基本、最簡單的圖像縮放算法,計算量小,但是失真嚴重、效果差、插值生成的灰度圖像不連續(xù),在灰度變化明顯的地方呈現(xiàn)鋸齒狀;雙三次插值又被稱為立方卷積插值,該方法不是僅考慮4個相鄰點的灰度影響,而是根據(jù)待求像素點在源圖像中相鄰的16個像素點的值,其權(quán)重由該點到待求像素點的水平距離和垂直距離決定,但是計算成本高,算法復(fù)雜,實時性差。根據(jù)以上分析,雙線性插值兼顧插值效果和運算速度,故本文選用此法進行像素點填充[18-19]。
真實的圖像坐標系填充都是以整數(shù)坐標進行統(tǒng)計填充的,因此再得到魚眼圖像像素坐標與校正后坐標的對應(yīng)關(guān)系后,通過雙線性插值進行像素點填充[20]。
如圖9所示,假設(shè)所要求的像素值為P點像素值,通過Q11Q21Q12Q22坐標點的像素值,可以得到P點的像素值推導(dǎo)關(guān)系為:
圖9 雙線性插值
(12)
(13)
其中:f(x,y1)為R1像素值,f(x,y2)為R2像素值。
(14)
其中:f(x,y)為點P像素值。
為了能夠保障監(jiān)控畫面的實時輸出,采用GPU進行加速處理,將畸變校正處理的結(jié)果進行封裝成為映射表,如圖10所示,經(jīng)過CUDA處理,達到實時校正輸出結(jié)果的目的。圖片為映射關(guān)系轉(zhuǎn)換結(jié)果,映射表為x-x1,y-y1的對應(yīng)關(guān)系。
圖10 校正映射關(guān)系圖
為了驗證本文算法的實時性和校正圖像質(zhì)量,對多組不同的魚眼圖像進行了校正實驗,并且驗證了實時輸出時間。本文實驗平臺為Window 10 操作系統(tǒng),編程環(huán)境為VS2019,所用魚眼鏡頭是??低曯~眼系列鏡頭。原始魚眼圖像如圖11所示。
圖11 原始魚眼圖像
圖11為原始魚眼圖像,其中圖(a)為近距離拍攝方格圖;(b)為室內(nèi)實驗室場景圖;(c)為室外場景圖。
圖12是采用擬合校正方法分別對圖11(a)、(b)、(c)進行校正的結(jié)果圖,從圖12(a)、(b)、(c)中可以看出,擬合校正方法在對方格圖,近景,遠景的校正產(chǎn)生嚴重的拉伸,而對于原始拱形畸變,也是幾乎沒有改變,依然存在很大的畸變,不符合人體視覺效果。
圖12 擬合校正效果圖
圖13是采用文獻[8]方法進行畸變校正的結(jié)果圖,與傳統(tǒng)擬合校正方法相比較,該方法雖然解決了拉伸嚴重的現(xiàn)象,但是在圖像邊界處會出現(xiàn)新的畸變。該方法在邊緣處仍然產(chǎn)生很嚴重的畸變,且圖片中的燈以及一些直線也未能校正過來。如圖13(b)所示,該方法對真實場景進行畸變校正之后產(chǎn)生了空間扭曲,線性結(jié)構(gòu)破壞等問題,不能作為一種很好的魚眼圖像畸變校正方法。
圖13 雙經(jīng)度校正效果圖
圖14是采用文本算法即雙橢圓模型校正算法進行畸變校正的結(jié)果圖,圖14(a)為對方格圖片校正結(jié)果,可明顯看出,通過本文算法,對方格進行校正之后恢復(fù)了原始的真實情況,同時對線性結(jié)構(gòu)的校正效果也有明顯的提升;圖14(b)是對室內(nèi)魚眼圖像的校正結(jié)果,校正之后的圖像符合人眼的視覺體驗。圖14(c)為對室外場景的圖像校正,可以看出,本文算法對于室外大場景下的畸變依然有很好的校正效果,對圖中橋和建筑物處理之后,都恢復(fù)成現(xiàn)實世界的效果。
圖14 本文算法效果圖
通過對比可以看出,本文算法在校正效果上比傳統(tǒng)的擬合校正以及文獻[8]的方法有很大的改進。
視頻監(jiān)控除了要滿足人眼視覺效果之外,最重要的一點就是需要達到實時性,本文經(jīng)過對算法進行優(yōu)化,生成坐標變換映射表,通過GPU調(diào)用CUDA進行加速,處理一幀圖片所耗費時間為24 ms,能夠?qū)崟r輸出。
針對現(xiàn)有魚眼相機存在徑向畸變的問題,結(jié)合傳統(tǒng)方法,本文提出一種改進的雙橢圓畸變校正方法,在獲取得到魚眼圖像之后,通過掃描確定魚眼圖像范圍,經(jīng)過線性擬合判斷魚眼圖像的光心和焦距,其次通過投影映射關(guān)系,采用雙橢圓的模型進行校正,通過雙線性插值對新的圖像進行像素賦值,從實驗結(jié)果可以看出,本文提出的算法具有很強的兼容性和適應(yīng)性,對于室內(nèi)室外的近景遠景都有很好的校正效果。除此之外,本文還通過GPU,用CUDA進行加速,實現(xiàn)了校正之后魚眼相機的實時性,實現(xiàn)了現(xiàn)有環(huán)境下人們對監(jiān)控的視覺效果和實時輸出的兩大特性。