當前位置:首頁 » 操作系統 » sift演算法原理

sift演算法原理

發布時間: 2023-08-01 06:17:37

1. OpenCV+Python特徵提取演算法與圖像描述符之SIFT / SURF / ORB

演算法效果比較博文

用於表示和量化圖像的數字列表,簡單理解成將圖片轉化為一個數字列表表示。特徵向量中用來描述圖片的各種屬性的向量稱為特徵矢量。

參考
是一種演算法和方法,輸入1個圖像,返回多個特徵向量(主要用來處理圖像的局部,往往會把多個特徵向量組成一個一維的向量)。主要用於圖像匹配(視覺檢測),匹配圖像中的物品。

SIFT論文
原理
opencv官網解釋
實質是在不同的尺度空間上查找關鍵點(特徵點),並計算出關鍵點的方向。SIFT所查找到的關鍵點是一些十分突出,不會因光照,仿射變換和噪音等因素而變化的點,如角點、邊緣點、暗區的亮點及亮區的暗點等。

尺度不變特徵轉換(Scale-invariant feature transform或SIFT)是一種電腦視覺的演算法用來偵測與描述影像中的局部性特徵,它在空間尺度中尋找極值點,並提取出其位置、尺度、旋轉不變數。
其應用范圍包含物體辨識、機器人地圖感知與導航、影像縫合、3D模型建立、手勢辨識、影像追蹤和動作比對。

對現實中物體的描述一定要在一個十分重要的前提下進行,這個前提就是對自然界建模時的尺度。當用一個機器視覺系統分析未知場景時,計算機沒有辦法預先知道圖像中物體的尺度,因此我們需要同時考慮圖像在多尺度下的描述,獲知感興趣物體的最佳尺度。圖像的尺度空間表達指的是圖像的所有尺度下的描述。

KeyPoint數據結構解析

SURF論文
原理
opencv官網解釋
SURF是SIFT的加速版,它善於處理具有模糊和旋轉的圖像,但是不善於處理視角變化和光照變化。在SIFT中使用DoG對LoG進行近似,而在SURF中使用盒子濾波器對LoG進行近似,這樣就可以使用積分圖像了(計算圖像中某個窗口內所有像素和時,計算量的大小與窗口大小無關)。總之,SURF最大的特點在於採用了Haar特徵以及積分圖像的概念,大大加快了程序的運行效率。

因為專利原因,OpenCV3.3開始不再免費開放SIFT\SURF,需要免費的請使用ORB演算法

ORB演算法綜合了FAST角點檢測演算法和BRIEFF描述符。

演算法原理
opencv官方文檔
FAST只是一種特徵點檢測演算法,並不涉及特徵點的特徵描述。

論文
opencv官方文檔
中文版
Brief是Binary Robust Independent Elementary Features的縮寫。這個特徵描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特徵點附近隨機選取若干點對,將這些點對的灰度值的大小,組合成一個二進制串,並將這個二進制串作為該特徵點的特徵描述子。文章同樣提到,在此之前,需要選取合適的gaussian kernel對圖像做平滑處理。

1:不具備旋轉不變性。
2:對雜訊敏感
3:不具備尺度不變性。

ORB論文
OpenCV官方文檔

ORB採用了FAST作為特徵點檢測運算元,特徵點的主方向是通過矩(moment)計算而來解決了BRIEF不具備旋轉不變性的問題。
ORB還做了這樣的改進,不再使用pixel-pair,而是使用9×9的patch-pair,也就是說,對比patch的像素值之和,解決了BRIEF對雜訊敏感的問題。
關於計算速度:
ORB是sift的100倍,是surf的10倍。

對圖片數據、特徵分布的一種統計
對數據空間(bin)進行量化

Kmeans

邊緣:尺度問題->不同的標准差 捕捉到不同尺度的邊緣
斑點 Blob:二階高斯導數濾波LoG

關鍵點(keypoint):不同視角圖片之間的映射,圖片配准、拼接、運動跟蹤、物體識別、機器人導航、3D重建

SIFT\SURF

2. sift演算法是什麼

Sift演算法是David Lowe於1999年提出的局部特徵描述子,並於2004年進行了更深入的發展和完善。Sift特徵匹配演算法可以處理兩幅圖像之間發生平移、旋轉、仿射變換情況下的匹配問題,具有很強的匹配能力。

這一演算法的靈感也十分的直觀,人眼觀測兩張圖片是否匹配時會注意到其中的典型區域(特徵點部分),如果我們能夠實現這一特徵點區域提取過程,再對所提取到的區域進行描述就可以實現特徵匹配了。

