GIST特征描述符使用


一種場景特征描述

場景特征描述?

通常的特征描述符都是對圖片的局部特征進行描述的,以這種思路進行場景描述是不可行的。

比如:對於“大街上有一些行人”這個場景,我們必須通過局部特征辨認圖像是否有大街、行人等對象,再斷定這是否是滿足該場景。但這個計算量無疑是巨大的,且特征向量也可能大得無法在內存中存儲計算。

例如即使使用GIST進行1MB的圖像數據搜索,也需要3.8GB的RAM空間。

—— Evaluation of GIST descriptors for web­scale image search Talk

這迫使我們需要一種更加“宏觀”的特征描述方式,從而忽略圖片的局部特點。比如:我們無需知道圖像中在那些位置有多少人,或者有其他什么對象。

那么應該如何定義一種“宏觀”的場景特征描述呢?

我們注意到:

大多數城市看起來就像天空和地面由建築物外牆緊密連接;大部分高速公路看起來就像一個大表面拉伸天際線,里面充滿了凹型(車輛);而森林場景將包括在一個封閉的環境中,有垂直結構作為背景(樹),並連接到一定紋理的水平表面(草)。

如此看來,空間包絡可以一定程度表征這些信息。

 

五種空間包絡描述

我們定義下列五種對空間包絡的描述方法:

  • 自然度(Degree of Naturalness):場景如果包含高度的水平和垂直線,這表明該場景有明顯的人工痕跡,通常自然景象具有紋理區域和起伏的輪廓。所以,邊緣具有高度垂直於水平傾向的自然度低,反之自然度高。
  • 開放度(Degree of Openness):空間包絡是否是封閉(或圍繞)的。封閉的,例如:森林、山、城市中心。或者是廣闊的,開放的,例如:海岸、高速公路。
  • 粗糙度(Degree of Roughness):主要指主要構成成分的顆粒大小。這取決於每個空間中元素的尺寸,他們構建更加復雜的元素的可能性,以及構建的元素之間的結構關系等等。粗糙度與場景的分形維度有關,所以可以叫復雜度。
  • 膨脹度(Degree of Expansion):平行線收斂,給出了空間梯度的深度特點。例如平面視圖中的建築物,具有低膨脹度。相反,非常長的街道則具有高膨脹度。
  • 險峻度(Degree of Ruggedness):即相對於水平線的偏移。(例如,平坦的水平地面上的山地景觀與陡峭的地面)。險峻的環境下在圖片中生產傾斜的輪廓,並隱藏了地平線線。大多數的人造環境建立了平坦地面。因此,險峻的環境大多是自然的。

從而基於這五點對圖像進行特征描述。

本文並不准備深入GIST的算法,如想了解具體算法,請參考參考資料1。

 

MatLab實現

參考資料2提供了一個MatLab實現。

例如通過圖片計算GIST特征描述,在使用LMgist的情況下,可以這么寫:

% 讀取圖片
img = imread('demo2.jpg');

% 設置GIST參數
clear param
param.orientationsPerScale = [8 8 8 8]; % number of orientations per scale (from HF to LF)
param.numberBlocks = 4;
param.fc_prefilt = 4;

% 計算GIST
[gist, param] = LMgist(img, '', param);

具體請參考參考資料2。

 

C實現

由於其基於FFTW3(the Faster Fourier Transform in the West),所以我們還需要先安裝fftw3。

  • 下載頁面下載一個合適的FFTW3版本。
  • Linux或者Mac需要在終端運行configure時配置浮點數版本(Windows沒試過,不過Lear's GIST implementation的Readme中說明了只能在Linux和Mac上跑,所以Windows安裝這個也沒有……),即

./configure --enable-single

  •  在進行編譯:

make

make check

sudo make install

  • 編譯Lear's GIST implementation

需要將Makefile的:

compute_gist: compute_gist.c gist.o standalone_image.o
gcc -Wall -g -o $@ $^ $(WFFTLIB) -lfftw3f

添加-lm,改成:

compute_gist: compute_gist.c gist.o standalone_image.o
gcc -Wall -g -o $@ $^ $(WFFTLIB) -lfftw3f -lm

然后:

make

  • 將生成compute_gist程序,則可以對PPM圖片進行GIST計算。例如在終端輸入:

./compute_gist ar.ppm

將會出現960個浮點數,如下:

0.0579 0.1926 0.0933 0.0662 ....

……

.... 0.0563 0.0575 0.0640

 

注意事項

  1. 輸入圖片必須是原始(也就是二進制)的PGM/PPM格式的圖片。
  2. 輸入圖片的尺寸必須是相同的,否則計算出來的GIST沒有什么意義。
  3. 通過SVM訓練來進行圖片檢測,2001年那篇論文得出83.7%的判斷准確度。

 

參考資料

Modeling the Shape of the Scene: A Holistic Representation of the Spatial Envelope . Aude Oliva & Antonio Torralba . January 22, 2001

Modeling the shape of the scene: a holistic representation of the spatial envelope DEMO


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM