局部特征检测器和描述符
圖像匹配有三個步驟:檢測特征點,特征描述和匹配
1、檢測特征點
好的特征點的位置不隨圖像亮度變換的改變,只與圖像的幾何變換有關。
1.1 圖像變換
1.1.1 幾何變換:旋轉和伸縮
1.1.2 亮度變換
1.2 Harris角點檢測的性質
角點的位置受圖像旋轉的影響
圖像的亮度變化分為兩種,一種是亮度偏移(?I ->I + b),另一種是亮度縮放(I ->?a I)
角點的位置不受亮度偏移的影響,因為常量對梯度無影響
角點的位置受亮度縮放的影響,如下圖所示,亮度拉伸后,角點的位置出現的變化(多了一個)。
角點的位置受圖像縮放的影響,如下圖所示,放大以后,所有的點被檢測為邊緣。
1.3 解決角點檢測受圖像縮放影響的問題
Harris角點檢測,
對于平面,H的特征值都很小,接近于0
對于邊沿,H的特征值一大一小,小的接近于0
對于角,H的特征值都很大。
當放大圖像時(窗口保持不變),角點有可能變成邊緣點。
在這個變化過程中,H的較小的特征值逐漸變為接近于0.
為了方便計算,Harris 算子 f 是的一種近視表示。
所以使f 取最大值的那個縮放可以找到角點。
下圖展示了 f 值隨圖像縮放的變化。
為了方便計算 f 的變化,使用固定大小的窗口作用于高斯金字塔,如下圖所示。
1.4 斑點檢測
對于很多圖像,沒有角,只有類圓形的圖片,如下圖中的向日葵花芯和蝴蝶的白色斑點,如何檢測呢?
“圖像與某一個二維函數進行卷積運算實際就是求取圖像與這一函數的相似性。同理,圖像與高斯拉普拉斯函數的卷積實際就是求取圖像與高斯拉普拉斯函數的相似性。當圖像中的斑點尺寸與高斯拉普拉斯函數的形狀趨近一致時,圖像的拉普拉斯響應達到最大。”
所以在用不同的LoG 算子組對斑點進行濾波時,選擇響應最大的LoG算子。
那么檢測到的時多大半徑的斑點呢?
規范化的高斯拉普拉斯函數為:
對其求極值:
得到:
所以在尺度, 高斯拉普拉斯響應值達到最大。
同理,如果圖像中的圓形斑點黑白反向,那么高斯拉普拉斯的響應值在達到最小值。
?
2、特征描述
優秀的描述不會隨圖像的變化而改變,并且對于每一點描述是唯一的。
2.1 MOPS描述(Multiscale Oriented PatcheS descriptor)
- 以檢測點為中心取40*40的窗口
- 縮小到原來的1/5
- 旋轉至水平
- 亮度歸一化
圖像塊的主方向由H矩陣的特征向量(較大特征值對應的)確定,
可以根據特征向量來旋轉至水平。
亮度歸一化是像素點均值為0,標準差為1,這樣可以減少亮度差異造成的影響。
2.2 SIFT(Scale Invariant Feature Transform)
- 以特征點為中心,取16*16的窗口
- 計算每一個像素點的梯度(幅值和方向)
- 邊緣處理,去掉弱邊
- 創建方向的直方圖
也可以使用關鍵點描述
SIFT的特征
- 能夠處理不同的角度的圖片
- 能夠處理不同亮度的圖片,甚至是在白天或者晚上
- 高校,可以實時處理
詳細內容可參考此博文:SIFT
2.3 其它的描述
- HOG(Histogram of Gradients)
- FREAK(Fast Retina Keypoint)
- LIFT (Learned Invariant Feature Transform)
3、特征匹配
如何定義兩個圖片的特征的距離?
歐式距離=||f1 - f2 ||
距離的比值=?||f1 - f2 || / || f1 - f2’ ||?
如何評價一個匹配的好壞?特征匹配中有正確的匹配,也有錯誤的匹配。
true positive= 正確匹配的個數
False positives = 錯誤匹配的個數
畫出ROC曲線
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的局部特征检测器和描述符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 收缩分割多边形(PSENet中有使用)
- 下一篇: Opencv数据符号说明