sift演算法的應用

SIFT演算法目前在軍事、工業和民用方面都得到了不同程度的應用,其應用已經滲透了很多領域,典型的應用如下:物體識別;機器人定位與導航;圖像拼接;三維建模;手勢識別;視頻跟蹤;筆記鑒定;指紋與人臉識別;犯罪現場特徵提取。

3. sift特徵向量的維數

基於不變數技術的特徵檢測方法的基礎上,提出的一種基於尺度空間的、對圖像縮放、旋轉、仿射變換、光照變化保持穩定性的圖像局部特徵描述演算法-SIFT運算元。SIFT特徵點向量的生成由以下四步驟組成:1、在尺度空間中檢測極值點;2、去除低對比度的極值點和不穩定的邊緣極值點,得到特徵點;3、計算特徵點的方向參數;4、生成SIFT特徵點向量,向量維數一般為128維。運用SIFT演算法提取的SIFT特徵點向量具有如下優點:1、SIFT特徵是圖像的局部特徵,對旋轉、尺度縮放、亮度變化保持不變化性,對視角變化、仿射變換、噪音也保持一定程度的穩定性;2、獨特性好,信息量豐富,適用於在海量特徵資料庫中進行快速、准確的匹配;3、多量性,即使少數的幾個物體也可以產生大量SIFT特徵向量。現有的SIFT演算法具有一定的缺陷,對於圖像的檢測效率和檢測精度較差。
技術實現思路
有鑒於此,本專利技術實施例的目的在於提供一種基於改進SIFT的圖像特徵檢測方法及裝置,以解決上述技術問題。第一方面,本專利技術實施例提供了一種基於改進S...

【技術保護點】
1.一種基於改進SIFT的圖像特徵檢測方法,其特徵在於,包括:獲取待檢測圖像和對應的標准圖像;利用尺度不變特徵變換SIFT演算法對所述待檢測圖像和所述標准圖像進行圖像匹配,獲得多對匹配點;計算所述匹配點之間的鄰域直徑比和方向角度差;根據所述鄰域直徑比和所述方向角度差對所述匹配點進行剔除,獲得正確匹配點,以獲得所述待檢測圖像中的特徵。

4. 怎麼驗證sift演算法對亮度的不變性

2、高斯模糊
SIFT演算法是在不同的尺度空間上查找關鍵點,而尺度空間的獲取需要使用高斯模糊來實現,Lindeberg等人已證明高斯卷積核是實現尺度變換的唯一變換核,並且是唯一的線性核。本節先介紹高斯模糊演算法。
2.1二維高斯函數
高斯模糊是一種圖像濾波器,它使用正態分布(高斯函數)計算模糊模板,並使用該模板與原圖像做卷積運算,達到模糊圖像的目的。
N維空間正態分布方程為:
(1-1)

其中,是正態分布的標准差,值越大,圖像越模糊(平滑)。r為模糊半徑,模糊半徑是指模板元素到模板中心的距離。如二維模板大小為m*n,則模板上的元素(x,y)對應的高斯計算公式為:
(1-2)
在二維空間中,這個公式生成的曲面的等高線是從中心開始呈正態分布的同心圓,如圖2.1所示。分布不為零的像素組成的卷積矩陣與原始圖像做變換。每個像素的值都是周圍相鄰像素值的加權平均。原始像素的值有最大的高斯分布值,所以有最大的權重,相鄰像素隨著距離原始像素越來越遠,其權重也越來越小。這樣進行模糊處理比其它的均衡模糊濾波器更高地保留了邊緣效果。

5. sift特徵點正確匹配率是怎麼計算出來的

