SIFT講解(SIFT的特征點選取以及描述是重點)

目錄

    • SIFT是什么?
    • 尺度空間理論
    • SIFT特征點提取
    • SIFT特征點描述

SIFT是什么?

SIFT ,即尺度不變特征變換( Scale-invariant feature transform,SIFT) ,一種特征描述方法。具有
尺度魯棒性
旋轉魯棒性
光照魯棒性

SIFT本身包括了特征點篩選及特征點描述的步驟。

尺度空間理論

尺度空間
效果
SIFT的特征點篩選目的:尋找在不同尺度空間下的極值點,保證這些特征點在放大或者縮小的條件下均存在。
(這一特點與Harris檢測特征點比較的話發現,Harris對尺度變換的魯棒性較差)
SIFT的特征點篩選方法:DoG近似LoG。
LoG(Laplacian of Gaussian) :使用不同sigma獲得不同的尺度空間圖像,然后通過Laplacian算子獲得極值。這一運算過程可以用DoG(Difference-of-Gaussian)近似。拉普拉斯其實就是二階導數,產生的零交叉點就是我們所要獲取的極值。
關于LoG與DoG的更多知識可以轉到:圖像分割-LOG檢測器和DOG檢測器
DoG步驟:
DoG步驟
得到的結果與LoG結果非常相似,在DoG結果圖中,我們用亮度表達差分值的大小。在紋理比較豐富、邊緣區域具有比較大的值。
理解:高斯卷積核其實是一種加權的平均。在灰度變化不劇烈的地區,一個像素值的大小和周圍像素值得大小基本相等,所以不管加權的參數是哪樣,得到的加權結果其實是相似的,所以做差分之后這種區域的差分值會很小。灰度變化劇烈的地區則反之,差分值會很大。

SIFT特征點提取

在SIFT特征點選取中所用到的DoG:
DOG
這時候就出現了一個問題:隨著sigma的增加,它需要更大的高斯窗口進行平滑模糊處理。(sigma越大高斯函數越扁平)會使無法處理的區域增加,同時計算量增加。在空間濾波中我們學習到,3* 3模板進行卷積時對圖像最外一層像素是無法處理的,5*5是周圍兩層像素。
解決方法:圖像金字塔,回顧知識:Opencv——圖像金字塔與圖像尺寸縮放
圖像金字塔
當k增加到2時,我們將圖像縮小為1/2尺寸,這叫降采樣。再使用sigma0的模板處理。我們發現,圖像縮小了二分之一,而sigma卻沒有改變。重復該操作,進行降采樣。同一個Octave的圖像具有相同的尺寸。
在圖像金字塔處理之后,我們將就是檢測DoG極值了。
描述
關于獲取一個octave的圖像的詳細過程可以參考文章最末的原理講解,那個是十分詳細的。
這樣得出來的極值的性質如何?
極值性質
當然這些得到的極值點是候選點。在得到候選點之后就要對候選點的特征進行描述,以達到匹配的目的。

SIFT特征點描述

使用梯度值對特征點進行表述,計算像素的梯度值和梯度方向。相對像素的亮度值,梯度對光照具有更好的魯棒性。
當圖像處于一個剛體狀態時(沒有劇烈形變),某像素與它周圍像素的關系應該是近乎恒定的。對一個區域進行描述的話得到的描述子將更加穩定。
我們先假設一個候選點:
候選點
然后計算它周圍一定區域的梯度值,比如8*8區域。
梯度值
1、將得到的角度值進行36等分。
2、在特征點對應的尺度空間計算梯度值。
3、利用高斯核對梯度進行計算權重。
也就是說該像素周圍像素的權重由兩個值決定:一個是本身梯度大小、第二個是離考察像素點的距離。
取決因素
建立一個36維的直方圖,每次累加的值就是它的權重
直方圖
其實到了這一步已經可以很好地描述了。
但是注意,此刻的角度計算得到的是一個絕對角度,是與水平方向成的角度。當圖像旋轉后顯然這種描述方法就有問題了。
解決方法:獲取一個具有代表性的方向作為主方向。通常選擇梯度值最大的那個角度分量作為主方向,獲得更具有旋轉魯棒性的描述方法。
主方向
主方向
選擇完主方向后,將周圍圖像以主方向計算相對角度。這樣就算圖像進行旋轉,主方向也會進行旋轉,相對角度保持相對恒定狀態。
代碼實現可以參考第二個鏈接。
要是想要調用Opencv庫函數,則要參考毛星云的《Opencv3編程入門的》417頁,
我在我的Opencv安裝包中沒有找到這個nonfree文件夾,以后再解決這個問題。網上大部分調庫代碼也需要一些自己添加庫。
在這里插入圖片描述
參考鏈接:

