Saliency Detection: A Spectral Residual Approach 閱讀筆記

轉載鏈接地址:http://lowrank.science/Spectral-Residual/

About The Author

雖然是第一次讀論文第一作者 Xiaodi Hou 的文章,但在此之前,其實早已受過其不小的影響:

  • Xiaodi Hou 在知乎上的 ID 是Filestorm ,是
    神經學、生物學話題的優秀回答者,在看他的論文之前,你可能已經在知乎週刊上看過好幾個他的回答了;

  • Xiaodi Hou還是關於博士生的喜劇電影 ThePhD Movie 的演員之一,出演了那個在舞廳邀請女主跳舞的本科生;

  • Xiaodi Hou 著名的上海交大生存手冊 的作者之一,我人生的一大遺憾就是,是在本科畢業而不是入學時纔讀到這本小冊子;

  • 最讓人歎服的是, Xiaodi Hou04年高中畢業才進入上海交大,考慮到 CVPR 一般都是在上一年 11 月份投稿,Hou Xiaodi 投稿這一篇目前引用 2000多次的CVPR 論文時,其實大三上學期開學沒多久,包括我在內,多少人這輩子做夢都想發一次 CVPR,Hou 他竟然在大三就完成了。

Perspective

從題目中就能看出來,論文的目的是做顯著性檢測的,但這篇論文之所以能被引用這麼多次,在於它與傳統顯著性檢測的思路並不一樣。

傳統方法,如 Itti 模型,檢測顯著性目標的思路就是抽取目標的顯著性特徵,如顏色、亮度、紋理,通過綜合並分析這些特徵,找出圖像的顯著性區域。但這樣做的通用性並不是很好,因爲不同類型的目標會有不同的特徵,並不能一概而論。

Hou 在本文中另闢蹊徑,並不預先假設目標會具有怎樣的顏色、亮度、紋理特徵,而是來探索背景具有何種特性(pose this problem in an alternative way: to explore the properties of the backgrounds.)將目標看作是引起背景變化的東西,通過估計背景,來做顯著性檢測。

Insight

人類視覺系統的一條基本法則就是會抑制重複性出現的特徵,而更關注那些偏離尋常的東西。因此,只有那些意料之外的信號,纔會引起我們的注意。
恰巧的是,自然圖像的平均傅里葉譜(averaged Fourier spectrum)遵守有名的 1/f1/f 法則,即頻率 ff 對應的傅里葉譜的幅度與其頻率成反比,數學公式表示爲
EA(f)1/f E{\mathcal{A}(f)} \propto 1/f
其中符號 EE{\cdot} 表示期望運算。本文方法主要的出發點是,作者洞察到所有的圖像傅里葉譜都遵守這個規則,並在論文中給出了 Figure 1,可以看出,單幅圖像的 Log Spectrum 與 2277 張圖像合成圖像的 Log Spectrum 非常相似。

除了 Log Spectrum 的相似性外,作者另外一個非常重要的洞察是平均 Log Spectrum 的局部線性(local linearity)性質,具體如 Figure 3 所示。可以從圖中看出,一幅圖像的 Log Spectrum 整體的平滑性更差一些,而 100 條 Log Spectrum 平均的結果更平滑一些,具有作者所說的 局部線性(local linearity)。背後的設想是,如果圖像中只有純背景的話,Log Spectrum 應該平滑且具有局部線性纔對(100 條 Log Spectrum 相加是爲了近似純背景的 Log Spectrum,而前面講的 Log Spectrum 的相似性是爲了這裏對純背景的近似提供合理性),恰恰是顯著目標的出現破壞了 Log Spectrum 的局部線性。

Idea

相似性即意味着冗餘性(Similarities imply redundancies),既然圖像擁有相同的 Log Spectrum ,那這些相似冗餘的東西並不會首先引起我們視覺系統的注意。只有那些頻譜中的統計奇異點(Statistical singularities)纔對應着異常區域,也就是目標可能存在的區域。

那該怎麼找出這些統計奇異點(Statistical singularities)呢?理想的狀態當然是含有目標時圖像的 Log Spectrum 減去同場景但不包含目標時的 Log Spectrum,但實際中拿到同場景的背景圖像幾乎不可能,我們要做得,就是隻從單幅圖像(Log Spectrum)中找出顯著區域(Log Spectrum 上的 Statistical singularities)。

那能不能從僅有的包含目標的圖像的 Log Spectrum 中估計出背景圖像的 Log Spectrum 呢?如果估計的好,那我們就可以用上面相減的套路了。顯然,這值得一試。作者在文中是採用均值濾波來估計背景圖像的 Log Spectrum。採用均值濾波,除了利用圖像背景 Log Spectrum 的局部線性這一性質外,還隱含假設了顯著目標的 Statistical singularities 對 Log Spectrum 的干擾是零均值。

由此,通過均值濾波,能夠獲得對背景圖像 Log Spectrum 的估計,而原圖像的 Log Spectrum 減去估計的背景圖像 Log Spectrum 就得到了顯著目標對應的 Log Spectrum,也就是本文題目中所說的 Spectral Residual,對這個 Spectral Residual 做傅里葉反變換即可得到顯著區域。

Method

在理清了文章的 idea 後,具體方法的內容也就順理成章了。本文之所以被引用如此之多,我想除了另闢蹊徑從背景估計來做顯著性檢測之外,還有其算法步驟非常簡單的緣故。文章所有步驟只有如下 5 步,分別是計算 頻譜幅值、相位、Log Spectrum,Spectrum Residual 和顯著性圖。

MATLAB 代碼也非常簡單

myFFT = fft2(inImg);
myLogAmplitude = log(abs(myFFT));        
myPhase = angle(myFFT);
mySmooth = imfilter(myLogAmplitude, fspecial('average', 3), 'replicate');
mySpectralResidual = myLogAmplitude - mySmooth;
saliencyMap = abs(ifft2(exp(mySpectralResidual + 1i*myPhase))).^2;

Algorithm steps

SR算法步驟:

1、 將輸入的圖像 f(x, y) 變換到頻域爲 F(f) ,它的相位譜與幅度譜分別記爲A(u,v) =F(f)和 ∅(u,
v)=angle(F( f)) ,

2、然後對幅度譜做對數變換記爲 L(u,v) =log(A(u,v)),對幅度譜L(U,V)通過與局部均值濾波器h(f)
進行卷積操作後獲得的幅度譜爲A(f)=h(f)*L(f) ,然後使用包含目標的 LOG 幅度譜與平滑之後的A(f)
幅度譜進行相減即得到了幅度譜殘差,其公式如下:R(f) = L(f) – A(f);

3、 相位譜帶入傅立葉反變換得到原圖的顯著圖 S(x,y),其公式如下: S(f)= F^(-1) [exp⁡(R(f)+i∙∅(f))]

4、 引入高斯平滑後,上面公式可修改爲:S(f)= g*〖|F^(-1) [exp⁡(R(f)+i∙∅(f))]|^2

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