一、特徵點(角點)匹配
圖像匹配能夠應用的場合非常多,如目標跟蹤,檢測,識別,圖像拼接等,而角點匹配最核心的技術就要屬角點匹配了,所謂角點匹配是指尋找兩幅圖像之間的特徵像素點的對應關系,從而確定兩幅圖像的位置關系。
角點匹配可以分為以下四個步驟:
1、提取檢測子:在兩張待匹配的圖像中尋找那些最容易識別的像素點(角點),比如紋理豐富的物體邊緣點等。
2、提取描述子:對於檢測出的角點,用一些數學上的特徵對其進行描述,如梯度直方圖,局部隨機二值特徵等。檢測子和描述子的常用提取方法有:sift,harris,surf,fast,agast,brisk,freak,brisk,brief/orb等。
3、匹配:通過各個角點的描述子來判斷它們在兩張圖像中的對應關系,常用方法如 flann等。
4、消噪:去除錯誤匹配的外點,保留正確的匹配點。常用方法有KDTREE,BBF,Ransac,GTM等。
二、SIFT匹配方法的提出
為了排除因為圖像遮擋和背景混亂而產生的無匹配關系的關鍵點,SIFT的作者Lowe提出了比較最近鄰距離與次近鄰距離的SIFT匹配方式:取一幅圖像中的一個SIFT關鍵點,並找出其與另一幅圖像中歐式距離最近的前兩個關鍵點,在這兩個關鍵點中,如果最近的距離除以次近的距離得到的比率ratio少於某個閾值T,則接受這一對匹配點。因為對於錯誤匹配,由於特徵空間的高維性,相似的距離可能有大量其他的錯誤匹配,從而它的ratio值比較高。顯然降低這個比例閾值T,SIFT匹配點數目會減少,但更加穩定,反之亦然。
Lowe推薦ratio的閾值為0.8,但作者對大量任意存在尺度、旋轉和亮度變化的兩幅圖片進行匹配,結果表明ratio取值在0. 4~0. 6 之間最佳,小於0. 4的很少有匹配點,大於0. 6的則存在大量錯誤匹配點,所以建議ratio的取值原則如下:
ratio=0. 4:對於准確度要求高的匹配;
ratio=0. 6:對於匹配點數目要求比較多的匹配;
ratio=0. 5:一般情況下。
三、常見的SIFT匹配代碼
1、vlfeat中sift toolbox中的vl_ubcmatch.c使用的是普通的歐氏距離進行匹配(該SIFT代碼貢獻自Andrea
Vedaldi)。
2、Lowe的C++代碼中使用的是歐氏距離,但是在matlab代碼中為了加速計算,使用的是向量夾角來近似歐氏距離:先將128維SIFT特徵向量歸一化為單位向量(每個數除以平方和的平方根),然後點乘來得到向量夾角的餘弦值,最後利用反餘弦(acos函數)求取向量夾角。實驗證明Lowe的辦法正確率和耗時都很不錯。
同樣,也可以採用knnsearch函數求最近點和次近點:knnsearch採用euclidean距離時得到的結果與lowe採用的近似方法結果幾乎一致,正好印證了模擬歐氏距離的效果。
3、Rob Hess的OpenSIFT採用了KDTREE來對匹配進行優化。
4、CSDN大神v_JULY_v實現了KDTREE+BBF對SIFT匹配的優化和消除錯誤匹配:從K近鄰演算法、距離度量談到KD樹、SIFT+BBF演算法
- 結構之法 演算法之道 - 博客頻道 - CSDN.NET。
5、OpenCV中features2d實現的SIFT匹配有多種matcher:VectorDescriptorMatcher,BFMatcher(Brute-force descriptor matcher),FernDescriptorMatcher,OneWayDescriptorMatcher,FlannBasedMatcher 等等。目前只知道採用knnsearch,提供了多種距離度量方式,具體區別不懂。

6. sift的特徵描述子是一副圖像的還是每一層都有

SIFT是我接觸最早的圖像局部特徵描述子之一,其實最初,始終覺得局部特徵描述子是些非常玄虛的東西。對於SIFT,這種感覺更是尤為強烈,「尺度空間」「拉普拉斯高斯運算元(LoG)」「高斯差分金字塔」,一系列讓人頭痛的概念。不過,反反復復看了幾次,漸漸也就有了感覺,在此總結一下。

物體識別的核心問題是將同一目標在不同時間、不同解析度、不同光照、不同位姿情況下所成的像相相匹配。而為了進行匹配,我們首先要合理的表示圖像。由於目標的自身狀態、場景所處的環境的影響,同一類物體在不同的圖像中所成的像往往會差別很大,但即使這樣,人們所能通過同一物體的一些局部共性來識別出物體(正如我們能將不同國家民族的人區分出來)。所謂局部特徵描述子就是用來刻畫圖像中的這些局部共性的,而我們也可以將一幅圖像映射(變換)為一個局部特徵的集合。理想的局部特徵應具有平移、縮放、旋轉不變性,同時對光照變化、仿射及投影影響也應有很好的魯棒性。傳統的局部特徵往往是直接提取角點或邊緣,對環境的適應能力較差。1999年British Columbia大學 David G.Lowe 教授總結了現有的基於不變數技術的特徵檢測方法,並正式提出了一種基於尺度空間的、對圖像縮放、旋轉甚至仿射變換保持不變性的圖像局部特徵描述運算元-SIFT(尺度不變特徵變換),這種演算法在2004年被加以完善。

