乾貨|一文讀懂圖像局部特徵點檢測算法

2021-01-10 FlyAI

來FlyAI(flyaiwx),了解更多。

研究圖像特徵檢測已經有一段時間了,圖像特徵檢測的方法很多,又加上各種算法的變形,所以難以在短時間內全面的了解,只是對主流的特徵檢測算法的原理進行了學習研究。總體來說,圖像特徵可以包括顏色特徵、紋理特徵、形狀特徵以及局部特徵點等。其中局部特點具有很好的穩定性,不容易受外界環境的幹擾,本篇文章也是對這方面知識的一個總結。

1 局部特徵點

圖像特徵提取是圖像分析與圖像識別的前提,它是將高維的圖像數據進行簡化表達最有效的方式,從一幅圖像的M×N×3的數據矩陣中,我們看不出任何信息,所以我們必須根據這些數據提取出圖像中的關鍵信息,一些基本元件以及它們的關係。

局部特徵點是圖像特徵的局部表達,它只能反正圖像上具有的局部特殊性,所以它只適合於對圖像進行匹配,檢索等應用。對於圖像理解則不太適合。而後者更關心一些全局特徵,如顏色分布,紋理特徵,主要物體的形狀等。全局特徵容易受到環境的幹擾,光照,旋轉,噪聲等不利因素都會影響全局特徵。相比而言,局部特徵點,往往對應著圖像中的一些線條交叉,明暗變化的結構中,受到的幹擾也少。

而斑點與角點是兩類局部特徵點。斑點通常是指與周圍有著顏色和灰度差別的區域,如草原上的一棵樹或一棟房子。它是一個區域,所以它比角點的噪能力要強,穩定性要好。而角點則是圖像中一邊物體的拐角或者線條之間的交叉部分。

2 斑點檢測原理與舉例2.1 LoG與DoH

斑點檢測的方法主要包括利用高斯拉普拉斯算子檢測的方法(LOG),以及利用像素點Hessian矩陣(二階微分)及其行列式值的方法(DOH)。

LoG的方法已經在斑點檢測這入篇文章裡作了詳細的描述。因為二維高斯函數的拉普拉斯核很像一個斑點,所以可以利用卷積來求出圖像中的斑點狀的結構。

DoH方法就是利用圖像點二階微分Hessian矩陣:

Hessian矩陣行列式的值,同樣也反映了圖像局部的結構信息。與LoG相比,DoH對圖像中的細長結構的斑點有較好的抑制作用。

無論是LoG還是DoH,它們對圖像中的斑點進行檢測,其步驟都可以分為以下兩步:

1)使用不同的σ生成

模板,並對圖像進行卷積運算;

2)在圖像的位置空間與尺度空間中搜索LoG與DoH響應的峰值。

2.2 SIFT

2004年,Lowe提高了高效的尺度不變特徵變換算法(SIFT),利用原始圖像與高斯核的卷積來建立尺度空間,並在高斯差分空間金字塔上提取出尺度不變性的特徵點。該算法具有一定的仿射不變性,視角不變性,旋轉不變性和光照不變性,所以在圖像特徵提高方面得到了最廣泛的應用。

該算法大概可以歸納為三步:1)高斯差分金字塔的構建;2)特徵點的搜索;3)特徵描述。

在第一步中,它用組與層的結構構建了一個具有線性關係的金字塔結構,讓我們可以在連續的高斯核尺度上查找特徵點。它比LoG高明的地方在於,它用一階高斯差分來近似高斯的拉普拉斯核,大大減少了運算量。

在第二步的特徵點搜索中,主要的關鍵步驟是極值點的插值,因為在離散的空間中,局部極值點可能並不是真正意義上的極值點,真正的極植點可以落在了離散點的縫隙中。所以要對這些縫隙位置進行插值,然後再求極值點的坐標位置。

第二步中另一關鍵環節是刪除邊緣效應的點,因為只忽略那些DoG響應不夠的點是不夠的,DoG的值會受到邊緣的影響,那些邊緣上的點,雖然不是斑點,但是它的DoG響應也很強。所以我們要把這部分點刪除。我們利用橫跨邊緣的地方,在沿邊緣方向與垂直邊緣方向表現出極大與極小的主曲率這一特性。所以通過計算特徵點處主曲率的比值即可以區分其是否在邊緣上。這一點在理解上可以參見Harris角點的求法。

最後一步,即為特徵點的特徵描述。特徵點的方向的求法是需要對特徵點鄰域內的點的梯度方向進行直方圖統計,選取直方圖中比重最大的方向為特徵點的主方向,還可以選擇一個輔方向。在計算特徵矢量時,需要對局部圖像進行沿主方向旋轉,然後再進鄰域內的梯度直方圖統計(4x4x8)。

