1. 程式人生 > >影象處理-常用特徵點檢測方法以及特徵描述子

影象處理-常用特徵點檢測方法以及特徵描述子

HOG(histogram of gradient)

sift(Scale-invariant feature transform)

  • sift是用於描述影象中的區域性特徵,在空間尺度中尋找極值點,並且提取出其位置、尺度、旋轉不變數,因此具有尺度和旋轉不變的性質。

演算法步驟

  • 構建尺度空間,使用高斯卷積核實現多尺度空間。
G(x,y,σ)=12πσ2e(x2+y2)/2σ2

σ越大, 做卷積時,尺度空間越大,對應低解析度下的粗糙尺度,σ越小,對應越細的尺度空間,使用DoG尺度空間進行關鍵點的檢測,

D(x,y,σ)=(G(x,y,σ)D(x,y,σ))I(x,y)
對於一幅影象,構建其影象金字塔,即對影象進行降取樣等操作,每次降取樣生成一個octave。因此使得sift在任意尺度都有對應的特徵點。
* 使用LoG近似DoG找到關鍵點:如果一個點在DoG尺度空間本層以及上下2層的6個領域中是最大值或者最小值時,則可以將該點視為影象在該尺度下的一個特徵點。極值點檢測可以使用NMS。
* 去除不好的特徵點:主要是在上面檢測得到的特徵點中,去除低對比度的特徵點以及不穩定的邊緣響應點。
* 給特徵點賦值一個128維的方向引數:利用關鍵點鄰域畫素的梯度方向分佈特徵為每個關鍵點指定方向引數,使運算元具有旋轉不變性。
* 綜上,每個關鍵點都有3個資訊:位置、尺度以及方向,因此可以確定1個sift特徵區域。將特徵向量進行歸一化,可以進一步去除光照變化的影響。

sift匹配

  • 給2張影象,首先得到其特徵點及sift特徵,之後進行相似度匹配,相似度最高或者閾值大於特定值的可以認為匹配成功,因此可以完成影象關鍵點的匹配。

參考連結

surf

  • surf與sift的演算法相似,只是sift演算法更加穩定,檢測得到的特徵點更多,但是sift的演算法複雜度也更大。surf的運算簡單,運算時間更短一些,在要求實時性的系統中,可以使用surf。
  • surf最大的特點是採用HARR特徵以及積分影象。

演算法描述

  • surf是首先使用Hessian卷確定特徵點候選點,然後使用NMS。主要流程如下
  • 對影象進行高斯濾波,這是為了使得特徵點具有尺度無關性。
  • 構建hessian矩陣:hessian矩陣的行列式為
    det(H)=2fx22fy2(2fxy)2

det(H)就是H矩陣的特徵值,可以使用其符號將所有點分類。在影象中,影象畫素值就是f,使用特定的卷積核計算二階偏導數,就可以得到H矩陣的3個元素。
* 尺度空間生成:sift中,是對影象進行尺度變換,filter不變;surf中保持影象大小不變,改變filter的尺度大小,提升特徵點檢測過程的速度和精度。同時,同一個octave中的影象用到的高斯模板尺度也不相同,演算法允許尺度空間多層影象同時被處理,不需要進行二次抽樣。
* NMS初步確定特徵點:對於得到的多尺度Hessian結果,將某一點及其26鄰域的hessian特徵值進行比較,如果是極大值或者極小值,就將其保留下來,否則不視為特徵點。
* 為了保證旋轉不變性,sift中是使用梯度直方圖統計,而surf中是統計特徵點領域內的Harr小波特徵,即統計特徵點為中心的60度扇形內所有點在x和y方向的haar小波響應總和,形成新的適量,遍歷整個圓形區域,選擇最長向量的方向作為特徵點的主方向。
* surf特徵描述運算元:在特徵點周圍選取正方形框,這個框的方向是特徵點的主方向,大小是20s(s是檢測到該特徵所在的尺度)。將box分為16個子區域,每個子區域統計25個畫素的水平和豎直方向的haar小波特徵,這裡x和y都是相對於主方向而言。該子區域的haar小波特徵為x方向值之和,x方向絕對值之和,y方向值之和,y方向絕對值之和。16個子區域最終可以形成1個64×1的特徵描述子。

參考連結

