溫錦彬,黃 政
(中海油能源發(fā)展裝備技術有限公司南海工程分公司,廣東湛江 524057)
ORB 算法的操作步驟如下:①從圖像中查找關鍵點;②為每個關鍵點構建只包括0和1的二元特征向量;③通過多個特征向量對更大區(qū)域或特定對象進行識別。ORB 算法運算高效,同時不受噪點和圖像變換的影響,具有較高的準確性。
FAST 可以快速選擇關鍵點,算法步驟如下。(1)確定選定特征點的閾值參數(shù)h的數(shù)值。
(2)對圖像上任意一個像素點p而言,以點p為圓心的圓圈范圍中的16個像素,如果圓圈上灰度值小于lp-h(lp 即p 點灰度值)或灰度值大于lp+h的像素共計有8個以上,則將像素p選作關鍵點。
FAST 尋找關鍵點的效率較高,根本原因為其在確定關鍵點時僅將p與4 個等距像素進行比較,相比與16個周圍像素進行比較,效率提升了4 倍。由FAST 確定特征點算法可以看出,F(xiàn)AST 確定的關鍵特征點位于灰度有快速變化的區(qū)域,此類區(qū)域通常為某種邊緣[1]。
BRIEF 算法生成特征描述符的具體步驟如下。
(1)對圖像進行平滑處理,降低描述符對高頻噪點敏感性。
(2)對給定關鍵點,在以該關鍵點為中心的高斯分布范圍內抽取一個像素,將該點稱作關鍵點的一號點,標準差為σ。
(3)在以一號點為中心的高斯分布范圍內抽取一個像素,將該點稱作關鍵點的二號點,標準差為σ/2,這種選擇可以提高特征匹配率。
(4)為關鍵點構建二進制特征描述符,比較(2)和(3)得到的一號點和二號點的灰度值。如果一號點比二號點亮,則描述符中相應位分配值為1,否則分配值為0。
(5)對同一關鍵點選擇新的一號點和二號點,基于比較結果為特征向量中下個位分配1或0。
(6)對設定生成不同維度的具體程序,BRIEF 算法會重復對應次數(shù),產(chǎn)生指定長度的特征描述符。
BRIEF 算法可以為關鍵點構建二進制特征描述符,但不具備圖像縮放旋轉不變性,故不能直接用于要求較高的圖像匹配。為克服這一缺點,對BRIEF作下述改進。
1284 Relationship of learning burnout and subjective well-being of military medical university students and the mediating role of psychological capital
(1)縮放不變性。為使特征滿足縮放不變性,BRIEF 算法構建了圖像金字塔。圖像金字塔是單個圖像的多尺度表示,每個級別都由上個級別的下采樣版本組成[2]。下采樣是指圖像分辨率被降低,如圖像按1/2比例下采樣。因此一開始4×4正方形區(qū)域現(xiàn)在變成2×2正方形,圖像下采樣包含更少像素。
ORB 創(chuàng)建好圖像金字塔后,通過FAST 算法從各個級別圖像中快速找到關鍵點。金字塔每個級別由原始圖像更小版本組成,因此原始圖像中的任何對象在金字塔每個級別也會降低大小。通過確定每個級別的關鍵點,ORB 便實現(xiàn)了部分縮放不變性。
(2)旋轉不變性。為滿足特征旋轉不變性,ORB為每個關鍵點分配了一個方向,該方向取決于關鍵點周圍灰度的變化情況。在運算時ORB 首先選擇級別最低圖像,計算該圖像關鍵點的方向。首先計算以該關鍵點為中心的指定大小方框中的強度形心,將其作為給定區(qū)域平均像素灰度的位置。之后畫一條從關鍵點到強度形心的向量,獲得該關鍵點的方向。
為金字塔最低級別圖像中的每個關鍵點分配方向后,依次對其他級別圖像重復相同流程。需注意,在每個圖像金字塔級別,關鍵點周圍用于確認方向的區(qū)域大小并沒有縮減,因此相同區(qū)域在每個金字塔級別覆蓋的圖像區(qū)域將更大,導致關鍵點大小各不相同。
(3)使用修改后的BRIEF 版本創(chuàng)建特征向量。無論對象方向如何,其都可以為關鍵點創(chuàng)建相同向量,使得ORB 算法具有旋轉不變性。這意味著其可以在朝著任何角度旋轉的圖像中檢測到相同關鍵點。其操作步驟如下:①在給定關鍵點周圍的已界定區(qū)域中隨機選擇256個像素對,構建256維的位向量;②基于關鍵點方向角度對隨機像素對進行旋轉;③對比隨機像素對的亮度并相應地分配1和0,創(chuàng)建對應的特征向量。
高斯濾波器可以降低圖像中的噪點。濾波后的結果圖像中的紋理和次要細節(jié)、噪聲等得到有效抑制,僅留下圖像的邊緣和輪廓特征。得到不同尺度和不同高斯模板的降采樣高斯濾波結果后,已經(jīng)濾除了大部分無用信息,但圖像輪廓等特征信息有待進一步凸顯。為進一步削弱圖像無用信息、凸顯特征,對同一尺度下不同高斯模板濾波的圖像進行差分(兩兩相減)[4]。經(jīng)過差分得到的結果圖像相較于之前更能凸顯圖像特征,圖像無用成分進一步縮減,代表圖像特征的邊緣、輪廓成分被進一步凸顯。
在獲得高斯差分金字塔后,應利用高斯差分金字塔中的圖像特征信息確定圖像特征點。SIFT 算法選擇高斯差分金字塔中的極值點作為代表圖像特征的關鍵點。選出的高斯差分金字塔極值點只是候選特征點。雖然高斯差分金字塔極值點已經(jīng)能夠較好代表圖像特征并且具有尺度不變性,但在選取過程中沒有考慮圖像特征點對于圖像噪聲的魯棒性,這樣確定出的圖像特征點在實際應用時易出現(xiàn)圖像匹配不當?shù)葐栴}。
為提高圖像特征點對噪聲的魯棒性,SIFT 算法通常做法是對比測試和邊緣測試。對比測試是指為解決對比度較低的極值點,對所有極值點進行二階泰勒展開,如果結果值小于0.03,則剔除該關鍵點。邊緣測試是指使用二階海森矩陣(Hessian Matrix)來識別具有高邊緣度但對少量噪聲沒有魯棒性的關鍵點。
在建立高斯差分金字塔以選取圖像特征點時,算法考慮了關鍵點的尺度不變性。而對于圖像特征而言,與尺度不變性同等重要的還有旋轉不變性。為使算法定義圖像特征具有旋轉不變性,需要在定位特征點后對特征點定義“主方向”,該“主方向”生成特征點周圍局部區(qū)域的梯度方向基準,使圖像在旋轉后仍能與旋轉前保持相同特征描述。
算法將關鍵點指定大小領域中的所有點計算梯度方向與賦值,統(tǒng)計所有梯度方向對應的賦值和,作關鍵點周圍鄰域梯度方向直方圖。將梯度方向直方圖中最高數(shù)值對應方向作為關鍵點主方向,如果其他方向幅值達到主方向的80%,則將其作為輔方向。
得到特征點二維位置、尺度位置、主方向等具體信息后,需要解決的最后一個問題就是生成關鍵點信息的描述子,即用一個向量描述圖像中的特征點信息。算法將特征點周圍1 616鄰域分為4個88區(qū)域,再將88的區(qū)域劃為22區(qū)域,即每個小區(qū)域為44的范圍。統(tǒng)計每個44區(qū)域的梯度方向直方圖,對應生成128維向量(值為梯度方向的幅值)。該128維向量即該點的特征描述子。
BRISK 算法具有旋轉不變性、尺度不變性及較好魯棒性等[5]。在圖像配準應用中,BRISK 算法速度介于ORB 算法和SIFT 算法之間。在對模糊圖像進行配準時,BRISK 算法優(yōu)勢較為明顯。
BRISK 算法通過FAST9-16進行特征點檢測,可以有效解決尺度不變性問題。該算法需要在尺度空間進行特征點檢測,因此需要通過圖像金字塔方式對圖像進行多尺度表達。
(1)建立尺度空間。構造octave(八度)層和intra-octave(內部)層,對不同層分別采用ci和di進行表示。c0層是原圖像,c1層為c0層的2 倍下采樣,ci層為ci-1層的2倍下采樣。d0層是原圖像的1.5倍下采樣,d1層是d0層的2倍下采樣,di層為di-1層的2倍下采樣。在層數(shù)為4的情況下,可以在原圖像基礎上獲得8張圖,octave 層及intra-octave 層之間均為2倍采樣關系。
(2)特征點檢測。通過FAST9-16對上述8 張圖均進行角點檢測,可以得到具有角點信息的8張圖。再對原圖像開展一次FAST5-8角點檢測,疊加上述8張角點檢測圖,總共得到9張角點信息圖。
(3)非極大值抑制。明確特征點,要求其在26個鄰域點FAST 得分值最大,包括位置空間的8個鄰域點和尺度空間的18個領域點(上下兩層,每層9個鄰域點);此時得到的極值點較為粗糙,需要進一步精確定位。
(4)亞像素插值。在獲得圖像特征點位置和尺度信息之后,在極值點所在層位置及上下兩層相對應位置,對3個FAST 得分值分別沿x和y方向進行插值,獲得真正的得分極值點(特征點)及坐標信息。然后沿尺度方向進行插值,得到特征點尺度信息。
(1)高斯濾波。在獲得特征點坐標位置信息及尺度信息之后,需要對特征點進行描述。在均勻采樣情況下,以特征點為中心構建多個同心圓,對每個圓進行等間隔采樣,共得到N個采樣點(包括特征點)。這種采樣方法會導致混疊效應,為了避免該效應產(chǎn)生,需要對同心圓采樣點開展高斯濾波。特征點采樣和高斯濾波如圖1所示。
圖1 特征點采樣和高斯濾波
其中,采樣為實線圈;高斯濾波半徑與高斯方差成正比,為虛線圈,最終獲得高斯平滑后的N個采樣點(圖1中N=60)。
(2)局部梯度計算??紤]共有N個采樣點,兩兩組合共有N(N-1)/2種組合方式,所有方式集合構成采樣點對。在此基礎上分別定義短距離點對子集和長距離點對子集(L個),利用上面信息計算特征點的主方向。
(3)特征描述符。為了滿足旋轉不變性,以主方向為標準對特征點周圍的采樣區(qū)域進行旋轉,形成新的采樣區(qū)域,依然采用上述采樣模式進行采樣和局部梯度計算。BRISK 依然采用二進制方式生成特征描述符。采樣點共有N(N-1)/2種組合方式,因此生成包括N(N-1)/2個距離的集合,對短距離子集512個短距離點對進行二進制編碼,共得到512位的二進制編碼,即64個字節(jié)。
綜上所述,ORB 算法、SIFT 算法及BRISK 算法均是較為常用的視頻拼接中匹配點選取和標定算法,但是不同算法原理存在明顯差異,這從根本上決定了不同算法具有不同的適用性和優(yōu)缺點。在視頻拼接中需要基于實際需求進行合理選取,只有這樣才能獲得滿意的視頻拼接效果。