2.3 SURF

2006年,Bay和Ess等人基於SIFT算法的思路,提出了加速魯棒特徵(SURF),該算法主要針對於SIFT算法速度太慢,計算量大的缺點,使用了近似Harr小波方法來提取特徵點,這種方法就是基於Hessian行列式(DoH)的斑點特徵檢測方法。通過在不同的尺度上利用積分圖像可以有效地計算出近似Harr小波值,簡化了二階微分模板的構建,搞高了尺度空間的特徵檢測的效率。

SURF算法在積分圖像上使用了盒子濾波器對二階微分模板進行了簡化,從而構建了Hessian矩陣元素值,進而縮短了特徵提取的時間,提高了效率。其中SURF算法在每個尺度上對每個像素點進行檢測,其近似構建的Hessian矩陣及其行列式的值分另為:

其中Dxx,Dxy和Dyy為利用盒子濾波器獲得的近似卷積值。如果c(x,y,σ)大於設置的門限值,則判定該像素點為關鍵字。然後與SIFT算法近似,在以關鍵點為中心的3×3×3像素鄰域內進行非極大值抑制,最後通過對斑點特徵進行插值運算,完成了SURF特徵點的精確定位。

而SURF特徵點的描述,則也是充分利用了積分圖,用兩個方向上的Harr小波模板來計算梯度,然後用一個扇形對鄰域內點的梯度方向進行統計,求得特徵點的主方向。

3 角點檢測的原理與舉例

角點檢測的方法也是極多的,其中具有代表性的算法是Harris算法與FAST算法。

這兩個算法我都有專門寫過博文來描述其算法原理。Harris角點和FAST特徵點檢測。

3.1 Harris角點特徵提取

Harris角點檢測是一種基於圖像灰度的一階導數矩陣檢測方法。檢測器的主要思想是局部自相似性/自相關性,即在某個局部窗口內圖像塊與在各個方向微小移動後的窗口內圖像塊的相似性。

在像素點的鄰域內,導數矩陣描述了數據信號的變化情況。假設在像素點鄰域內任意方向上移動塊區域,若強度發生了劇烈變化,則變化處的像素點為角點。定義2×2的Harris矩陣為:

其中,Cx和Cy分別為點x=(x,y)在xx和y方向上的強度信息的一階導數,ω(x,y)為對應位置的權重。通過計算Harris矩陣的角點響應值D來判斷是否為角點。其計算公式為:

其中,det和trace為行列式和跡的操作符,m是取值為0.04~0.06的常數。當角點響應值大於設置的門限,且為該點鄰域內的局部最大值時,則把該點當作角點。

3.2 FAST角點特徵提取

基於加速分割測試的FAST算法可以快速地提取出角點特徵。該算法判斷一個候選點p是否為角點,依據的是在一個像素點p為圓心,半徑為3個像素的離散化Bresenllam圓周上,在給定閾值t的條件下,如果在圓周上有n個連續的像素灰度值大於I(p)+t或小於I(p)t。

針對於上面的定義,我們可以用快速的方法來完成檢測,而不用把圓周上的所有點都比較一遍。首先比較上下左右四個點的像素值關係,至少要有3個點的像素灰度值大於I(p)+t或小於I(p)t,則p為候選點,然後再進一步進行完整的判斷。

為了加快算法的檢測速度,可以使用機器學習ID3貪心算法來構建決策樹。這裡需要說明的是,在2010年Elmar和Gregory等人提出了自適應通用加速分割檢測(AGAST)算法,通過把FAST算法中ID3決策樹改造為二叉樹,並能夠根據當前處理的圖像信息動態且高效地分配決策樹,提高了算法的運算速度。

4 二進位字符串特徵描述子

可以注意到在兩種角點檢測算法裡,我們並沒有像SIFT或SURF那樣提到特徵點的描述問題。事實上,特徵點一旦檢測出來,無論是斑點還是角點描述方法都是一樣的,可以選用你認為最有效的特徵描述子。

特徵描述是實現圖像匹配與圖像搜索必不可少的步驟。到目前為止,人們研究了各種各樣的特徵描述子,比較有代表性的就是浮點型特徵描述子和二進帽字符串特徵描述子。

像SIFT與SURF算法裡的,用梯度統計直方圖來描述的描述子都屬於浮點型特徵描述子。但它們計算起來,算法複雜,效率較低,所以後來就出現了許多新型的特徵描述算法,如BRIEF。後來很多二進位串描述子ORB,BRISK,FREAK等都是在它上面的基礎上的改進。