fast(Features From Accelerated Segment Test)

  • fast是一種快速的特徵點檢測方法,fast角點定義為:如果一個畫素與它周圍足夠多的畫素處於不同的區域,則該畫素點有可能是特徵點。主要步驟如下:
  • 選擇一個畫素點p,首先判斷它是否是特徵點。
    • 設定合適的閾值t
    • p的周圍選16個畫素點進行測試,如果這16個畫素點中連續n個畫素點的畫素值都大於I(p)+t或者都小於I(p)t,則將其視為特徵點。n常取9或者12。
    • 上述方法比較慢,一種可以用於加速的方法是首先判斷鄰域4個邊的頂點(1,5,9,13)是否有3個或者以上的畫素點滿足條件,有的話就繼續判斷,·否則該點不被視為特徵點。
  • 上述步驟存在一些問題
    • n<12時容易檢測出比較多的特徵點。
    • 角點檢測的效果取決於實際問題以及角點的分佈情況。
    • 沒有有效地利用角點檢測過程的資訊。(鄰域等資訊)
    • 有些部分可能會出現大量角點。
  • 上面的問題中,前面三個可以通過機器學習訓練的方法解決,後面可以通過NMS進行去除。
    *總結:fast相對於之前的sift或者surf,檢測特徵點的速度要快很多。

參考連結

brief(Binary Robust Independent Elementary Features)

  • brief特徵描述子中,每一位都是通過隨機選取的2個點進行比較得來的結果。在計算brief之前,首先需要對影象進行高斯濾波。它有幾個比較明顯的缺點。
    • 不具有旋轉不變性。
    • 不具有尺度不變性。
    • 對噪聲比較敏感。

orb(ORientedBrief)

  • 針對brief的問題,orb做了一些改進。
  • 對旋轉不變性的問題:orb使用了fast運算元用來進行特徵點檢測,通過矩計算特徵點的主方向,之後就可以沿著主方向提取brief運算元。
  • 對噪聲敏感的問題:brief中使用的是pixel之間進行比較,而orb中是使用patch的畫素和進行比較,可以使用積分圖加快運算速度。
  • orb沒有解決尺度不變性的問題,在一些實時處理視訊的應用中,可以使用啟發式的演算法去解決尺度不變性的問題。
  • ORB是sift的100倍,是surf的10倍。

相關推薦

影象處理-常用特徵檢測方法以及特徵描述

HOG(histogram of gradient) sift(Scale-invariant feature transform) sift是用於描述影象中的區域性特徵,在空間尺度中尋找極值點,並且提取出其位置、尺度、旋轉不變數,因此具有尺度和旋

【opencv】特徵檢測方法--GFTT,SIFT,FAST,SURF

一. 特徵點檢測方法總結 二.關於特徵點分析對比的相關論文 1.      有關特徵點:Shi-Tmoasi,SIFT,SURF 方法:基於opencv,通過RGB分解,比較特徵點的個數和魯棒性 2.      有關特徵點:FAST 方法:主要是

opencv筆記(1)——特徵檢測之ORB特徵提取

ORB演算法原理解讀 #include <iostream> #include "opencv2/core/core.hpp" #include "opencv2/features2d/features2d.hpp" #include "opencv2/highgui/hig

OpenCV特徵檢測------Surf(特徵篇)

Surf(Speed Up Robust Feature)Surf演算法的原理                                                                          1.構建Hessian矩陣構造高斯金字塔尺度空間其

第二篇:基於深度學習的人臉特徵檢測 - 資料與方法(轉載)

https://yinguobing.com/facial-landmark-localization-by-deep-learning-data-and-algorithm/ 在上一篇博文中,我們瞭解了人臉檢測與面部特徵點檢測的背景,並提到了當前技術方案存在特徵點位置不穩定的缺點,需要新的解決

影象處理常用插值方法總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

影象處理常用邊緣檢測運算元總結

       不同影象灰度不同,邊界處一般會有明顯的邊緣,利用此特徵可以分割影象。需要說明的是:邊緣和物體間的邊界並不等同,邊緣指的是影象中畫素的值有突變的地方,而物體間的邊界指的是現實場景中的存在於物體之間的邊界。有可能有邊緣的地方並非邊界,也有可能邊界的地方並

影象區域性特徵檢測演算法綜述

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

