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