我們是怎麼識別圖像上面的內容的?
兩個點一樣嗎?
當把兩個點放在一個圖像上是否還是一樣
SIFT
SIFT演算法是由David Lowe在1999年研究出來,
並在2004年完善的一個用於描述和偵測圖像的演算法
Lowe將演算法分為了四個分解步驟:
1. 尺度空間極值檢測: 這一步我們將對圖像進行一些特定的處理,
處理之後,通過微分函數識別不會因為光照、尺度變化不變的興趣點
2. 關鍵點定位: 在第一步的基礎上,我們需要通過擬合判別,來丟掉
一些我們不穩定的興趣點
3. 方向確定: 在第二步的基礎上,我們為每一個點分配一個或者多個
方向
4. 描述子: 在每一個關鍵點的鄰域內,在選定的尺度上測量圖像梯度
這些梯度經過處理之後形成描述子
1. 高斯模糊
這是高斯分布的三維圖
理論上說,進行高斯濾波的時候,每個像素的計算都應該受到
同圖像下所有的像素的影響,但是實際上我們只計算
的鄰域
sigma = 0.6時的高斯模糊模板
矩陣卷積時,先將高斯模板的中心點與當前位置對應,將對應位置進行相乘後加入到當前位置
使用高斯模糊的可分離性可以簡化計算
2. 尺度空間
尺度空間(scale space)思想最早是由Iijima於1962年提出的,
後經witkin和Koenderink等人的推廣
尺度空間理論的基本思想是:在圖像信息處理模型中引入一個被視為尺度
的參數,通過連續變化尺度參數獲得多尺度下的尺度空間表示序列,
對這些序列進行尺度空間主輪廓的提取
尺度空間中各尺度圖像的模糊程度逐漸變大,能夠模擬人在
距離目標由近到遠時目標在視網膜上的形成過程。
尺度空間函數
其中
Sift通過尺度空間來構造Gauss金字塔,具體做法:
a) 設定初始參數 sigma(平滑參數), 初始參數S(該參數決定了金字塔每一層
的張數),初始參數k(躍進參數),Sift中的參考值為sigma= 1.6、S = [6,8]、
K = 2^(1/(S-3)),並將此時的金字塔層設為初始態,最底層
b) 將原圖像設定位金字塔當前層第一張圖像(不是最底層,在Gauss金字
塔中,層的概念不一樣)
c) 使用高斯函數與原圖像進行卷積,sigma參數以k
進行指數遞增,得到當前層的第二張圖像
d) 循環c),直到當前層有S張圖像
e) 向上一層,以下一層的倒數第三張圖像進行降採樣,得到當前層的基礎
圖像,重複a) - e),直到到達金字塔頂端(圖像像素為1*1)
尺度空間的圖
自上到下的sigma值
k^3σ
k^2σ
kσ
σ
0
DOG函數
在這之前先看一下Laplace函數
Laplace函數:
2002年Mikolajczyk在詳細的實驗比較中發現尺度歸一化的高斯拉普拉斯
函數的極大值和極小值及其穩定
Laplace前先說明一下有限差分求導
有限差分求導
1. 用差分代替微分方程中的微分,將連續變化的變數離散化,從而
得到差分方程組的數學形式;
2. 求解差分方程組。
有限差分求導的結論
下面看一下推導,泰勒級數展開如下
取x = xi - h
兩式相減可以得到一階倒數,同理可以得到二階導數
通過有限差分求導
DOG函數和LOG函數在xoz或者yoz上的投影圖像
DOG空間
DOG空間上,遍歷空間內的每一個點,將這個點與它所有的相鄰點比較
看是否再其鄰域內共26個點中的最大或者最小,
如果是,則記錄這個點的O,I,X,Y
找到這些點,我們稱為興趣點,它們是連續空間上的極值點,也可能是
在連續空間的極值點附近,也可能與連續空間的極值點偏離較遠
關鍵點定位
我們在離散空間上探測到的興趣點可能不是真正的極值點,可以通過已知的
離散空間點進行子像素差值得到連續空間極值點
二元函數0點泰勒展開如下
矩陣形式
標量形式
通過下面的式子及讓導函數為0
可以求到極值點偏移量
x(x,y,σ) 為三維矢量,
是相對於插值中心點的偏移量
求取三階逆的時候使用如下算式
再加上有限差分求導可以求到
的最終結果
Sift演算法規定,當x,y,σ上任何一個方向上的偏移量大於0.5的時候
意味著該中心點已經發生了偏移,這樣的點不作為關鍵點
分配尺度坐標
尺度坐標定義為:
其中S定義為DOG同一層內,總共多少張圖像,s為當前圖像的位置
3. 關鍵點分配方向
對圖像上的每一個關鍵點求取其3*1.5σ_oct鄰域窗口內像素的梯度和分布特徵
,每一個點的梯度的模值和方向用下面的式子定義
將方向360°分成為8個柱,統計以上得到的那些方向落入某個柱內的總梯度模值(每一個模值按照1.5σ_oct大小的高斯分布加成),得到的統計直方圖中,
峰值方向代表了關鍵點的主方向。
為了增強匹配的魯棒性,只保留峰值大於主方向峰值80%的方向作為
該關鍵點的輔方向
4. 描述向量
這個描述子不但包括關鍵點,也包含關鍵點周圍對其有貢獻的像素點,
並且描述符應該有較高的獨特性,以便於提高特徵點正確匹配的概率。
Lowe建議描述子使用在關鍵點尺度空間內4*4的窗口中計算的8個
方向的梯度信息,共4*4*8=128維向量表徵。表示步驟如下:
1. 以關鍵點為中心,3σ_oct * (d )為邊長形成一個矩形,將矩形分為
4*4個小的矩形
2. 在每一個矩形內,求取該矩形的方向直方圖。
3. 將求取到16 * 8個方向的數值組成128維向量
SIFT改進
1. 尺度空間構建中,為了保留更多的原始數據,形成更多的特徵,一般處理的時候,將原圖像進行線性插值後的圖像作為基礎圖像
2. 在興趣點選取關鍵點時,還需要剔除對比度較低和不穩定的點
3. 為了形成的描述子有更好的旋轉不變形,在生成描述子的過程中,我們可以對坐標軸旋轉為關鍵點的方向,在進行描述子的生成
4. 基於Sift的改進演算法有SURF和CSIFT
SIFT優點
1. 對於不同的圖像,有很強的穩定性
2. 獨特性好,信息量豐富
3. 擴展能力強,可以方便的將更強能力的某一單一處理演算法引入
SIFT缺點
1. 原始圖像較小的情況下,特徵點下降嚴重
2. 對邊緣光滑的目標無法準確提取特徵點,尤其是
圓,完全無能為力
TAG:演算法 | 圖像識別 | 圖像處理 |