圖像金字塔除了sift演算法之外還有什麼應用?

看sift時,感覺圖像金字塔這個思路很有意思,但是其它地方還有什麼應用案例嗎?


尺度空間的目的是『見森林又能見樹木』,墨跡一點的解釋就是,在低尺度下可以看清楚很多細節,在高尺度下可以看到輪廓。

在目標檢測領域,圖像中的物體通常很可能是遠近不一,大小不一的,可以利用金字塔來檢測不同尺度下的物體。但同時你也可以使用不同大小的sliding window在原圖上做檢測。

在SIFT提取的時候,因為template上的局部特徵跟目標圖像上的實際特徵可能存在尺度上的差異,使用尺度空間是為了達到『尺度不變性』。我覺得前不久出來的DSP-SIFT其實也是進一步利用尺度空間來構造更強的descriptor的例子。

在一些邊緣檢測演算法裡面,為了忽略比較弱的邊,也會利用尺度空間來進行降採樣(對,高斯濾波大部分時候被理解成某種去噪/平滑操作,其實也是尺度空間思想)。

在一些基於特徵的分類和識別問題裡面,也有尺度空間的影子。比如基於高維LBP的人臉識別,其中LBP直方圖的提取方式就蘊含有尺度空間的思想。

尺度空間的想法其實非常直觀(當然證明它為什麼那樣構造可能會比較費事),但是因為尺度空間的構造和操作往往也是演算法裡面比較費時的地方,所以針對性的優化也應該說一下。

比如前面說的目標檢測,有些情況下目標的變化尺度範圍實際上是非常有限的,此時應該適當的設定尺度的數量,來減少不必要的計算量。比如你可以只降採樣三次,你也可以降採樣八次,去最上面的三個尺度。後者的好處是……快。

比如OpenCV里SIFT的實現默認是上採樣一次,降採樣至無法再縮小為止。很多時候你其實不需要這麼精細的特徵點或這麼high level的特徵點,也許稍微改一下參數就可以優化一些速度回來。這裡也需要提一下SURF的反向模擬尺度空間的思路,跟上面提到的高維LBP的思路如出一轍。

在點特徵裡面,有時候你希望你的點在整個尺度空間里都是很強的,不是那種在最開始還是一個比較強的特徵點,尺度高了之後這個特徵點就消失了。你希望你只處理那些從始至終都比較堅挺的特徵點,那你就可以在金字塔的頂層提取特徵點,然後只是在下面的層進行局部搜索驗證……這樣你可以一邊提取著非常魯棒的descriptor,一邊還快如閃電……

視覺裡面很多看似直觀且簡單的東西往往有層出不窮用法,除了這金字塔,還有比如直方圖,比如二值化,比如卷積,比如積分圖,比如距離變換……等等等等。雖然都不是什麼高級的東西,一但用到巧處,也耐人尋味啊。


比較著名的是早期的saliency模型吧,IttiKoch用9層高斯金字塔的特徵差異模擬retina ganglion cells的center-surround感受野,並用來計算saliency。

Itti, L., Koch, C., Niebur, E. (1998). A model of saliency-based visual attention for rapid scene analysis. IEEE Transactions on pattern analysis and machine intelligence, 20(11), 1254-1259.


在from coarse to fine由粗到精的搜索策略中都可以用金字塔。

比如optical flow光流法。

比如slam當中的姿態估計。


圖像金字塔的目的是構建尺度空間,SIFT中的DoG是一種特殊的圖像金字塔。

構建尺度空間在計算視覺中很常用,尤其是目標檢測,而對基於滑動窗口的目標檢測演算法則是必需。

最簡單的Viola的人臉檢測器也用了這種技術,不過默認的Viola檢測器一般是構建模板金字塔,在圖像金字塔上精度更高一些,但速度會慢。針對一般目標的檢測器一般在圖像上構建金字塔。


在某些圖像處理的演算法中,圖像金字塔這種的多解析度運算可以避免陷入局部點,增強魯棒性


加速各種模板匹配,從秒級別加速到ms級別


說白了可以縮小圖像,找範圍,再縮小,再找範圍,再縮小,再找範圍,,然後再擴大,再擴大,再擴大,減少計算量


1、在多解析度融合演算法中也用到了圖像金字塔

2、在ORB的改進演算法中也可以運用圖像金字塔解決尺度不變換特性

3、SURF演算法中也用到了圖像金字塔的思想


更多的是構造特徵時:1、適應尺度變化。2、增加特徵維度,構造高維特徵。至少我是這麼乾的。列兩篇文章參考:

1、Action recognition by dense trajectories

2、Blessing of dimensionality: High-dimensional feature and its efficient compression for face verification


圖像金字塔的思路,主要解決圖像分析尺度問題的,許多圖像分析任務,包括超分辨、目標檢測等等都是一種很重要的手段。


你可以把尺度空間看成符文或者寶石,鑲嵌到自己的演算法的武器上面。

會大大減少miss幾率(就是提高魯棒性啦)。

例子不少,比如基於特徵點的人臉識別。


推薦閱讀:

ICCV2015 有什麼值得關注的亮點?
模式識別中從Kernel方法的本質來看,是否真的有效?
Amazon Fire Phone 的 Firefly 識別功能是怎麼工作的?
機器學習中用到哪些矩陣知識,如果要補這些知識,求推薦合適的書籍資料?

TAG:演算法 | 圖像處理 | 模式識別 | 自動化 | 計算機視覺 |