楊 爽,潘 倩,楊 培,田 芳
(青海大學(xué)計算機技術(shù)與應(yīng)用系,青海 西寧 810016)
圖像拼接是將兩張或多張具有重疊區(qū)域的圖像拼成一幅無縫的全景圖或高分辨率圖像,其在無人機航拍、遙感圖像、增強現(xiàn)實、視頻壓縮和圖像穩(wěn)定等領(lǐng)域有著廣泛的應(yīng)用[1]。圖像拼接的主要步驟包括圖像預(yù)處理、圖像特征點檢測與配準(zhǔn)、圖像融合[2]。其中圖像特征點檢測與配準(zhǔn)中使用的特征描述符對圖像拼接至關(guān)重要,其性能直接影響拼接結(jié)果的質(zhì)量及拼接過程的時間開銷。
常用的基于特征的特征檢測方法中,Sift算子因?qū)πD(zhuǎn)、尺度變換、亮度變化等的穩(wěn)定性被廣泛應(yīng)用[3]。但Sift算子存在計算復(fù)雜度高、耗時長的問題[4-5]。Orb算子實時性能表現(xiàn)突出,但存在算法匹配精度低和特征點提取穩(wěn)定性差的缺陷[6-7]。Brisk算子是另一種具有較好實時性的特征描述算法,由Leutenegger在2011年提出[8]。相對于其他特征算法,Brisk算子對模糊圖像的拼接具有一定的優(yōu)勢[9],但在穩(wěn)定性和精度方面相對于Sift算子表現(xiàn)較差[10-11]。為提升基于Sift算子的圖像拼接性能,本文提出了一種基于Brisk和Sift的兩階段圖像拼接方法。
Sift(Scale-invariant feature transform)是一種局部性特征描述子,其在空間尺度中尋找極值點,并提取出位置、尺度、旋轉(zhuǎn)不變量。Sift特征檢測算法可概述為4部分:(1)建立高斯金字塔及差分金字塔;(2)進行DOG空間極值點檢測,并在其附近對其泰勒展開進行擬合,用于亞像素定位;(3)關(guān)鍵點鄰域像素的梯度方向分布特性為每個關(guān)鍵點指定方向參數(shù);(4)生成描述符。其中,為了使描述符具有旋轉(zhuǎn)不變性,需要為每一個關(guān)鍵點分配一個或多個基準(zhǔn)方向。高斯平滑圖像L在點I(x,y)處梯度的方向θ(x,y),梯度方向的計算如公式(1)所示:
(1)
Brisk(Binary Robust Invariant Scalable Keypoints)是一種二進制特征描述算子,算法主要包含特征點檢測、特征描述2步。首先,構(gòu)建尺度空間,并通過FAST9-16進行角點檢測,提取尺度空間中亞像素級精度的穩(wěn)定極值點。然后,利用局部圖像鄰域內(nèi)均勻采樣點對的距離關(guān)系進行二進制編碼,建立局部圖像的二值特征描述子。在提取特征點并對特征點進行描述的同時,計算該點鄰近區(qū)域的灰度差值,在任意選取的一對采樣點中估計部分區(qū)域的梯度變換,兩采樣點之間的梯度計算公式如下所示:
(2)
描述符生成需要應(yīng)用短距離點對集合S,與其他二進制描述符生成過程類似,對短距離點對隨機采樣生成512位的二進制串。
圖像拼接過程中,時間開銷主要取決于特征點檢測與特征點匹配兩個步驟。圖1為一組拼接圖像Sift特征點的檢測及匹配結(jié)果。由圖1可知,可成功匹配的特征點全部位于參考圖和待拼接圖的重疊區(qū)域,且可成功匹配特征點數(shù)目占參考圖和待拼接圖像檢出特征點的比例較低。由于Sift算子特征計算具有時間開銷大的特點,基于Sift算子的圖像拼接過程中,對非重疊區(qū)進行Sift特征點檢測和匹配增加了拼接過程的時間消耗。
圖1 拼接圖像Sift特征點的匹配示意Fig.1 Matching sketch of Sift feature points in stitching image
基于以上分析,本文提出一種結(jié)合Brisk和Sift的兩階段圖像拼接方法。圖2為本文方法的流程圖,其中第1階段用于實現(xiàn)對重疊區(qū)域的估計,第2階段對估計的重疊區(qū)進行基于Sift特征的圖像拼接。第1階段進行重疊區(qū)估計過程中,首先根據(jù)Brisk算子對模糊圖像魯棒的特性,對參考圖像及待拼接圖像進行均值濾波,該操作可有效降低Brisk特征點檢出數(shù)量。對濾波處理后的圖像進行Brisk特征點檢測及基于Brute Force、RANSAC及最小二乘方法的特征點匹配、篩選及單應(yīng)性矩陣估計,進而實現(xiàn)重疊區(qū)的大致估計。第2階段中,僅在第1階段獲取的重疊估計區(qū)域進行Sift特征點的提取。通過第1階段初步確定重疊區(qū)域后,可有效降低Sift算子檢測的區(qū)域面積,從而減少Sift特征檢測環(huán)節(jié)的時間開銷,提升整個拼接過程的效率。
圖2 本文算法流程Fig.2 Algorithm flow of this paper
本文基于Brisk和Sift的兩階段快速圖像拼接算法具體過程如算法1所示。
算法1 基于Brisk和Sift的快速圖像拼接輸入:參考圖像P1,待拼接圖像P2輸出:拼接圖像R1.使用均值濾波對P1、P2進行平滑得到P1′、P2′;2.使用Brisk對P1′和P2′進行特征檢測;3.使用Brute Force進行特征匹配;4.RANSAC剔除誤匹配,使用最小二乘法估算變換矩陣;5.生成參考P1和參考P2的透視變換矩陣;6.計算大致重疊區(qū)C1、C2;7.使用Sift對C1、C2進行特征檢測;8.檢測出的特征點坐標(biāo)定位到P1、P2;9.使用FLANN進行特征匹配;10.RANSAC剔除誤匹配,使用最小二乘法估算變換矩陣;11.生成參考P1的透視變換矩陣;12.計算出拼接圖像R。
對基于Sift特征提取的圖像拼接、基于Brisk特征提取的圖像拼接和基于本文算法的圖像拼接在pycharm 2019.3.3上進行仿真實驗,實驗機器為64位windows10系統(tǒng),內(nèi)存12 GB,處理器主頻2.50 GHz。本實驗選用了尺寸不同,重疊區(qū)占比不同的4組圖片進行算法性能測試,均為智能手機采集的真實場景圖。使用的最小尺寸為800*600,最大尺寸為4 000*3 000。
3.1算法效率分析基于Sift算子的圖像拼接,使用同本文算法的FLANN匹配器,RANSAC剔除誤匹配,最小二乘法估算變換矩陣?;贐risk的圖像拼接,使用同本文算法的Brute Force匹配器,RANSAC剔除誤匹配,最小二乘法估算變換矩陣。表1為在4組測試圖上Brisk算子與本文前處理中基于均值濾波的Brisk算子特征檢測及配準(zhǔn)耗時對比。實驗結(jié)果表明,未經(jīng)均值濾波的Brisk算子,在圖像尺度增大時,檢測到的特征點數(shù)激增,匹配耗時隨之增加。使用均值濾波對拼接圖像進行平滑,實現(xiàn)對圖像中重要紋理細(xì)節(jié)的篩選,能降低Brisk特征點的檢出數(shù)量,提升特征點的檢出質(zhì)量,提高特征檢測和配準(zhǔn)過程的精度及效率,實現(xiàn)了參考圖像及待拼接圖像重疊區(qū)的快速估計。
表1 Brisk算子與均值濾波基礎(chǔ)上的Brisk算法特征檢測及配準(zhǔn)耗時
表2為在4組測試圖上Sift算子與本文前處理基礎(chǔ)上的Sift算子特征檢測配準(zhǔn)耗時對比。由于本文的Sift算子只在重疊區(qū)上進行特征檢測,提取和配準(zhǔn)減少的時間開銷與重疊區(qū)面積成反比。在#3圖組中,由于重疊區(qū)面積占比較大,本文在前處理基礎(chǔ)上的Sift算子在特征檢測時間開銷相比之下減少較少。當(dāng)重疊區(qū)面積占比小時,本文算法可大幅度減少Sift算子在特征提取和配準(zhǔn)方面的時間開銷。
表2 Sift算子與前處理基礎(chǔ)上的Sift算子特征檢測及配準(zhǔn)耗時
為驗證本文算法對Sift算子的時間提升與重疊區(qū)域大小之間的關(guān)系,在3個拼接場景中進行實驗分析,每個拼接場景包含9組拼接圖像,重疊區(qū)域占比范圍為5.29%~81.83%,其中重疊區(qū)域占比的計算方法如公式(3)所示,C1w、C1h、Rw、Rh分別為重疊區(qū)寬度、重疊區(qū)高度、拼接圖寬度、拼接圖高度。
(3)
圖3為重疊區(qū)面積占拼接圖像面積比例與時間提升比例間的關(guān)系。如圖3所示,時間提升比例隨重疊面積增加逐步減少,重疊占比不高于30%時(重疊區(qū)面積占參考圖或待拼接圖的平均比例約50%),本文算法可獲得不小于30%的時間提升。
圖3 重疊面積對圖像拼接時間開銷的影響Fig.3 Effects of overlapping area on the image stitching time
表3為基于Sift特征提取的圖像拼接、基于Brisk特征提取的圖像拼接和基于本文算法的圖像拼接整體耗時對比。實驗結(jié)果表明,本文算法整體耗時開銷優(yōu)于Sift算子及Brisk算子,第一組測試圖像中,由于圖像尺度較小,對圖像整體特征提取及局部特征提取耗時區(qū)別不大,本文算法由于要做兩次圖像配準(zhǔn),整體耗時稍多于基于Sift算子的圖像拼接。
表3 基于Sift算子、Brisk算子與本文算法的圖像拼接整體耗時
當(dāng)測試圖尺度較大時,如第4組測試圖像,對測試圖整體進行特征提取與對局部進行特征提取的耗時可有較大的區(qū)分,基于Sift算子的圖像拼接整體耗時可得到明顯優(yōu)化。
3.2拼接效果分析圖4~圖7為3種算法在4個拼接場景上的拼接結(jié)果。其中圖像融合階段,重疊區(qū)像素使用了參考圖和待拼接圖對應(yīng)像素的最大值。圖4拼接結(jié)果中,由局部放大圖像可看出,圖4c和圖4d中,拼接縫附近的樓體下半部分均有輕微凸出。而本文算法拼接結(jié)果中(圖4e),樓體邊緣呈直線無明顯凸出。在圖5的拼接結(jié)果中,圖5c與圖5e都可以準(zhǔn)確地將落葉位置配準(zhǔn),畫面清晰,Brisk算子拼接結(jié)果(圖5d)在落葉位置存在重影的現(xiàn)象。在圖6的拼接結(jié)果中,放大拼接縫附近的樹枝枝干可看出,Brisk算子的拼接斷痕相對于Sift算子和本文方法較明顯。圖7為第4組拼接場景的拼接結(jié)果,其中,本文方法(圖7e)在拼接線處,小汽車的車身部分及車輪下方光斑處拼接效果明顯優(yōu)于Sift算法(圖7c)與Brisk算法(圖7d),拼接處只出現(xiàn)了輕微的錯位現(xiàn)象。本文算法由于對重疊區(qū)局部進行Sift特征提取,匹配及求解單應(yīng)性矩陣時可增加重疊區(qū)特征點的影響,進而取得更好的拼接效果。綜合3種算法在4組測試場景中的拼接結(jié)果可知,本文算法相較于Sift算子和Brisk算子,可對重疊區(qū)的物體邊緣等紋理豐富區(qū)進行更好的拼接,拼接結(jié)果重疊區(qū)的重影現(xiàn)象相對較弱,驗證了本文算法的有效性。
圖4 3種算法在#1上的拼接效果Fig.4 Stitching effects of three algorithms on #1
圖5 3種算法在#2上的拼接效果Fig.5 Stitching effects of three algorithms on #2
圖6 3種算法在#3上的拼接效果Fig.6 Stitching effects of three algorithms on #3
圖7 3種算法在#4上的拼接效果Fig.7 Stitching effects of three algorithms on #4
圖像拼接具有廣泛的應(yīng)用領(lǐng)域,圖像拼接中常用的特征檢測算子中,Sift算子相比Brisk算子具有更好的穩(wěn)定性[5,10-11],Brisk算子相比Sift算子具有更好的實時性,且對于較大模糊圖像有良好表現(xiàn)[9]。為降低Sift算子在圖像拼接中特征檢測和特征配準(zhǔn)的時間開銷,本文提出了一種基于Brisk的Sift特征檢測圖像拼接算法,使用Brisk算子在進行了均值平滑的測試圖上進行特征檢測及配準(zhǔn),快速提取重疊區(qū)域;再使用Sift算子在重疊區(qū)域上進行特征提取并配準(zhǔn),減少Sift算子計算的面積,以此降低時間開銷。為驗證本文算法的有效性,使用智能手機采集的4組不同尺寸的測試圖,對基于Sift算子、Brisk算子、本文算法的圖像拼接進行了算法效率及拼接效果對比實驗分析。實驗結(jié)果表明:(1)在引入了Brisk算子的前處理后,本文的Sift算子在特征檢測及配準(zhǔn)方面時間開銷要少于Sift算子及Brisk算子。當(dāng)重疊區(qū)面積占比較小而測試圖尺寸較大時,時間開銷方面的優(yōu)化尤其明顯。(2)本文算法保留了Sift算子在特征檢測方面的穩(wěn)定性及精準(zhǔn)度[3],拼接圖整體效果優(yōu)于Sift算子及Brisk算子。當(dāng)重疊區(qū)域面積占比較小而測試圖尺寸較大時,本文算法相比之下可取得更好的拼接效果。
本研究從降低Sift算子在圖像拼接特征檢測及配準(zhǔn)方面的時間開銷的角度,提出了一種基于Brisk的Sift特征檢測圖像拼接算法,為實現(xiàn)Sift算子的快速檢測配準(zhǔn)提供了算法。但如何實現(xiàn)前處理中均值濾波的自適應(yīng),仍有待進一步研究。