#計算機視覺#簡單圖像操作

Low level Image Processing

1 Convolution卷積操作

1.1相關知識:
1)爲什麼卷積不旋轉
卷積:convolution,需要旋轉180°;
相關:correlation,不需要旋轉;
所以在圖像卷積操作中不進行旋轉的原因是:
1很多人混淆核卷積核相關;
2很多核是對稱的,結果相同;
3CNN中很多核是學習到的,所以不需要旋轉;
2)padding 問題
原始數據進行卷積操作後,如果不進行“補0”操作,原始數據的size會減小。
最簡單的padding_num = int(kernel / 2) eg : 3x3圖像需要行列均補1個像素大小。
對於image convolution ,雖然是三通道,但是我們仍然認爲是2維上的卷積操作。
在這裏插入圖片描述
對於CNN:3channel image與 3channel kernel 卷積後只會得到一個單張圖像,多通道變單通道。
1.2圖像的二維高斯模糊
1)分離高斯模糊性質:高斯模糊具有線性可分性質G(x,y) = G(x)·G(y),這樣在計算卷積時可以利用一行和一列的兩個矩陣和圖像進行卷積,可以大大減少計算複雜度。O(H * W * m * n ) -> O(H * W * m )+O(H * W * n )
在這裏插入圖片描述
2)對同一張圖片進行連續多次高斯模糊與只用一次大的高斯模糊,可以達到一樣的效果。需要滿足的是方和根的關係。如兩次的模糊值分別爲3和4,達到的效果可以只用5就可以。在這裏插入圖片描述

2Feature Points

2.1圖像的一階導與二階導
一階導
在這裏插入圖片描述
二階導:
在這裏插入圖片描述
實現了卷積和導數的聯繫!
那麼爲什麼要做二階導呢?
在這裏插入圖片描述
而卷積可以作爲快速計算導數的工具。
2.2應用:image sharpening : Laplacian, Edge Detection : sobel , Image Blur : Median/Gaussian(加權平均), Bilateral Filtering雙邊濾波

2.2.4雙邊濾波算法
雙邊濾波算法是在高斯濾波的基礎上儘可能地保留細節部分。普通高斯濾波只考慮了歐式距離作爲加權平均的權重,雙邊濾波額外的考慮到了其他相似程度如:顏色,深度距離等。

Classical CV Procedure

SIFT(Scale Invariant Feature Transform)

Sift算法可以將一幅圖像映射(變換)爲一個局部特徵向量集;特徵向量具有平移、縮放、旋轉不變性,同時對光照變化、仿射及投影變換也有一定的不變性——找出突出的關鍵點。
尺度不變特徵轉換SIFT,現實中,我們希望找到的特徵點能夠找到在變尺度(遠近),變角度(旋轉),變光照的情況變化的情況下保持特徵。換句話說就是在遠處近處,正着倒着都可以看出是隻貓。角點檢測不滿足尺度不變特性。比如:
放大後不在符合角點特徵
1. 尺度不變步驟:
1)Generate Scale-space: DoG——生成高斯不同DoG圖像表示尺度不同;
2)Scale-space Extrema Detection——對DoG金字塔的每一層(2或3張圖中尋找)檢測尺度空間極致,找出各個尺度上極大值和極小值的座標位置,思想是可以根據這個做法來評價關鍵點的穩定程度
3)Accurate Keypoint Localization——計算出關鍵點,離散轉連續;
4)Eliminating Edge Responses——邊緣信息對關鍵點權重很大,需要排除某些關鍵點。
5)Orientation Assignment——關鍵點方向確認(圖像局部梯度方向),分配給關鍵點一個或多個方向。後面的對圖像數據的操作都相對於關鍵點的方向、尺度和位置進行變換,從而提供對於這些變換的不變性。
6)Keypoint Descriptor——關鍵點特徵描述。(還沒想好是啥)
2.實現細節 :
2.1 高斯金字塔與DoG生成:
SIFT是爲了找出不同尺度空間下的關鍵特徵點。這裏引入了尺度空間理論,其基本思想是在圖像空間中引入一個可以不斷變化的尺度參數從而可以獲得不同尺度下的圖像,通過提取它們的輪廓線找出核心特徵。尺度空間的生成可以用高斯模糊實現,用視覺解釋爲尺度大表示遠,相比尺度小的更加模糊。
高斯金字塔 是在SIFT概念中提出的,並不是類似圖像金字塔,而是指多個(Octave)金字塔構成。
問題點:
模糊尺度確定;
降採樣母版圖片大小;
一般第一階爲原圖2倍,其餘按照圖像金字塔操作,高階是低階大小的1/2;
1)先將先將分辨率最大的圖像作爲高斯金字塔的第1組第1層,將第1組第1層圖像經高斯卷積,之後作爲第1組金字塔的第2層,如圖:
在這裏插入圖片描述
找出一張最大的(分辨率最高的圖)作爲first octave,再對此進行尺度放大,上圖左邊由下向上分別進行逐層高斯模糊,模糊程度越大–>尺度越大。
在這裏插入圖片描述
差分高斯金字塔DoG 高斯拉普拉斯濾波核求取二階導具有尺度不變特性可以產生穩定的圖像特徵,再求出極值點從而求出關鍵點。但是運算量大,而高斯差分DoG計算結果與其相近,可以近似代替高斯-拉普拉斯算子。
D(x,y,σ)=(G(x,y,kσ)−G(x,y,σ))⨂I(x,y)=L(x,y,kσ)−L(x,y,σ)
在這裏插入圖片描述
即:尺度變換後,高斯金字塔每組內相鄰兩層圖片相減的到差分高斯金字塔(上文有圖)。
金字塔生成細節

