sift演算法特徵
1. sift演算法中特徵點和關鍵點是同一個描述么都是指一個像素單元還是指什麼
特徵點和關鍵點都是同一個概念,還可以叫做興趣點,它們都是角點,是指一個梯度的大小和方向變換都很快的像素點。
2. SIFT變換的介紹
SIFT特徵 (Scale-invariant feature transform,尺度不變特徵轉換) 是一種計算機視覺的演算法,用來偵測與描述影像中的局部性特徵,它在空間尺度中尋找極值點,並提取出其位置、尺度、旋轉不變數。此演算法由 David Lowe在1999年所發表,2004年完善總結。其應用范圍包含物體辨識、機器人地圖感知與導航、影像縫合、3D模型建立、手勢辨識、影像追蹤和動作比對。此演算法有其專利,專利擁有者為 英屬哥倫比亞大學。
3. sift演算法得到的特徵點如何用坐標描述
在我寫的關於sift演算法的前倆篇文章里頭,已經對sift演算法有了初步的介紹:九、圖像特徵提取與匹配之SIFT演算法,而後在:九(續)、sift演算法的編譯與實現里,我也簡單記錄下了如何利用opencv,gsl等庫編譯運行sift程序。
但據一朋友表示,是否能用c語言實現sift演算法,同時,盡量不用到opencv,gsl等第三方庫之類的東西。而且,Rob Hess維護的sift 庫,也不好懂,有的人根本搞不懂是怎麼一回事。
那麼本文,就教你如何利用c語言一步一步實現sift演算法,同時,你也就能真正明白sift演算法到底是怎麼一回事了。
4. sift演算法是什麼
Sift演算法是David Lowe於1999年提出的局部特徵描述子,並於2004年進行了更深入的發展和完善。Sift特徵匹配演算法可以處理兩幅圖像之間發生平移、旋轉、仿射變換情況下的匹配問題,具有很強的匹配能力。
這一演算法的靈感也十分的直觀,人眼觀測兩張圖片是否匹配時會注意到其中的典型區域(特徵點部分),如果我們能夠實現這一特徵點區域提取過程,再對所提取到的區域進行描述就可以實現特徵匹配了。
sift演算法的應用
SIFT演算法目前在軍事、工業和民用方面都得到了不同程度的應用,其應用已經滲透了很多領域,典型的應用如下:物體識別;機器人定位與導航;圖像拼接;三維建模;手勢識別;視頻跟蹤;筆記鑒定;指紋與人臉識別;犯罪現場特徵提取。
5. 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運算元具有真正的尺度不變性。即我們可以在不同尺度的圖像(已經經過高斯卷積)上進行拉普拉斯運算(二階導數),並求極值點,從而求出關鍵點。
6. 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,提供了多種距離度量方式,具體區別不懂。
7. 如何比較SIFT,SURF,Harris-SIFT圖像匹配演算法性能
SIFT匹配(Scale-invariant feature transform,尺度不變特徵轉換)是一種電腦視覺的演算法用來偵測與描述影像中的局部性特徵,它在空間尺度中尋找極值點,並提取出其位置、尺度、旋轉不變數,此演算法由 David Lowe 在1999年所發表,2004年完善總結。其應用范圍包含物體辨識、機器人地圖感知與導航、影像縫合、3D模型建立、手勢辨識、影像追蹤和動作比對。
局部影像特徵的描述與偵測可以幫助辨識物體,SIFT 特徵是基於物體上的一些局部外觀的興趣點而與影像的大小和旋轉無關。對於光線、雜訊、些微視角改變的容忍度也相當高。基於這些特性,它們是高度顯著而且相對容易擷取,在母數龐大的特徵資料庫中,很容易辨識物體而且鮮有誤認。使用 SIFT特徵描述對於部分物體遮蔽的偵測率也相當高,甚至只需要3個以上的SIFT物體特徵就足以計算出位置與方位。在現今的電腦硬體速度下和小型的特徵資料庫條件下,辨識速度可接近即時運算。SIFT特徵的信息量大,適合在海量資料庫中快速准確匹配。
2、SIFT特徵的主要特點
從理論上說,SIFT是一種相似不變數,即對圖像尺度變化和旋轉是不變數。然而,由於構造SIFT特徵時,在很多細節上進行了特殊處理,使得SIFT對圖像的復雜變形和光照變化具有了較強的適應性,同時運算速度比較快,定位精度比較高。如:
在多尺度空間採用DOG運算元檢測關鍵點,相比傳統的基於LOG運算元的檢測方法,運算速度大大加快;
關鍵點的精確定位不僅提高了精度,而且大大提高了關鍵點的穩定性;
在構造描述子時,以子區域的統計特性,而不是以單個像素作為研究對象,提高了對圖像局部變形的適應能力;
8. 什麼是sift特徵
sift特徵匹配演算法總結主要步驟
1)、尺度空間的生成;
2)、檢測尺度空間極值點;
3)、精確定位極值點;
4)、為每個關鍵點指定方向參數;
5)、關鍵點描述子的生成。
9. sift演算法特徵點如何匹配
其實sift的匹配是有好幾種的,比如說1NN和別的數據作比較,數值小於 0.8+RANSAC的話,就是一個合格的模擬了。