一種場景特征描述
場景特征描述?
通常的特征描述符都是對圖片的局部特征進行描述的,以這種思路進行場景描述是不可行的。
比如:對於“大街上有一些行人”這個場景,我們必須通過局部特征辨認圖像是否有大街、行人等對象,再斷定這是否是滿足該場景。但這個計算量無疑是巨大的,且特征向量也可能大得無法在內存中存儲計算。
例如即使使用GIST進行1MB的圖像數據搜索,也需要3.8GB的RAM空間。
—— Evaluation of GIST descriptors for webscale 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實現
- 首先在LEAR下載其提供的Lear's GIST implementation。
由於其基於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
注意事項
- 輸入圖片必須是原始(也就是二進制)的PGM/PPM格式的圖片。
- 輸入圖片的尺寸必須是相同的,否則計算出來的GIST沒有什么意義。
- 通過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

