劉裕拯
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
作為具有超廣視角的一種鏡頭,魚(yú)眼鏡頭早已融入我們的生活,經(jīng)其拍攝而得的魚(yú)眼圖像由于具有超廣視角,也在監(jiān)控、安防、醫(yī)療、航天、VR、影視制作等方面扮演重要角色。由于科技不斷進(jìn)步,相機(jī)生產(chǎn)成本不斷降低,廉價(jià)的民用消費(fèi)級(jí)魚(yú)眼相機(jī)已經(jīng)出現(xiàn),并擁有穩(wěn)定市場(chǎng)。除前述專(zhuān)業(yè)領(lǐng)域外,在短視頻、Vlog、直播等消費(fèi)領(lǐng)域?qū)︳~(yú)眼圖像矯正算法又提出了穩(wěn)定、快速、高質(zhì)量等新的需求。因此,研究比較魚(yú)眼圖像矯正算法具有一定實(shí)用價(jià)值和意義。
魚(yú)眼鏡頭是一種具有超廣視角的鏡頭。與一般的廣角鏡頭、超廣角鏡頭相比,在設(shè)計(jì)規(guī)格上,魚(yú)眼鏡頭的焦距更短、視角更廣(如表1)。因此在相同畫(huà)幅和像素尺寸的情況下,魚(yú)眼鏡頭所拍攝的圖像能夠容納更多的景物信息。
表1
魚(yú)眼鏡頭可以看作是一個(gè)球面,一副完整的魚(yú)眼圖像投影是一個(gè)圓形,而相機(jī)的CMOS傳感器成像面一般都是矩形,根據(jù)魚(yú)眼投影圓和成像面的幾何關(guān)系,可以將魚(yú)眼鏡頭分為三種,它們分別是圓形魚(yú)眼、桶形魚(yú)眼、全畫(huà)幅魚(yú)眼。由于這更多地涉及到相機(jī)規(guī)格而非魚(yú)眼鏡頭本身,所以在此不進(jìn)行贅述。因?yàn)閳A形魚(yú)眼鏡頭的成像是一個(gè)完整的圓形,包含全部投影信息,為了研究和行文方便,下文提到的所有魚(yú)眼鏡頭,都是圓形魚(yú)眼。
對(duì)于魚(yú)眼鏡頭本身,受限于鏡頭生產(chǎn)工藝,各家鏡頭生產(chǎn)廠商所生產(chǎn)出來(lái)的魚(yú)眼鏡頭一般都屬于以下四種魚(yú)眼鏡頭模型[1],它們分別是:正交投影模型、等距投影模型、等角投影模型、體視投影模型。其中,正交投影模型的映射關(guān)系如公式(1)所示:
其中,r表示成像平面上,對(duì)象相對(duì)于光軸(也就是圖像中心)的距離,f表示該鏡頭的焦距,e是入射光線與光軸的夾角。以下各式與之相同。這種模型的優(yōu)點(diǎn)在于映射關(guān)系較為簡(jiǎn)單,所生成的圖像,其中心位置畸變較小,更接近于廣角、超廣角鏡頭所成的像;其缺點(diǎn)在于,所成圖像邊緣位置畸變較大,且該模型能且僅能描述視角小于等于180°的場(chǎng)景,在接近180°視角附近的圖像嚴(yán)重失真。
等距投影模型的映射關(guān)系如公式(2)所示:
這種模型的優(yōu)點(diǎn)在于映射關(guān)系較為簡(jiǎn)單,能夠描述視角大于180°的場(chǎng)景。并且由于保證了角距離的線性關(guān)系,該種模型下的鏡頭也被用于測(cè)繪。大多數(shù)市售平價(jià)魚(yú)眼鏡頭使用的都是這種模型。
等角投影模型的映射關(guān)系如公式(3)所示:
這種模型的優(yōu)點(diǎn)在于保證了每一個(gè)像素在單位魚(yú)眼球面上的大小都是相同的,也能描述視角大于180°的場(chǎng)景,并且有比較好的透視效果。缺點(diǎn)在于其映射關(guān)系較為復(fù)雜,對(duì)接近180°視角附近的圖像在壓縮較大,并且通常情況下,這種魚(yú)眼鏡頭較為昂貴。
體視投影模型的映射關(guān)系如公式(4)所示:
這種模型也可以描述視角大于180°的場(chǎng)景,其優(yōu)點(diǎn)在于接近180°視角附近的圖像壓縮較小,可以獲得較為理想的邊界圖像。其缺點(diǎn)在于圖像中心部分成像面積較小、畸變較大,而且市售商品也較為昂貴。
由于鏡頭生產(chǎn)工藝等原因,實(shí)際圖像并不是嚴(yán)格按照魚(yú)眼鏡頭光學(xué)模型生成的,所以生成的魚(yú)眼圖像會(huì)包含畸變,畸變一般被分為兩種:徑向畸變、切向畸變[2]。其中,徑向畸變包括枕型畸變和桶型畸變,可以由公式(5)表示:
其中δxr表示在二維平面坐標(biāo)系中x軸上的徑向畸變距離,δyr表示在y軸上的徑向畸變距離。x、y為實(shí)際圖像坐標(biāo),r為半徑,k為徑向畸變參數(shù)。該公式通過(guò)多項(xiàng)式來(lái)近似準(zhǔn)確的徑向畸變,一般在計(jì)算中最多只取到6次。
切向畸變則包括薄透鏡畸變和離心畸變,其中薄透鏡畸變可以由公式(6)表示,離心畸變可以由公式(7)表示。
其中x、y與公式(5)中含義相同,s為薄透鏡畸變參數(shù),p為離心畸變參數(shù)。故切向畸變可以表示為這兩者之和??偦兗礊檫@三者之和。實(shí)際應(yīng)用中,由于切向畸變的影響較小,計(jì)算切向畸變的性?xún)r(jià)比較低,所以通常只計(jì)算徑向畸變。
既然魚(yú)眼鏡頭是按照一定的規(guī)格生產(chǎn)出來(lái)的,那么只要通過(guò)標(biāo)定的手段獲得魚(yú)眼鏡頭的參數(shù),就可以對(duì)該魚(yú)眼鏡頭生成的魚(yú)眼圖像進(jìn)行矯正了。相機(jī)標(biāo)定方法中,張正友標(biāo)定法具有一定代表性[3]。該方法利用了平面棋盤(pán)靶標(biāo),通過(guò)相機(jī)在不同位置拍攝不同姿態(tài)的多幅形似棋盤(pán)的黑白圓點(diǎn)圖像建立圖像上各個(gè)像點(diǎn)之間的對(duì)應(yīng)關(guān)系,并通過(guò)單應(yīng)矩陣與相機(jī)參數(shù)矩陣求解鏡頭參數(shù)。需要說(shuō)明的是,張正友標(biāo)定法本身并不是針對(duì)魚(yú)眼鏡頭設(shè)計(jì)的,在一般的相機(jī)鏡頭標(biāo)定中也經(jīng)常使用,這種方法比較大的缺陷在于,如果鏡頭的視角較大,則效果并不是很好,所以不能用于接近180°的魚(yú)眼鏡頭矯正。
針對(duì)大視角設(shè)備,Scaramuzza等人提出的全方位相機(jī)標(biāo)定法更為可靠,這種方法要求整個(gè)相機(jī)成像系統(tǒng)是一個(gè)中心系統(tǒng)、相機(jī)和鏡頭的光軸對(duì)齊并且均為軸對(duì)稱(chēng)結(jié)構(gòu),同時(shí)假設(shè)不存在鏡頭失真[4]。另外,馮為嘉等人的全方位視覺(jué)參數(shù)標(biāo)定方法在傳統(tǒng)標(biāo)定法的基礎(chǔ)上針對(duì)魚(yú)眼鏡頭進(jìn)行了改良[5]。該方法對(duì)光軸、鏡面到成像平面距離、徑向畸變參數(shù)進(jìn)行分別標(biāo)定計(jì)算,取得了較好的效果。這些方法都是通過(guò)一組特定的圖像經(jīng)過(guò)多項(xiàng)式計(jì)算求解相機(jī)參數(shù),對(duì)映射模型本身并沒(méi)有太大改進(jìn)。
2.1中的方法要求我們必須擁有魚(yú)眼相機(jī)本身,并且通過(guò)相對(duì)繁瑣的標(biāo)定流程獲得相機(jī)參數(shù)。但是實(shí)際情況中,我們可能只能得到一組魚(yú)眼圖像的數(shù)據(jù)集,并且并不能夠完整得知所有圖像的全部拍攝參數(shù)。這就要求我們從現(xiàn)成的魚(yú)眼圖像中直接求得一個(gè)相對(duì)可靠的映射關(guān)系來(lái)對(duì)圖像進(jìn)行矯正。例如通過(guò)射影不變性推算畸變前后直線部分的差別進(jìn)而進(jìn)行矯正[6],通過(guò)對(duì)魚(yú)眼球面添加經(jīng)緯映射模型進(jìn)行矯正[7],通過(guò)改進(jìn)經(jīng)緯模型添加雙經(jīng)度映射關(guān)系來(lái)解決橫縱兩個(gè)方向上的畸變等[8]。這些方法通過(guò)添加額外的約束條件,達(dá)到實(shí)現(xiàn)畸變校正的目的。
Kannala等人則通過(guò)多項(xiàng)式逼近來(lái)進(jìn)行映射模擬[9],這種方法的好處在于,可以根據(jù)實(shí)際需要調(diào)整多項(xiàng)式的次數(shù),只要增加多項(xiàng)式次數(shù),那么模擬效果就越好;同時(shí)由于只有多項(xiàng)式計(jì)算并沒(méi)有三角函數(shù)計(jì)算,對(duì)機(jī)器模擬也相對(duì)友好。
需要注意的是這些方法僅僅是對(duì)魚(yú)眼鏡頭模型的補(bǔ)充,并不是完全獨(dú)立的方法,雖然不能獲得精確的相機(jī)參數(shù),但是通過(guò)添加約束條件或使用多項(xiàng)式逼近方法,在限定條件下往往能取得較好的矯正效果。
現(xiàn)實(shí)世界中的光信號(hào)在宏觀上是連續(xù)的,我們通過(guò)相機(jī)獲得的數(shù)字圖像是離散的,因此不論采用上述哪一種魚(yú)眼矯正算法,在進(jìn)行圖像矯正的過(guò)程中都會(huì)遇到采樣的過(guò)程,這里對(duì)采樣和插值進(jìn)行簡(jiǎn)單說(shuō)明。采樣定理的香農(nóng)陳述為:對(duì)頻率域上帶寬有限的連續(xù)信號(hào),當(dāng)采樣頻率高于周期函數(shù)的頻率兩倍及以上時(shí),可以通過(guò)離散的采樣樣本恢復(fù)出原始的連續(xù)信號(hào)[10-11]。
這段陳述中,后半段關(guān)于采樣頻率的說(shuō)明較為容易理解,而前提條件則要求被采樣的對(duì)象只能是具有傅里葉變換的一類(lèi)數(shù)學(xué)函數(shù),這些函數(shù)在頻率域上必須擁有有限的帶寬,即其頻率在有限區(qū)域以外為零。當(dāng)不滿(mǎn)足采樣定理時(shí),采樣后的信號(hào)樣本在頻率域上就會(huì)重疊,在使用這些離散樣本信號(hào)恢復(fù)連續(xù)信號(hào)時(shí),就會(huì)使得被恢復(fù)出來(lái)的信號(hào)與原始連續(xù)信號(hào)不同,這種由于樣本頻譜重疊導(dǎo)致信號(hào)失真的現(xiàn)象被稱(chēng)為混疊現(xiàn)象。對(duì)相機(jī)模型來(lái)說(shuō),被采樣的光信號(hào)在頻率域上是帶寬無(wú)限的,因此我們不可避免地一定會(huì)遇到混疊,例如在拍攝具有網(wǎng)格狀紋理的物體時(shí),數(shù)字圖像上的紋理與原始紋理不一樣即是混疊的一種表現(xiàn)。
為了盡可能地抵抗混疊的發(fā)生,我們可以選擇盡量提高采樣頻率,顯然,實(shí)際上采樣頻率不可能無(wú)限高。因此在有限的采樣頻率下,我們需要人為地補(bǔ)充離散采樣點(diǎn)的數(shù)量,這種通過(guò)估計(jì)增加樣本數(shù)量的方法被稱(chēng)作插值。對(duì)相機(jī)模型而言,和切向形變一樣,選擇復(fù)雜插值算法的性?xún)r(jià)比并不高,因?yàn)楸慌臄z物體并不是總是擁有較為復(fù)雜的紋理特征,所以通常選擇較為簡(jiǎn)單的線性插值。
在實(shí)際應(yīng)用中,我們經(jīng)常通過(guò)個(gè)人觀感來(lái)判斷魚(yú)眼圖像是否矯正成功,缺少對(duì)魚(yú)眼圖像矯正算法效果的客觀評(píng)價(jià)方法。這里提出一個(gè)較為簡(jiǎn)單的流程以供參考:
(1)通過(guò)不同頻率的三角函數(shù)生成帶有較為復(fù)雜紋理的原始圖像T;
(2)使用一個(gè)固定的魚(yú)眼模擬函數(shù)將圖像T映射為魚(yú)眼圖像F;
(3)使用矯正算法對(duì)圖像F進(jìn)行矯正得到矯正后的圖像C;
(4)對(duì)圖像F和圖像C做差,即可評(píng)估步驟3中所使用的矯正算法。
本文介紹了魚(yú)眼鏡頭的光學(xué)模型和魚(yú)眼圖像會(huì)產(chǎn)生的畸變,同時(shí)介紹了一些魚(yú)眼圖像矯正算法,并根據(jù)混疊理論給出了評(píng)估矯正算法的流程以供參考??梢钥闯鲷~(yú)眼圖像矯正方法已經(jīng)較為完善,在抗混疊部分由于物理上的不可實(shí)現(xiàn)性導(dǎo)致并沒(méi)有較新的方法可以參考。另外,也未有和內(nèi)容識(shí)別相關(guān)的矯正算法,這使得我們并不能夠只矯正或者增強(qiáng)圖像的一部分,在應(yīng)用領(lǐng)域上尚有缺失。