1金字塔階數(O)確定
2每階圖像層數(s)確定
每階圖像尺寸確定
每層尺度(σ)確定

①Octave一般取4,或根據圖像大小選擇:
O = log(min(W,H)) - 3
在這裏插入圖片描述
②每階層數一般選擇爲6,如圖,6個DoG可以得到4組極值,所以要得到n個尺度特徵點,需要n+2層的差分圖檢測。進一步,高斯尺度圖片需要n+3個以生成DoG。
③第一層Octave用原始圖像的2倍,其餘根據圖像金字塔方式依次縮小2倍。
④σ0一般取1.6;模糊尺度因子變化率爲k
k=2**1/S表示每層σ的變換系數;
S表示在尋找最大值時考慮的DoG圖片個數, 2 或 3;
在這裏插入圖片描述
下一階的第一層圖像是根據上一階的倒數第三層圖像進行降採樣得到的。如下圖。
在這裏插入圖片描述
2.2檢測極值點
高斯差分金字塔裏的極值點比一般的(角點,Hessian,梯度函數)這些方法得到的點性質穩定。所以很自然的就要用到極值點來做候選人。
S=3時,極值點通過相鄰的兩層與本身周圍一共26(=9+9+8)個點比較得出,通過這一步可以得到備選關鍵點的位置信息。
在這裏插入圖片描述在這裏插入圖片描述
2.3關鍵點定位
以上方法求出的極值點時離散空間的極值點,很可能不是真正的極值點位置,以下通過擬合三維二次函數來確定關鍵點的位置和尺度。
在這裏插入圖片描述
利用已知的離散空間點插值得到的連續空間極值點的方法叫做子像素插值(Sub-pixel Interpolation)。將其考慮爲爲連續函數求極值方法在這就叫插值操作,方法如下:
1)將函數進行Taylor展開
在這裏插入圖片描述
注:
求出偏移量很大的時候,說明精確極值點已經完全偏離離散點處得到的極值點,這裏很可能找到的是駐點,所以捨去。

2.4消除邊緣影響與干擾點
DoG對邊緣非常敏感,需要去除不必要的邊緣點。這裏構造Hessian矩陣,當特徵值ratio達到一定閾值後才認爲是合適的。
在這裏插入圖片描述
H的特徵值代表x,y方向的梯度。
__2.5計算梯度幅值與角度 __ 對旋轉不變
根據上述步驟,已經提取到關鍵點了,可以確定尺度和位置不變性,此時還缺少角度不變性,這個步驟便是尋找這些關鍵點的角度問題。
圖像中單獨的一個特徵點是不具備說服力的,所以角度特徵需要統計周圍的像素點的一些特徵,從而得到需要的角度。以該特徵點爲圓心,對其所在的尺度σ的1.5倍爲半徑,統計對某一角度的支持程度。
在這裏插入圖片描述
①計算出了每個點的幅值與幅角之後,可以根據點距圓心的距離給予高斯權重,即以特徵點爲圓心對周圍特徵點的幅角和幅值做一個高斯濾波,方差仍然是1.5σ。

②計算完每個點的幅角與幅值之後繪製統計直方圖,將0°-360°分成36個區間,回值直方圖如上圖所示,開始統計。橫座標爲幅角,縱座標爲幅值加權和。最大的將作爲主方向,同時與主方向相差80%以內的作爲該特徵點的輔方向。

2.6構建關鍵點特徵描述
構建一個特徵矩陣描述關鍵點的方向信息?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章