SIFT演算法的實質可以歸為在不同尺度空間上查找關鍵點(特徵點)的問題。所謂關鍵點,就是一些十分突出的點,這些點不會因光照條件的改變而消失,比如角點、邊緣點、暗區域的亮點以及亮區域的暗點,既然兩幅圖像中有相同的景物, 那麼使用某種方法分別提取各自的穩定點,這些點之間就會有相互對應的匹配點。而在SIFT中,關鍵點是在不同尺度空間的圖像下檢測出的具有方向信息的局部極值點。涉及到的最重要的兩步是:1.構建尺度空間 2.關鍵點檢測

構建尺度空間
先來談談尺度的問題。我們要精確表示的物體都是通過一定的尺度來反映的。現實世界的物體也總是通過不同尺度的觀察而得到不同的變化。比如說,對同一物體拍照,我們拍攝了一副近景,一副遠景,雖然兩幅圖片中都有這個物體,但這個物體確是處於兩個不同的尺度。SIFT特徵具有尺度不變性,就是說即使同一物體處於兩個不同的尺度的圖像中,我們仍可以通過提取圖像的SIFT特徵匹配成功。

圖像的尺度有多種表示方法(金字塔、八叉樹等等),在SIFT中Lowe教授採用了尺度空間理論。其主要思想是通過對原始圖像進行尺度變換,獲得圖像多尺度下的尺度空間表示序列,並檢測這個序列中的關鍵點。這樣圖片就被映射為多個尺度上的關鍵點信息,盡管兩幅圖片是處於不同的尺度,但卻可以提取出在尺度變換中沒有改變的關鍵點,從而進行關鍵點匹配,進而識別出物體。

實際上,在尺度空間理論中,是通過對圖像進行模糊來模擬多尺度下的圖像。直觀上,圖像的模糊程度逐漸變大,模擬了人在距離目標由近到遠時目標在視網膜上的形成過程。文獻《Scale-space theory: A basic tool for analysing structures at different scales》證明,高斯核是唯一可以產生多尺度空間的核(其它核會對圖像造成模糊之外的其它影響)。一個圖像的尺度空間, L(x,y,σ) (σ 可以代表尺度的大小) ,定義為原始圖像 I(x,y)與一個可變尺度的2維高斯函數 G(x,y,σ) 卷積運算。高斯函數:

G(x,y,σ)=12πσ2e−(x2+y2)/(2σ2)

L(x,y,σ)=G(x,y,σ)∗I(x,y)
需要的注意的是,圖像的尺度是自然存在的,不是人為創造的!高斯卷積只是表現尺度空間的一種形式。(在SIFT的代碼中,進行高斯模糊時,用到了高斯模糊的「勾股定理」:例如,使用半徑分別為 6 和 8 的兩次高斯模糊變換得到的效果等同於一次半徑為 10 的高斯模糊效果)。

圖1:高斯金字塔
在SIFT中,構建了高斯金字塔(如圖1所示),即分為兩步:1)對圖像做高斯平滑 2)對圖像做降采樣(減小計算量)。一幅圖像可以產生幾組(octave)圖像,一組圖像包括幾層(interval)圖像。為了讓尺度體現出連續性,相鄰兩層圖像間的尺度為k倍的關系,同時相鄰兩組的同一層尺度為2倍的關系(在SIFT演算法中,Lowe教授假設初始圖片已經是以一定 σ 模糊過得了)。

關鍵點檢測
文獻《Scale-space theory: A basic tool for analysing structures at different scales》指出尺度規范化的LoG運算元具有真正的尺度不變性。即我們可以在不同尺度的圖像(已經經過高斯卷積)上進行拉普拉斯運算(二階導數),並求極值點,從而求出關鍵點。

熱點內容
魅族手機怎麼找回密碼 發布:2025-03-14 02:35:48 瀏覽:296
配置高低主要看什麼 發布:2025-03-14 01:49:22 瀏覽:85
locpython 發布:2025-03-14 01:12:50 瀏覽:342
java數組的定義方法 發布:2025-03-14 00:53:25 瀏覽:517
壓縮性綳帶 發布:2025-03-14 00:30:21 瀏覽:185
如何給樹莓派編譯適合的軟體 發布:2025-03-14 00:29:45 瀏覽:376
c語言編譯器雲盤鏈接 發布:2025-03-14 00:25:23 瀏覽:350
電腦上哪個游戲可以移植到安卓上 發布:2025-03-14 00:10:32 瀏覽:473
tcl編譯器 發布:2025-03-13 23:52:59 瀏覽:324
linuxnamed 發布:2025-03-13 23:45:29 瀏覽:365