徐一帆, 王新華, 張 廣, 王少鑫, 李明達(dá), 穆全全, 宣 麗, 李大禹*
(1. 中國科學(xué)院 長春光學(xué)精密機(jī)械與物理研究所, 應(yīng)用光學(xué)國家重點(diǎn)實(shí)驗(yàn)室,吉林 長春 130033;2. 中國科學(xué)院大學(xué),北京 100049; 3. 東北電力大學(xué) 計(jì)算機(jī)學(xué)院,吉林 吉林 132012;4. 吉林省農(nóng)村經(jīng)濟(jì)信息中心,吉林 長春 130033)
虛擬現(xiàn)實(shí)是一種能讓使用者擁有沉浸式體驗(yàn)的技術(shù)。通過該技術(shù),用戶能在虛擬的場景中有現(xiàn)實(shí)般的體驗(yàn)。近年來,虛擬現(xiàn)實(shí)技術(shù)快速發(fā)展,得到了廣泛應(yīng)用。在教育、宣傳展示、廣告、影視娛樂等領(lǐng)域,虛擬現(xiàn)實(shí)技術(shù)都得到了很好的應(yīng)用[1],展示了其優(yōu)點(diǎn)和巨大的應(yīng)用潛力。
全景相機(jī)是實(shí)現(xiàn)虛擬現(xiàn)實(shí)的重要工具之一,是能拍攝大角度、廣視場圖像的圖像采集設(shè)備。目前,已有很多廠商推出了全景相機(jī)設(shè)備。2015年,谷歌公司推出了由16個鏡頭組成的多鏡頭拼接式全景相機(jī)GoPro Odyssey。2016年,三星公司推出了雙魚眼鏡頭式全景相機(jī)gear 360。
720°全景相機(jī)是指能夠拍攝側(cè)面360°和上下360°全視角圖像的全景相機(jī)。其有拍攝視角大的優(yōu)點(diǎn)。但支架等遮擋物對其底部圖像的遮擋一直是720°全景相機(jī)的一個難以解決的問題。該問題導(dǎo)致采集到的全景圖像有遮擋,不完整。而有些應(yīng)用場景如記錄案發(fā)現(xiàn)場等對圖像完整性要求高,有些用戶希望得到更極致的宣傳效果或娛樂體驗(yàn),消除底部圖像中的遮擋,獲得完整的全景圖像對全景相機(jī)有很大的意義。
因此,本文設(shè)計(jì)一組可以分步拍攝的全景相機(jī),拍攝側(cè)面與頂部圖像后,在原處用魚眼鏡頭分兩次拍攝底部圖像。通過該方式,可以消除底部遮擋。但是,該方法需要分步拍攝,底部相機(jī)的拍攝時(shí)間與其他相機(jī)不同,受到光照變化等因素影響,底部相機(jī)采集到的圖像與其他相機(jī)采集到的圖像之間可能會有亮度、色彩的差異。全景相機(jī)不同、相機(jī)的拍攝角度不同,相機(jī)、鏡頭本身的特性不完全一致等原因也會造成這種差異。為了得到高清全景圖像,本文采用側(cè)面多鏡頭加頂部底部魚眼鏡頭的全景相機(jī)設(shè)計(jì)。該方案全景圖像清晰度較雙魚眼式全景相機(jī)更高,但會增大側(cè)面圖像與魚眼圖像的亮度、色彩差異。圖像之間的亮度、色彩的差異在合成全景圖像后會在全景圖像的拼接縫兩側(cè)出現(xiàn)明顯的亮度和色彩差異,會使拼接縫更加明顯,嚴(yán)重影響圖像美觀和視覺體驗(yàn)。因此,對底部圖像進(jìn)行勻色處理對提升全景圖像的圖像效果很有意義。
目前國內(nèi)外關(guān)于勻色算法的研究有很多。圖像的勻色算法主要包括Mask勻色算法、插值勻色法、Retinex算法、同態(tài)濾波勻色算法、Wallis勻色算法和直方圖匹配算法等[2-3]。2006年,李德仁等用Wallis變換對不同遙感影像進(jìn)行勻色[4],通過調(diào)整待處理圖像的均值和標(biāo)準(zhǔn)差,使之與參考圖像相應(yīng),提升了影像一致性。2016年,呂楠等針對全景圖像拼接過程中多幅圖像之間的亮度和色彩差異問題,提出了一種多相機(jī)圖像拼接勻色算法[5]。該算法基于顏色空間轉(zhuǎn)換,將RGB空間的圖像轉(zhuǎn)換到Y(jié)CbCr空間,再通過顏色調(diào)節(jié)因子進(jìn)行調(diào)節(jié),優(yōu)化了全景圖像的顏色一致性。2019年,李爍等提出了基于圖像自適應(yīng)分塊的勻色算法[6]。該算法通過分塊計(jì)算參數(shù)和插值,避免了圖像勻色過程中出現(xiàn)的塊效應(yīng),提升了遙感影像的勻色效果。由于全景相機(jī)拍攝的景物有不同的區(qū)域,不同區(qū)域的反射光不同,在圖像中的色彩有較大差異。在對全景圖像進(jìn)行勻色的過程中,基于全局的勻色算法會導(dǎo)致不同區(qū)域的圖像互相影響,造成勻色結(jié)果的偏差,不能達(dá)到理想的勻色效果。
針對上述問題,本文提出了一種基于分步拍攝的消除底部遮擋方法,通過側(cè)面和頂部一次拍攝和底部兩次拍攝消除底部遮擋,并提出了一種基于圖像分割的Wallis勻色算法調(diào)整全景圖像底部的亮度、色彩差異。經(jīng)實(shí)驗(yàn)驗(yàn)證,基于分步拍攝的消除底部遮擋方法效果良好,能夠較好地提升全景圖像的完整性和美觀度;基于圖像分割的Wallis勻色算法能夠較好地提升全景圖像亮度、色彩的一致性。
本文的全景相機(jī)主要分為3部分。如圖1所示,第一部分為側(cè)方及頂部成像部分,由10個朝向側(cè)方的相機(jī)、朝向頂部的魚眼相機(jī)和支架組成;如圖2所示,第二部分為底部成像部分,由朝向底部的魚眼相機(jī)和支架組成;第三部分為數(shù)據(jù)處理部分,由數(shù)據(jù)傳輸線、磁盤陣列、計(jì)算機(jī)組成,能夠傳輸、存儲和處理圖像。
圖1 全景相機(jī)側(cè)面及頂部成像部分Fig.1 Side and top imaging part of the panoramic camera
圖2 全景相機(jī)底部成像部分Fig.2 Bottom imaging part of the panoramic camera
為拍攝出完整的720°全景圖像,使用該全景相機(jī)采集圖像的過程包括以下步驟:先使用側(cè)方及頂部成像部分進(jìn)行一次拍攝,得到側(cè)面及頂部的圖像;再撤走側(cè)方及頂部成像部分,在原處擺放底部成像部分,進(jìn)行一次拍攝;最后移動底部成像部分,使魚眼鏡頭位置不變,支架在與之前位置相反的另一側(cè),再進(jìn)行一次拍攝。通過這種方式,采集到10張側(cè)面圖像,1張頂部魚眼圖像和2張底部魚眼圖像,可以用采集到的兩張底部圖像消除底部遮擋,獲得完整的全景圖像。
為合成完整的全景圖像,全景圖像合成的過程包括:將10張側(cè)面圖像拼接成側(cè)面全景圖像;利用兩張底部圖像拼接出完整的底部圖像;將底部圖像、頂部圖像與側(cè)面全景圖像拼接,生成720°全景圖像。本文所用的圖像拼接算法包括基于特征點(diǎn)的圖像匹配、光流法、圖像融合等步驟。
2.2.1 圖像匹配
為實(shí)現(xiàn)圖像的匹配,首先提取待拼接圖像的特征點(diǎn)[7-10],再建立變換矩陣,用隨機(jī)樣本一致(RANSAC)算法剔除誤匹配點(diǎn)[11],計(jì)算出最佳變換矩陣,最后將圖像變形后匹配。圖3為圖像匹配實(shí)例圖。
圖3 圖像匹配實(shí)例圖Fig.3 Image matching example diagram
2.2.2 光流法
光流法[12-13]是一種計(jì)算圖像之間像素運(yùn)動的算法。像素從一張圖像上的位置到下一張圖像上位置的向量被稱為光流。圖像區(qū)域內(nèi)所有像素的光流稱為光流場。使用該方法須滿足亮度恒定、空間一致、像素位移較小等條件。用基于特征點(diǎn)的圖像匹配方法進(jìn)行匹配后,再用光流法進(jìn)行拼接,可以生成雙目全景圖像,還可以使圖像拼接更自然流暢。
采用基于圖像塊匹配的光流計(jì)算方法。對于在一張圖像上像素點(diǎn),選取以它為中心的圖像塊,在另一張圖像尋找相匹配的圖像塊。定義一個損失函數(shù)以估計(jì)兩個圖像塊之間的匹配程度,以損失最小的圖像塊作為相匹配的圖形塊。以相匹配圖像塊之間的位移作為該點(diǎn)的光流矢量。由此得到光流場。為增加光流計(jì)算過程的穩(wěn)定性,通常使用多尺寸金字塔結(jié)構(gòu)。對原圖多次下采樣,得到尺寸更小的圖像,在原圖中較大的位移在多尺寸金字塔的上層變?yōu)樾∥灰啤T谏弦粚铀愕霉饬骱?,乘以系?shù),在下一層調(diào)整,獲得精確的光流量。
生成全景圖像,需要得到每個視角下的圖像。但是只拍攝了10個真實(shí)視角的圖像,因此,須在每個角度插值出一個該視角的像素列。計(jì)算從左右兩個不同視角拍攝圖像的重合區(qū)域的光流場。通過該光流場對每個視角插值。可視像素運(yùn)動與視角變化為線性關(guān)系,對視角β插值所用光流可用公式(1)計(jì)算:
(1)
其中:y′表示對視角β插值所用光流,y表示覆蓋視角β的兩張相鄰圖像間的光流,α0表示上一個真實(shí)視角,α1表示下一個真實(shí)視角。為達(dá)到雙目視覺效果,在生成左眼全景圖像和右眼全景圖像時(shí),分別增加一個向左的偏移量和一個向右的偏移量。用該光流對光流起始圖像變形即可得到視角β下的插值像素列。
2.2.3 圖像融合
圖像融合是實(shí)現(xiàn)拼接圖像過渡更流暢的圖像處理方法。常見的圖像融合算法有平均融合、加權(quán)平均融合、漸入漸出融合等[14]。加權(quán)平均融合即在重疊區(qū)域,以兩張圖像像素灰度值的加權(quán)平均值作為拼接后圖像的像素灰度值[15]。如公式(2)所示:
(2)
式中:f′(x,y)表示圖像融合的目標(biāo)灰度值,f1(x,y)、f2(x,y)分別表示兩張圖像的灰度值,g1、g2分別表示兩張圖像的非重疊區(qū)域,g′表示待融合區(qū)域,α為權(quán)重系數(shù)。其當(dāng)α=0.5時(shí)即為平均融合。漸入漸出融合即融合權(quán)重隨坐標(biāo)改變的融合方式,假設(shè)重疊區(qū)域坐標(biāo)為從x1到x2,則有:
(3)
本文采用漸入漸出融合方式進(jìn)行圖像融合。
2.2.4 底部圖像拼接
采集圖像后,得到了兩張帶有遮擋的全景圖像,遮擋區(qū)域分別在圖像的不同側(cè),如圖4所示。
對兩張圖像進(jìn)行圖像匹配。利用合適的掩膜刪去其中一張圖像的遮擋區(qū)域,拼接上另一張圖像的該區(qū)域,可以得到?jīng)]有遮擋的底部圖像,如圖5所示。
圖4 底部圖像Fig.4 Bottom image
圖5 消除遮擋后的底部圖像Fig.5 Bottom image after removing the occlusion
Wallis勻色法是一種相鄰圖像勻色方法,通過將待處理圖像的灰度值均值和標(biāo)準(zhǔn)差向參考圖像調(diào)整,實(shí)現(xiàn)拼接圖像色彩均勻,過渡流暢,如公式(4)所示:
(4)
式中:g(x,y)表示待處理圖像的像素灰度值;f(x,y)表示處理后的像素灰度值;mg表示待處理圖像的灰度值均值;mf表示參考圖像的灰度值均值;sg表示待處理圖像的灰度值標(biāo)準(zhǔn)差;sf表示參考圖像的灰度值標(biāo)準(zhǔn)差;b表示亮度系數(shù),b∈[0,1];c表示方差拓展系數(shù),c∈[0,1]。b取值從0到1表示將待處理圖像灰度值均值向參考圖像調(diào)整的程度;c取值1時(shí)表示將待處理圖像方差向參考圖像調(diào)整,取值越小,處理后圖像標(biāo)準(zhǔn)差越小。圖像勻色時(shí)一般希望將待處理圖像參數(shù)完全調(diào)整至與參考圖像相符。b、c取值為1時(shí)最接近實(shí)現(xiàn)這一目的。因此,通常情況下,b和c的值取1,則式(4)變?yōu)椋?/p>
(5)
圖像分割是一種將圖像按照特征分割成不同區(qū)域的過程。本文采用區(qū)域生長法[16]進(jìn)行圖像分割。區(qū)域生長法是一種根據(jù)鄰域相似程度進(jìn)行分割的圖像分割方法,能夠分割出圖像中具有相同或相似特征的區(qū)域。在圖像特征沒有已知規(guī)律可以參考的情況下,其較其他方法經(jīng)常有更優(yōu)的效果。
區(qū)域生長算法的基本思想是從種子點(diǎn)開始,通過生長準(zhǔn)則評判種子點(diǎn)和鄰域中的點(diǎn)是否性質(zhì)相近來擴(kuò)大區(qū)域[17]。如圖6所示,區(qū)域生長法的一般步驟為:第一步選定種子點(diǎn),令種子點(diǎn)屬于集合P;第二步判斷種子點(diǎn)鄰域中的點(diǎn)是否符合生長規(guī)則,令符合的點(diǎn)為新種子點(diǎn),并納入集合P,再根據(jù)生長規(guī)則對新種子點(diǎn)鄰域中不屬于集合P的點(diǎn)進(jìn)行判定;重復(fù)步驟二直至生長停止,集合P即為分割出的一片圖像區(qū)域。
圖6 區(qū)域生長法示意圖Fig.6 Schematic diagram of regional growth method
基于全局的勻色算法會導(dǎo)致圖像中差異較大的區(qū)域互相影響,造成勻色結(jié)果出現(xiàn)偏差。本文針對這一問題提出了一種基于圖像分割的勻色算法。將圖像分割成不同的區(qū)域,分別進(jìn)行勻色。
用區(qū)域生長法對待處理圖像和參考圖像進(jìn)行圖像分割。為減少高頻信息造成的分割結(jié)果的空洞,圖像分割時(shí)先對圖像進(jìn)行中值濾波以使圖像平滑。將分割結(jié)果作為模板,用Wallis勻色算法在LAB顏色空間對兩張圖像中的相應(yīng)區(qū)域進(jìn)行勻色。
本文對基于分步拍攝的消除720°全景相機(jī)底部圖像遮擋的方法進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)用相機(jī)為PointGrey工業(yè)相機(jī),相機(jī)視場角為96°,圖像分辨率為2 048×2 048。圖7為待拼接圖像。圖8為沒有消除底部圖像遮擋的全景圖像。可以看出,底部圖像有較大的區(qū)域被遮擋,嚴(yán)重影響了圖像的完整性和美觀。圖9為使用本文基于分步拍攝消除底部遮擋方法得到的全景圖像??梢钥闯觯瑘D像中沒有了底部被遮擋區(qū)域,圖像完整性和美觀程度有較大提升。
圖7 待拼接圖像Fig.7 Image to be stitched
圖8 未消除遮擋的全景圖像Fig.8 Panoramic image without occlusion removed
圖9 消除遮擋的全景圖像Fig.9 Panoramic image with occlusion removed
本文對基于圖像分割的勻色算法進(jìn)行了實(shí)驗(yàn)驗(yàn)證。實(shí)驗(yàn)所用的計(jì)算機(jī)處理器為inter(R) Core(TM) i5-7300HQ,操作系統(tǒng)為Windows10,開發(fā)環(huán)境為Python3.7,使用了開源庫Opencv3.4。圖10是未勻色的圖像,圖11是使用基于全局的Wallis勻色方法得到的結(jié)果,圖12是使用本文勻色方法得到的結(jié)果??梢钥闯觯唇?jīng)勻色處理的全景圖像,其圖像底部與其他區(qū)域有明顯的亮度、色彩差異。本文的勻色算法對提高全景圖像底部與其他區(qū)域的一致性有效,效果較基于全局的勻色算法有所提升。
圖10 未勻色的全景圖像Fig.10 Unprocessed panoramic image
圖11 基于全局的勻色結(jié)果Fig.11 Results based on the global approach
圖12 本文算法的勻色結(jié)果Fig.12 Results of the algorithm in this article
在底部圖像和側(cè)面圖像的重疊區(qū)域隨機(jī)選取若干組相應(yīng)的圖像塊,尺寸為100×100像素。用相應(yīng)圖像塊的灰度值差異評價(jià)勻色效果,如公式(6)、(7)所示:
(6)
Δmi=|m1i-m2i|,
(7)
式中:m1和m2分別表示兩個相應(yīng)圖像塊的均值;i表示通道;Δmi表示該通道的灰度均值差;Δm為Δmi的均方根,用來評價(jià)勻色效果。選取10組圖像塊,計(jì)算其均值,結(jié)果如表1所示。
表1 勻色效果定量評價(jià)Tab.1 Quantitative effect evaluation
使用本文方法勻色的圖像較未勻色圖像差異減小74.5%,較使用全局勻色方法勻色的圖像差異減小59.3%。
本文針對720°全景相機(jī)底部圖像存在遮擋的問題。提出了一種通過底部相機(jī)分步拍攝消除遮擋的方法。并針對底部相機(jī)分步拍攝可能造成的圖像亮度、色彩不一致的問題,提出了一種基于圖像分割的Wallis勻色算法。定量分析結(jié)果表明,使用本文算法勻色,圖像顏色差異較使用基于全局算法減小59.3%。實(shí)驗(yàn)證明,本文提出的分步拍攝消除全景圖像底部遮擋的方法效果良好,能夠較好地提升全景圖像的完整性和美觀度;提出的基于圖像分割的Wallis勻色算法能夠較好地提升全景圖像亮度、色彩的一致性。