SIFT演算法的一些基本概念

2021-06-19 19:26:56 字數 2119 閱讀 4051

基本概念:

降取樣:對於一幅影象而言的降取樣就是每隔幾行、幾列得到取一點,組成乙個新的影象。比例因子為2的降取樣是sfit要用到的!

公升取樣:其實一種插值,就是在一幅影象裡利用相關的插值運算得到一幅大的影象!比如比例因子為2的公升取樣就是每個相鄰畫素點種插值出乙個畫素(這裡包括x、y兩個方向)。對於n×n的影象就變為2n×2n的影象了。順便說下插值,就是一種利用已有資料對位置資料的估計。比如我第10秒走了12公尺,第20走了30,那麼我用線性插值估計我第15秒走了(30-12)/2+12=21公尺,當然插值的方法有很多!

影象金字塔:簡單的說是乙個影象集,。如果形象的把這些影象摞起來就想乙個金字塔,故此得名。

卷積:這個概念我感覺是最不好解釋的,他就是乙個積分,兩個函式(其中乙個帶引數)對應點的乘積,然後把乘積函式求積分!大致我理解就是這樣,但是具體的還是請大家去查書。但是這裡我想說卷積在影象裡的運算。卷積是一種無限的積分運算,但是因為在乙個二維平面(x軸對應乙個卷積函式,y軸對應乙個卷積函式!),一般情況下圍繞某一點的卷積運算距離卷積點非常遠的運算對最後結果很小,所以通常忽略!這樣卷積運算就變成了一種模板運算!例如3×3的一種模板運算,就是把離他最近的9個點(包括它本身9個點)分別乘以按一定的加權函式所對應的權值後加到這個中心點上成為該點的新值。那麼對於3×3的模板運算每一點要做9個乘法9個加法。那麼對於1000個畫素的影象做模板運算就要做9000個乘法,9000加法!如果模板再大,計算次數會更多。

高斯卷積:就是權函式為高斯函式的卷積模板運算,高斯卷積有一次和二次...。通常做高斯卷積後的影象會比原影象平滑但也會模糊,所以又稱高斯模糊!因為這不能寫公式,很多的細節可以看下面的附件裡的!

高斯金字塔:高斯金字塔裡有兩個概念:每組裡有若干層!高斯金字塔的構造是這樣的,第一組的第一層為原影象,然後將影象做一次高斯平滑(高斯卷積、高斯模糊)高斯平滑裡有乙個引數σ(詳見附件),在sift裡作者取1.6,然後將σ乘乙個比例係數k作為新的平滑因子來平滑第一組第二層得到第三層。重複若干次,得到l層他們分別對應的平滑引數為:0,σ,kσ,k2σ....。

然後將最後一幅影象做比例因子為2的降取樣得到第二組的第一層,然後對第二組的第一層做引數是σ的高斯平滑,對第二層做kσ的平滑得到第三層.....這裡一定注意:每組對應的平滑因子是一樣的!而不是像有的資料上說的持續遞增。這樣反覆形成了o組l層。一般模糊的高斯模板長寬都約為6σ(這裡σ為當次的平滑因子,就是可能是kσ,k2σ..)

dog(difference of gaussian)金字塔:他是由高斯金字塔構造出來的,他的第一組第一層是由高斯金字塔的第一組第二層減第一組第一層,他的第一組第二層是由高斯金字塔的第一組第三層減第一組第二層得到,(說的這麼繁瑣是為了大家能理解的直觀點)。每組都這樣就生成了dog金字塔。順便說一下,dog金字塔每**像幾乎都是一片黑,但仔細看你能看出輪廓的。

兩個金字塔在sift演算法裡的特殊說明:

1、在sift裡高斯金字塔的第一組第一層通常是由乙個原影象長寬擴大一倍開始的,這樣做是為了可以得到更多的特徵點

2、大家可以發現如果用每組5層的高斯金字塔構造乙個dog金字塔的的話,dog的每組的層數是4。

3、對於dog金字塔,特徵點的搜尋從每組的二層到倒數第二層的(後面說明為什麼),所以如果實際用n層那麼dog金字塔應該有n+2層,那麼對應的高斯金字塔應該有n+3層。

4、由於這樣所以高斯金字塔從第二組開始的每組第一層是由上一組的倒數第二層降取樣得到的。

梯度:就是乙個有方向和長度的向量,它的意義是乙個函式的某一點上數值變化最大的方向和變化量。在影象中乙個畫素點的梯度是由它周圍的8個點計算得到的。(公式見附件的圖)

k-d樹:一種資料結構,用於搜尋高維最鄰近點,他是一種二叉樹,每個節點是乙個高維向量。對於他的具體說明我沒仔細看呢,如果做到最後需要請大家參考這個:順便說下維基百科不錯!!

尺度:這個概念最讓我鬱悶,現在弄的不是很清楚。我現在的理解就是(這不是它的概念):1、表示同一事物所用到的影象畫素量,用的多尺度就小,用的少尺度就大(說沒說反?嘿嘿!)。2、它和影象的清晰程度有關,如上面說的高斯模糊,那麼因子σ越大得到的影象越模糊,那麼尺度越大!3、影象的旋轉、平移尺度是不變的,但是放大、縮小、模糊就變了。

詳細說明還請參考維基百科。

**:兩處橙色地方有區別,原創作者的回答:

第乙個是金字塔的構造,第二個是sift中高斯金字塔的特殊處理

C 一些基本概念

建構函式的作用是對物件本身做初始化工作,也就是給使用者提供初始化類中成員變數的一種方式。析構函式是釋放物件執行期間所申請的資源。函式的過載,過載構成的條件 函式的引數型別不同 引數個數不同,才能構成函式的過載 在乙個類中 注意,只有函式的返回型別不同是不能構成函式的過載。在函式過載時,要注意函式帶有...

linux OS一些基本概念

1.什麼是os?好簡單好x的問題,可是如果真的要自己用稍微官方稍微正規的語言或文本來回答,我真的能回答清楚嗎?好吧,我先來用自己的語言來回答。再去找點官方的定義。我自己的回答 os就是乙個可以管理並且相對合理分配計算機資源的軟體。官方回答 作業系統 英語 operating system,簡稱os ...

Thread一些基本概念

1 實現執行緒的三種方式 extends thread implements runnable implements callable new futuretask callable new thread futuretask 2 執行緒讓步yield 讓執行緒由執行狀態變為就緒狀態,不會釋放鎖 3...