SIFT中的尺度空間和傳統圖像金字塔
http://www.zhizhihu.com/html/y2010/2146.html
最近自己混淆了好多概念,一邊弄明白的同時,也做了一些記錄,分享一下。最近又發現了一個好同學的博客,很詳細的講了SIFT
想要得知圖像中哪些是有意義的,必須先要明確這樣一個問題:在一幅圖像中,只有在一定的尺度范圍內,一個物體才有意義。舉一個例子,樹枝這個概念,只有在幾釐米到幾米的距離去觀察它,才能感知到它的確是樹枝;如果在微米級或者千米級去觀察,就不能感知到樹枝這個概念了,這樣的話可以感知到的是細胞或者是森林的概念。
因而,如果想要描述現實世界的結構,或者將三維物體映射到二維的圖像上去,多尺度表示將會至關重要。多尺度表示的概念很容易理解,舉例說明,繪制地圖時會有比例尺的概念。世界地圖中就只能夠顯示大洲大洋,以及較大的地域和國家;而一個城市地圖,甚至可以詳細的顯示出每條街道。
這裡需要強調一點,事物是實實在在的存在的,但是通過圖像這個媒介,觀察者可以感知到的概念是不同的。
一種比較老的尺度表示方法是圖像金字塔。金字塔是結合降采樣操作和平滑操作的一種圖像表示方式。它的一個很大的好處是,自下而上每一層的像素數都不斷減少,這會大大減少計算量;而缺點是自下而上金字塔的量化變得越來越粗糙,而且速度很快。(需要強調的是,這裡的金字塔構造方法和小波金字塔的構造方法是類似的,對某一層的圖像進行平滑之後,再做降采樣,平滑目的是為了降采樣後的像素點能更好的代表原圖像的像素點,與多尺度表示中的平滑完全不是一個目的)
SIFT中提到的「尺度空間」(Scale-Space)表示法是多尺度表示的另外一種有效方法,它的尺度參數是連續的,並且所有尺度上空間采樣點個數是相同的(實際上,一個尺度上得到的就是一幅圖像,尺度空間采樣點也就是該尺度上圖像的像素點。也就是說,尺度空間表示法在各個尺度上圖像的分辨率都是一樣的)。尺度空間表示的主要思想是,由原始信號(例如一幅圖像)生成一系列信號,並用這些信號來表示原始信號,這個過程中,精細尺度的信息被逐步的平滑掉(可以認為是細節信息被丟棄)。
尺度可變高斯函數
所以,這裡的尺度空間和傳統圖像金字塔的表示是不同的,尺度空間可以理解為用高斯對圖像做了卷積,圖像的分辨率還是那麼大,像素還是那麼多,只是細節被平均(平滑)掉了,原因就是高斯了,用周圍的信號比較弱的像素和中間那個信號比較強的點做平均,平均值當然比最強信號值小了,這就起到了平滑的作用。傳統圖像金字塔關鍵在於降采樣,每四個像素,求平均作為一個像素,顯然分辨率降低了。
下面就是Octave和sigma這兩個參數的影響,行與行之間的差距,可以理解為金字塔或者降采樣;行內部其實是因為高斯sigma參數作用的結果,高斯卷積其實是起到了一個平滑的作用:
下面這個就是DOG,高斯查分,其實這和邊緣檢測的原理是差不多的,通過查分,將邊緣留下來了。這就是圖像中的關鍵點的原始的結合,什麼是關鍵點,最起碼能夠代表圖像中有變化比較明顯的特征點,但是,對於那些平滑的特征,如果丟失了,是不是可惜呢?
關於SIFT的理解,Cauthy的博文有幾篇,了解的要比我深好多呢。
另外最近還有一種金字塔的表示,用來做金字塔匹配The Pyramid Match等,其原理其實是采樣窗口的大小,采樣窗口由小到大,包含的局部特征也會越來越豐富。關於這個,推薦兩篇論文
1、The Pyramid Match: Efficient Matching for Retrieval and Recognition
2、Beyond Bags of Features: Spatial Pyramid Matching for Recognizing Natural Scene Categories