4.1 BRIEF算法

BRJEF算法的主要思想是:在特徵點周圍鄰域內選取若干個像素點對,通過對這些點對的灰度值比較,將比較的結果組合成一個二進位串字符串用來描述特徵點。最後,使用漢明距離來計算在特徵描述子是否匹配。

4.2 BRISK算法

BRISK算法在特徵點檢測部分沒有選用FAST特徵點檢測,而是選用了穩定性更強的AGAST算法。在特徵描述子的構建中,BRISK算法通過利用簡單的像素灰度值比較,進而得到一個級聯的二進位比特串來描述每個特徵點,這一點上原理與BRIEF是一致的。BRISK算法裡採用了鄰域採樣模式,即以特徵點為圓心,構建多個不同半徑的離散化Bresenham同心圓,然後再每一個同心圓上獲得具有相同間距的N個採樣點。

由於這種鄰域採樣模式在採樣時會產生圖像灰度混疊的影響,所以BRISK算法首先對圖像進行了高斯平滑圖像。並且使用的高斯函數標準差σi與各自同心圓上點間距成正比。

假設在(N2)個採樣點中任意選取一對採樣點(pi,pj),其平滑後的灰度值分別為I(pi,σi)和I(pj,σj),則兩點間的局部梯度為:

假設把所有採樣點對構成的集合記為A,則

那麼短距離採樣點對構成的集合S以及長距離採樣點構成的集合L分別為:

其中,通常設置距離閾值為

δmax=9.75δ,δmin=13.67δ,其中δ為特徵點的尺度。

由於長距離採樣點對含有更多的特徵點角度信息,且局部梯度相互抵消,所以可以在集合L中計算出特徵點的特徵模式方向為:

然後將採樣模式圍繞特徵點旋轉角度α=arctan2(gy,gx),進而特徵描述子具有了旋轉不變性。

最後,在旋轉後的短距離採樣點集合S內,對所有的特徵點對(Piα,pjα)行像素灰度值比較,最終形成512比特的二進位字符串描述子。

4.3 ORB算法

ORB算法使用FAST進行特徵點檢測,然後用BREIF進行特徵點的特徵描述,但是我們知道BRIEF並沒有特徵點方向的概念,所以ORB在BRIEF基礎上引入了方向的計算方法,並在點對的挑選上使用貪婪搜索算法,挑出了一些區分性強的點對用來描述二進位串。ORB算法的詳細描述可以參考:ORB特徵點檢測。

4.4 FREAK算法

Fast Retina KeyPoint,即快速視網膜關鍵點。

根據視網膜原理進行點對採樣,中間密集一些,離中心越遠越稀疏。並且由粗到精構建描述子,窮舉貪婪搜索找相關性小的。42個感受野,一千對點的組合,找前512個即可。這512個分成4組,前128對相關性更小,可以代表粗的信息,後面越來越精。匹配的時候可以先看前16bytes,即代表精信息的部分,如果距離小於某個閾值,再繼續,否則就不用往下看了。

5 應用之圖像匹配

圖像匹配的研究目標是精確判斷兩幅圖像之間的相似性。圖像之間的相似性的定義又隨著不同的應用需求而改變。例如,在物體檢索系統中(找出含有亞伯拉罕·林肯的臉的圖像),我們認為同一物體的不同圖像是相近的。而在物體類別檢索系統中(找出含有人臉的圖像),我們則認為相同類的物體之間是相近的。

這裡局部特徵點的應用主要表現在第一種相似性上,也就是說我們需要設計某種圖像匹配算法來判斷兩幅圖像是否是對同一物體或場景所成的圖像。理想的圖像匹配算法應該認為兩幅同一物體的圖像之間相似度很高,而兩幅不同物體的圖像之間相似度很低,如下圖所示。

由於成像時光照,環境,角度的不一致,我們獲取的同一物體的圖像是存在差異的,如同上圖中的兩輛小車的圖像一樣,角度不同,成像就不同。我們直接利用圖像進行比較是無法進行判斷小車是否為同一類的。必須進行特徵點的提取,再對特徵點進行匹配。

圖像會存在哪些變換呢?一般來說包括了光照變化與幾何變化,光照變化表現是圖像上是全局或局部顏色的變化,而幾何變化種類就比較多了,可以是平移、旋轉、尺度、仿射、投影變換等等。所以我們在研究局部特徵點時才要求特徵點對這些變化具有穩定性,同時要有很強的獨特性,可以讓圖像與其他類的圖像區分性強,即類內距離小而類間距離大。