SIFT算法詳解
基于C++和OpenCv的SIFT_圖像局部特征檢測算法代碼的實現
《數字圖像處理PPT.李竹版》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378563.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378563.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378563.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

操作系統多線程實現_操作系統中的線程實現

操作系統多線程實現Each process has an address space. There is one thread of control in every traditional OS. Sometimes, it is viable to have multiple threads of control in the similar address space which is running in quasi-parallel. Though they were separ…

mysql怎么消除冗余,mysql剔除冗余數據

mysql刪除冗余數據-- -- 1. 查詢冗余數據SELECT t.id FROM t_lifeservice_orders t WHERE t.orderStatus 2 GROUP BY t.channelCode, t.orderNum, t.orderStatus HAVING COUNT(t.orderStatus) > 1;-- -- 2. 定義刪除冗余數據存儲過程DROP PROCEDURE IF EXISTS proc_delete_…

04-圖像的形狀繪制

一、線段繪制 cv2.line(dst,(100,100),(400,400),(0,0,255),2,cv2.LINE_AA) 參數一:目標圖片數據 參數二:當前線段繪制的起始位置(也就是兩點確定一條直線) 參數三:當前線段繪制的終止位置(也就是兩點確定…

(1-e^(-j5w))/(1-e^(-jw))=e^(-j2w)*sin(5w/2)/sin(w/2)的證明過程

問題出現:《數字信號處理第三版》第90頁劉順蘭版 最后一步怎么得到的? 思路:觀察答案,有一個自然對數項。關鍵就是如何提取出這一項。 我的證明過程如下: 參考鏈接: 【和差化積】

php 移植 arm 精簡,php5.4.5移植到arm-linux摘要,lighttpd配置

php5.4.5移植到arm-linux摘要.因為有嵌入WEB服務的需求,再常識了N多的開源的嵌入服務后最終選擇了lighttpd.Apache太大支了,而且在arm上對swf的支持不好.其他的都不怎么理想.lighttpd的移植過程就省略了。這里只摘要了PHP移植,采用fastcgi與lighttpd 協作…

05-圖像的美化

一、彩色圖片直方圖 cv2.calcHist([image],[0],None,[256],[0.0,255.0]) 該方法的所有參數都必須用中括號括起來!!! 參數一:傳入的圖片數據 參數二:用于計算直方圖的通道,這里使用的是灰度直方圖&#xff…

java 檢查目錄是否存在_如何檢查Java目錄是否存在?

java 檢查目錄是否存在We are using the File class that is an abstract representation of file and directory path. To check if a directory exists we have to follow a few steps: 我們正在使用File類 ,它是文件和目錄路徑的抽象表示。 要檢查目錄是否存在&a…

Eclipse for android 中設置java和xml代碼提示功能(轉)

1、設置 java 文件的代碼提示功能 打開 Eclipse 依次選擇 Window > Preferences > Java > Editor - Content Assist > Auto activation triggers for Java ,設置框中默認是一個點, 現在將它改為: 以下為引用內容: .a…

MySQL 定時器EVENT學習

MySQL 定時器EVENT學習 MySQL從5.1開始支持event功能,類似oracle的job功能。有了這個功能之后我們就可以讓MySQL自動的執行數據匯總等功能,不用像以前需要操作的支持了。如linux crontab功能 。 創建測試表CREATE TABLE t( v VARCHAR(100) NOT NULL…

如何利用FFT(基2時間以及基2頻率)信號流圖求序列的DFT

直接用兩個例子作為模板說明: 利用基2時間抽取的FFT流圖計算序列的DFT 1、按照序列x[k]序號的偶奇分解為x[k]和x2[k],即x1[k]{1,1,2,1}, x2[k]{-1,-1,1,2} 2、畫出信號流圖并同時進行計算 計算的時候需要參考基本蝶形單元: 關鍵在于 (WN) k…

matlab4.0,matlab?4.0

4.1fort-9:0.5:9if(t>0)y-(3*t^2)5;fprintf(y%.2ft%.2f\n,y,t);elsey(3*t^2)5;fprintf(y%.2ft%.2f\n,y,t);endend編譯結果:y248.00t-9.00y221.75t-8.50y197.00t-8.00y173.75t-7.50y152.00t-7.00y131.75t-6.50y113.00t-6.00y95.75t-5.50y80.00t-5.00y65.75t-4.50y…

圖形學 射線相交算法_計算機圖形學中的陰極射線管

圖形學 射線相交算法陰極射線管 (Cathode Ray Tube) Ferdinand Barun of Strasbourg developed the cathode ray tube in the year 1897. It used as an oscilloscope to view and measure some electrical signals. But several other technologies exist and solid state mov…

Constructor總結

一個類如果沒有構造那么系統為我們在背后創建一個0參數的構造,但是一旦我們創建了但參數的構造,那么默認的構造就沒了。 View Code 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Text;5 6 namespace Console…

Python連接MySQL及一系列相關操作

一、首先需要安裝包pymysql(python3所對應) 我使用的是Anaconda全家桶,打開cmd,進入Anaconda下的Scripts文件夾下輸入命令:pip install pymysql進行下載安裝 二、我使用的編譯器為Anaconda所帶的Jupyter Notebook 1,在mysql中…

微機原理—可編程計數器/定時器8253概念詳解

目錄前言【1】定時處理方法1、定時的方法:2、定時和計數器【2】8253計數/定時器1、特點:2、芯片引腳以及電路:3、連接方式:4、工作原理:5、寄存器配置a、初始化操作(三個通道單獨初始化)b、讀出…

php靜態分析工具window,window_SpeedPHP框架核心調試工具,在日常的編程開發當中,開發 - phpStudy...

SpeedPHP框架核心調試工具在日常的編程開發當中,開發者經常會使用到對變量的調試,而sp框架提供的變量調試輸出函數——dump正好滿足了變量調試的需求。下面來介紹一下dump函數的使用方法。dump —— 變量格式化輸出函數用法:dump($vars, $out…

python 溫度轉換程序_Python程序將米轉換為碼

python 溫度轉換程序There are many problems where we have to calculate the distance in yards at the end but initially, the measurements are given in meters. So for such type of problems, the solution is converting the initial parameters into yards and then …

Oracle轉Sqlserver 記錄

使用了微軟的SSMA幫忙,但是目前只有表能幫忙轉,其他的還是要手動改,- - oracle 可以這樣查詢AppServiceInfoaspdb ,調用其他庫的表。SQL是: aspdb.dob.AppServiceInfo si數據庫需要和 aspdb ASPDB_Capacity 在siinf…

形參與實參在函數中的傳遞

#include <iostream> #include <cstring> using namespace std; void myFun(int a[]); int main() {int a[10];cout<<"aaa"<<sizeof(a)<<endl;//40 int為4&#xff0c;a為10個int&#xff0c;故為40cout<<"yy"<<…

帶你走進緩存世界

我們搞程序的多多少少都了解點算法。總體來講&#xff0c;算法是什么&#xff1f;算法就是“時間”和“空間”的互換策略。我們常常考究一個算法的時間復雜度或空間復雜度&#xff0c;如果我們有絕對足夠的時間或空間&#xff0c;那么算法就不需要了&#xff0c;可惜這種條件是…