OpenCV特徵檢測匹配影象-----新增包圍盒

// OpenCV_sift.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include <iostream> #include <vector> #include "opencv2/core/core.hpp" #include "o

機器學習中的特徵——特徵選擇的方法以及注意

關於機器學習中的特徵我有話要說     在這次校園招聘的過程中,我學到了很多的東西,也糾正了我之前的演算法至上的思想,尤其是面試百度的過程中,讓我漸漸意識到機器學習不是唯有演算法,機器學習是一個過程,

OpenCV成長之路(9):特徵檢測影象匹配

特徵點檢測與影象匹配 稱興趣點、關鍵點,它是在影象中突出且具有代表意義的一些點,通過這些點我們可以用來識別影象、進行影象配準、進行3D重建等。本文主要介紹OpenCV中幾種定位與表示關鍵點的函式。 一、Harris角點 角點是影象中最基本的一種關鍵點,它是由影象中一些幾何

影象處理常用插值方法總結【轉】

常用的插值方法 1、最鄰近元法 這是最簡單的一種插值方法,不需要計算,在待求象素的四鄰象素中,將距離待求象素最近的鄰象素灰度賦給待求象素。設i+u, j+v(i, j為正整數, u, v為大於零小於1的小數,下同)為待求象素座標,則待求象素灰度的值 f(i+u, j+v) 如下圖所示

OpenCV: 特徵檢測影象匹配

特徵點又稱興趣點、關鍵點,它是在影象中突出且具有代表意義的一些點,通過這些點我們可以用來識別影象、進行影象配準、進行3D重建等。本文主要介紹OpenCV中幾種定位與表示關鍵點的函式。 一、Harris角點 角點是影象中最基本的一種關鍵點,它是由影象中一些幾何結構的關節

opencv3.1.0 特徵檢測影象匹配(features2d、xfeatures2d)

特徵檢測與匹配,在物體檢測,視覺跟蹤,三維重建等領域都有廣泛的應用。所以學習features2d、xfeatures2d中函式的使用,很有必要。 1、得到特徵點與特徵點描述(SIFT SURF ORB  AKAZE) (1)SIFT #include <opencv

影象處理常用邊緣檢測運算元

      Laplacian運算元一般不以其原始形式用於邊緣檢測,因為其作為一個二階導數,Laplacian運算元對噪聲具有無法接受的敏感性;同時其幅值產生算邊緣,這是複雜的分割不希望有的結果;最後Laplacian運算元不能檢測邊緣的方向;所以Laplacian在分割中所起的作用包括:(1)利用它的零交叉

深度學習影象處理(分類or檢測)中結果的評價方法-mAP簡介

多標籤影象分類(Multi-label Image Classification)任務中圖片的標籤不止一個,因此評價不能用普通單標籤影象分類的標準,即mean accuracy,該任務採用的是和資訊檢索中類似的方法—mAP(mean Average

常用檢測與角匹配方法比較

http://www.cnblogs.com/easymind223/archive/2012/10/02/2710466.html     最近這些日子,我在中科院實習了一段時間,收穫了很多寶貴的知識和經驗,也認識了一些朋友,在這裡感謝老師們對我的指導和建議。作為

一種人臉68特徵檢測的深度學習方法

該人臉68特徵點檢測的深度學習方法採用VGG作為原型進行改造(以下簡稱mini VGG),從資料集的準備,網路模型的構造以及最終的訓練過程三個方面進行介紹,工程原始碼詳見:Github連結 一、資料集的準備 1、資料集的採集 第二類是自己標註的資

影象特徵檢測與匹配評價——量化

歡迎轉載,轉載請註明出處,謝謝! 目前影象匹配中,區域性特徵匹配佔據了絕大部分,常用的區域性特徵匹配方法有Harris、SIFT、SURF、ORB等等,不同的特徵點檢測和匹配方法尤其獨特的優勢和不足; 特徵點匹配經過Ransac演算法優化後仍存在錯誤匹配點對

OpenCV計算機視覺學習(13)——影象特徵檢測(Harris角檢測,sift演算法)

如果需要處理的原圖及程式碼,請移步小編的GitHub地址   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/ComputerVisionPractice 前言   特徵點檢測廣泛應用到目標匹配,目標跟蹤,三維重建等應用中,在進行目標建模時會對影象進行目標特徵