相關焦點

  • 圖像特徵點、投影變換與圖像拼接
    乾貨第一時間送達一、全景拍照中的投影變換在32. 鏡頭、曝光,以及對焦(下)中,我給你介紹了各種各樣的相機鏡頭,也介紹了視場角(FOV)這個概念。現在咱圖像特徵點、投影變換與圖像拼接們手機上的主攝像頭一般FOV是七、八十度左右,有的更小一些。但人類的視覺系統FOV可以達到
  • 深度學習與圖像識別 圖像檢測
    傳統的BP算法針對高維的數據也是效果不佳。 CNN等為什麼對圖像領域更加有效,因為其不但關注了全局特徵,更是利用了圖像識別領域非常重要的局部特徵,應該是將局部特徵抽取的算法融入到了神經網絡中。圖像本身的局部數據存在關聯性,而這種局部關聯性的特徵是其他算法無法提取的。
  • 圖像特徵點|SIFT特徵點之圖像金字塔
    ,但SIFT除了計算比較耗時以外,其他方面的優點讓其成為特徵點提取算法中的一顆璀璨的明珠。尺度不變特徵轉換即SIFT (Scale-invariant feature transform)是一種計算機視覺的算法。它用來偵測與描述影像中的局部性特徵,它在空間尺度中尋找極值點,並提取出其位置、尺度、旋轉不變量,此算法由 David Lowe在1999年所發表,2004年完善總結。
  • 圖像特徵點、投影變換與圖像拼接
    比如說上圖,其中我們選擇的點要求:在兩個視角中都很顯著在兩個視角中都容易檢測不會和其他的點混淆我們稱這種點為」特徵點「。有一種著名的角點檢測算法是"Harris Corner」檢測算法,其過程也非常容易理解:
  • 在醫學圖像分析中使用ICP算法進行點雲配準
    1.摘要在本文中,我們結合了ICP算法(一種基於3D尺度不變特徵變換的方法),對3D自由形式閉合的曲面(人類頭骨的3D模型)進行配準。不同於點和表面的配準,我們提出的基於ICP算法的方法可以更好地捕獲數據的整體性質,例如骨骼厚度。
  • 一文解析基於特徵點的視覺全局定位技術
    由於主流基於視覺定位算法的核心思想一脈相承,所以本文僅從一系列重要算法框架組件角度,介紹了目前實踐中最常用的、基於特徵點的全局定位算法,即在地圖坐標系下進行定位。本文省略了其中涉及到的優化、幾何約束公式推導,旨在給同學們一個定位算法的宏觀介紹,具體細節可以參考相關文獻和書籍。
  • 乾貨| 算法工程師入門第三期——黃李超講物體檢測
    前期傳送門:乾貨 | 算法工程師入門第一期——羅恆講深度學習乾貨 | 算法工程師入門第二期——穆黎森講增強學習(一)乾貨 | 算法工程師入門第二期——穆黎森講增強學習(二)因為計算機拿到的信息,是一系列的二進位數據,它描述了每個像素點的顏色強度,而計算機本身是比較困難將這些信息抽象成為一種比較高層語意的表達,去對應現實生活中的名詞概念。
  • 一文讀懂獨一無二的虹膜特徵識別
    一文讀懂獨一無二的虹膜特徵識別 Duke 發表於 2016-09-27 09:55:01   生物測定學是一種技術,這種技術是將獨特的人體特徵翻譯成數字編碼,這種編碼可以識別
  • 一文讀懂電容傳感器
    藍色標題,獲取文章】 >一文讀懂超聲波傳感器 8、一文讀懂位移傳感器 9、一文讀懂光電傳感器
  • 解密:面部特徵點檢測的關鍵技術
    面部特徵點定位任務即根據輸入的人臉圖像,自動定位出面部關鍵特徵點,如眼睛、鼻尖、嘴角點、眉毛以及人臉各部件輪廓點等,如下圖所示。另外一個很有趣的工作Supervised Descent Method(SDM),從另一個角度思考問題,即考慮如何使用監督梯度下降的方法來求解非線性最小二乘問題,並成功地應用在面部特徵點定位任務上。不難發現,該方法最終的算法框架也是一個級聯回歸模型。
  • 一文帶你讀懂計算機視覺
    這是一種機器學習模型,專門用於目標檢測的特徵提取。Haar分類器速度快但準確度低。請參閱:https://docs.opencv.org/3.4.3/d7/d8b/tutorial_py_face_detection.html 中有關於如何使用它的更詳細解釋和示例。
  • 2020「水下目標檢測算法賽」賽題解析——聲學圖像
    聲學圖像在水下目標檢測中探程遠、實用性強,針對「聲學圖像目標檢測」賽項,鵬城實驗室專門開設了 2 期在線直播課程,先後請到上海達華測繪有限公司專家李太春老師和河海大學、水下信息感知技術研究中心副主任霍冠英老師,為參賽者和算法愛好人士提供深入淺出的專業講座。
  • 「計算機視覺必讀乾貨」圖像分類、檢測,語義分割等方法梳理
    候選區域(region proposal) 候選區域生成算法通常基於圖像的顏色、紋理、面積、位置等合併相似的像素,最終可以得到一系列的候選矩陣區域。這些算法,如selective search或EdgeBoxes,通常只需要幾秒的CPU時間,而且,一個典型的候選區域數目是2k,相比於用滑動窗把圖像所有區域都滑動一遍,基於候選區域的方法十分高效。
  • 視頻圖像中文本的檢測、定位與提取
    只有通過挖掘構成視頻的各種媒質所表達的豐富語義信息,克服單純的視覺特徵語義表達能力較弱這一缺點,充分提取視頻中的高層語義,才能符合人們對視頻信息的理解習慣,實現實用的基於內容的視頻檢索系統。  文中針對水平和豎直排列的靜止及滾動文本,提出利用小波多尺度局部模極大值邊緣檢測算法來檢測文本圖像邊緣,利用形態學處理生成候選文本區域,用由粗到精的多次水平、豎直投影來定位精確的文本位置。然後,對於文本子圖用局部Otsu方法和區域填充處理進行文字二值化提取。
  • 霍夫變換——形狀特徵提取算法:車道線檢測
    霍夫變換是用來辨別找出物件中的特徵,例如:線條。他的算法流程大致如下,給定一個物件、要辨別的形狀的種類,算法會在參數空間中執行投票來決定物體的形狀,而這是由累加空間(accumulator space)裡的局部最大值來決定。理論上,霍夫變換就是對於原圖上的每一個直線都在參數空間畫一條線,最終找出參數空間變換線比較密集的地方在對應回到xy 空間坐標系。
  • 基於STFT濾波算法的指紋圖像識別系統的設計與實現
    本文在充分調研了目前的指紋預處理和特徵提取研究成果之後,分別針對指紋增強、指紋二值化和指紋特徵提取方面提出了三個新的算法,部分解決了目前指紋識別技術面臨的問題與挑戰,並且利用這些新的算法製作了一款指紋圖像識別系統。本文通過緒論、需求分析、系統設計、系統實現、系統測試一步步介紹指紋圖像識別技術在指紋識別系統中的應用情況。
  • 其於多尺度分析的紅外圖像邊緣特徵融合算法
    摘要:針對紅外圖像特點,採用基於正交小波變換的多尺度邊緣檢測方法,利用小波變換天生的多尺度特性,檢測出不同尺度、不同精度下的邊緣特徵,融合形成圖像邊緣。
  • 圖像工程師必備:人工特徵
    圖像自己哪知道自己有什麼特徵,都是人為給它安上的名頭。理論教育家給圖像的人工特徵定義為以下幾種:一,直方圖特徵,上次文章圖像的特徵介紹了直方圖特徵。顏色特徵一般通過直方圖特徵來展現。二,灰度邊緣特徵。圖像灰度在某個方向上的局部範圍內表現出的不連續性,這種灰度明顯變化點的集合稱為邊緣。這是邊緣的科學定義,大家可以理解嗎~不明覺厲有沒有~要我來說,你只要記著:邊緣如何體現,就是灰度差,所以我們把邊緣又叫做灰度邊緣。就可以了~而灰度邊緣特徵又進一步反映了圖像中目標所佔的面積大小和形狀。
  • 一種用於SLAM/SFM的深度學習特徵點 SuperPoint
    雖然過去了挺久,但是仍然是經典,值得學習這篇文章設計了一種自監督網絡框架,能夠同時提取特徵點的位置以及描述子。相比於patch-based方法,本文提出的算法能夠在原始圖像提取到像素級精度的特徵點的位置及其描述子。
  • 【乾貨】一文讀懂什麼是變分自編碼器
    我們知道,變分自編碼器是一種生成模型,在文本生成、圖像風格遷移等諸多任務中有顯著的效果,那麼什麼是變分自編碼器?它存在什麼問題?它有什麼改進算法?本文較為全面地講解了變分自編碼器的相關內容,分別介紹:標準變分自編碼器的結構、存在的問題以及相關的解決思路,並預測了變分自編碼器的改進方向,相信能給您的研究帶來一些啟發。