GIST特征描述符使用

来源:http://www.cnblogs.com/justany/archive/2012/12/06/2804211.html

一种场景特征描述

场景特征描述?

通常的特征描述符都是对图片的局部特征进行描述的,以这种思路进行场景描述是不可行的。

比如:对于“大街上有一些行人”这个场景,我们必须通过局部特征辨认图像是否有大街、行人等对象,再断定这是否是满足该场景。但这个计算量无疑是巨大的,且特征向量也可能大得无法在内存中存储计算。

例如即使使用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 [email protected] $^ $(WFFTLIB) -lfftw3f

添加-lm,改成:

compute_gist: compute_gist.c gist.o standalone_image.o
gcc -Wall -g -o [email protected] $^ $(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

时间: 2024-10-31 01:03:10

GIST特征描述符使用的相关文章

图像GIST特征和LMGIST包的python实现(有github)

1什么是Gist特征 ???????(1) 一种宏观意义的场景特征描述 ???????(2) 只识别"大街上有一些行人"这个场景,无需知道图像中在那些位置有多少人,或者有其他什么对象. ???????(3) Gist特征向量可以一定程度表征这种宏观场景特征 GIST定义下列五种对空间包络的描述方法 空间包络名 阐释 自然度(Degree of Naturalness) 场景如果包含高度的水平和垂直线,这表明该场景有明显的人工痕迹,通常自然景象具有纹理区域和起伏的轮廓.所以,边缘具有高度

【综述】(中科院)樊彬老师-“局部图像特征描述概述”

[综述](中科院)樊彬老师-“局部图像特征描述概述” 这次我们荣幸地邀请到中国科学院自动化研究所的樊彬老师为我们撰写图像特征描述符方面的最新综述.樊彬老师在图像特征描述方面已连续发表了包括TPAMI.PR.ICCV.CVPR在内的多篇高质量论文.他的个人主页为:http://www.sigvc.org/bfan/ 以后我们将持续邀请国内外众多老师做最新的视觉计算专业综述报告,如特征提取和描述.稀疏表达.人体跟踪.三维衣服布料动画.轻量级Web3D等,并陆续在学术论坛上发布.各位老师会尽量使综述通

SIFT解析(三)生成特征描述子

以上两篇文章中检测在DOG空间中稳定的特征点,lowe已经提到这些特征点是比Harris角点等特征还要稳定的特征.下一步骤我们要考虑的就是如何去很好地描述这些DOG特征点. 下面好好说说如何来描述这些特征点.许多资料中都提到SIFT是一种局部特征,这是因为在SIFT描述子生成过程中,考虑的是该特征点邻域特征点的分布情况(而没有利用全局信息).本步骤中主要计算过程包括:确定特征点的方向和生成特征描述符. 确定特征点方向 在特征点的确定过程中,特征点的坐标以及尺度被确定下来(坐标很重要,尺度更重要,

图像检索:CEDD(Color and Edge Directivity Descriptor)算法 颜色和边缘的方向性描述符

颜色和边缘的方向性描述符(Color and Edge Directivity Descriptor,CEDD) 本文节选自论文<Android手机上图像分类技术的研究>. CEDD具有抽取特征速度较快,特征描述符占用空间较小的优势.下面就对CEDD原理进行详细的阐述和分析. 1.颜色信息 CEDD特征结合了颜色和纹理两方面信息,本小结将给出颜色信息提取的过程,重点分析RGB-HSV模型转换.10-bins模糊过滤器和24-bins模糊过滤器的原理. 1.1.RGB模型转换为HSV模型 RGB

BRIEF 特征描述子

Binary Robust Independent Elementary Features 1. BRIEF的基本原理 我们已经知道SIFT特征采用了128维的特征描述子,由于描述子用的浮点数,所以它将会占用512 bytes的空间.类似地,对于SURF特征,常见的是64维的描述子,它也将占用256bytes的空间.如果一幅图像中有1000个特征点(不要惊讶,这是很正常的事),那么SIFT或SURF特征描述子将占用大量的内存空间,对于那些资源紧张的应用,尤其是嵌入式的应用,这样的特征描述子显然是

【局部描述符】韦伯局部描述符(Weber Local Descriptor,WLD)

韦伯局部描述符(Weber Local Descriptor,WLD)是一种纹理特征描述符,广泛用于纹理分类 .目标检测.人脸识别.图像篡改检测领域. 一.韦伯定律 在黑色的纸上用白色的笔写字比用深色的笔写字更容易被看清,这是因为这种刺激达到了一定的阈值,从而引起了我们的感官刺激.韦伯定律是反映心理量和物理量之间关系的定律,它表明能够引起感觉差异的差别阈值与原始刺激的强度之比是一个常量,即: 其中k称作韦伯比是一个常量,ΔI表示差别阈值,I表示原始刺激的强度.由此可以推知,刺激的变化所引起的感觉

OpenCV4Android 提取特征点描述符(Feature Descriptor)

OpenCV4Android 提取特征点描述符(Feature Descriptor) 在得到keypoints之后(参考前面),通过使用相应的FeatureDescriptor就可计算得到关键点处的描述子. Native Code: JNIEXPORT void JNICALL Java_com_example_test_NativeUtil_computeDescripors( JNIEnv *env, jclass thiz, jlong mGrayAddr, jlong mRgbaAdd

进程与进程描述符(task_struct)

一. 进程 进程(Process) 计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述,进程是程序的实体. --------------------------------------------------------------- 释义:一段程序的执行过程 特征:动态.独立.异步.并发 结构特征

Python描述符常用场景详解

Descriptors( 描述符 ) 是语言中一个深奥但很重要的一个黑魔法,它被广泛应用于 Python 语言的内核,熟练掌握描述符将会为 Python程序员 的工具箱添加一个额外的技巧.本文将讲述描述符的定义以及一些常见的场景,并且在文末会补充一下 __getattr , __getattribute__, __getitem__ 这三个同样涉及到属性访问的魔术方法,希望对大家 学习python有所帮助. 描述符的定义 descr__get__(self, obj, objtype=None)