caltech-image-search-1.0
所属分类:模式识别(视觉/语音等)
开发工具:C++
文件大小:145KB
下载次数:131
上传日期:2011-12-04 23:59:45
上 传 者:
imageprocessing2
说明: 大规模图像检索的代码,matlab与c++混合编程。总结了目前图像检索领域目前主要存在的方法。通过阅读该代码,可以对于经典的“词袋”模型(bow模型)有个具体的了解,但是该代码没有提供前序的特征提取,是直接从对提取好的特征向量聚类开始的,包括了k-means,分层k-means(HKM)聚类,倒排文件的建立和索引等,该代码还提供了局部敏感哈希(LSH)方法。最后,这份代码是下面这篇论文的作者提供的,
Indexing in Large Scale Image Collections: Scaling Properties and Benchmark
(This C++/Matlab package implements several algorithms used for large scale
image search. The algorithms are implemented in C++, with an eye on large
scale databases. It can handle millions of images and hundreds of millions
of local features. It has MEX interfaces for Matlab, but can also be used
(with possible future modifications) from Python and directly from C++. It
can also be used for approximate nearest neighbor search, especially using
the Kd-Trees or LSH implementations.
The algorithms can be divided into two broad categories, depending on the
approach taken for image search:
1. Bag of Words:
----------------
The images are represented by histograms of visual words.
It includes algorithms for computing dictionaries:
* K-Means.
* Approximate K-Means (AKM).
* Hierarchical K-Means (HKM).
It also includes algorithms for fast search:
* Inverted File Index.
* Inverted File Index with Extra Information (for example for implementing
Hamming Embedding).
* )
文件列表:
ccvAkmeansClean.m (503, 2010-11-03)
ccvAkmeansCreate.m (9472, 2010-11-03)
ccvAkmeansLookup.m (893, 2010-11-03)
ccvBowGetDict.m (7568, 2010-11-03)
ccvBowGetWordsClean.m (930, 2010-11-03)
ccvBowGetWordsInit.m (2064, 2010-11-03)
ccvBowGetWords.m (2631, 2010-11-03)
ccvBowSpCheck.m (1831, 2010-11-03)
ccvDistance.m (2080, 2010-11-03)
ccvHkmClean.m (399, 2010-11-03)
ccvHkmCreate.m (2357, 2010-11-03)
ccvHkmExport.m (672, 2010-11-03)
ccvHkmImport.m (545, 2010-11-03)
ccvHkmKnn.m (1003, 2010-11-03)
ccvHkmLeafIds.m (579, 2010-11-03)
ccvInvFileClean.m (376, 2010-11-03)
ccvInvFileCompStats.m (1285, 2010-11-03)
ccvInvFileExtraClean.m (391, 2010-11-03)
ccvInvFileExtraCompStats.m (1325, 2010-11-03)
ccvInvFileExtraInsert.m (940, 2010-11-03)
ccvInvFileExtraSearch.m (3580, 2010-11-03)
ccvInvFileInsert.m (926, 2010-11-03)
ccvInvFileLoad.m (412, 2010-11-03)
ccvInvFileSave.m (411, 2010-11-03)
ccvInvFileSearch.m (2733, 2010-11-03)
ccvKdtClean.m (331, 2010-11-03)
ccvKdtCreate.m (2105, 2010-11-03)
ccvKdtKnn.m (1150, 2010-11-03)
ccvKdtPoints.m (918, 2010-11-03)
ccvKnn.m (1532, 2010-11-03)
ccvLshBucketId.m (632, 2010-11-03)
ccvLshBucketPoints.m (1020, 2010-11-03)
ccvLshClean.m (391, 2010-11-03)
ccvLshCreate.m (3214, 2010-11-03)
ccvLshFuncVal.m (1092, 2010-11-03)
ccvLshInsert.m (763, 2010-11-03)
ccvLshKnn.m (1154, 2010-11-03)
ccvLshLoad.m (439, 2010-11-03)
ccvLshSave.m (440, 2010-11-03)
ccvLshSearch.m (914, 2010-11-03)
... ...
=============================================================================
CALTECH LARGE SCALE IMAGE SEARCH TOOLBOX
=============================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DESCRIPTION
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
This C++/Matlab package implements several algorithms used for large scale
image search. The algorithms are implemented in C++, with an eye on large
scale databases. It can handle millions of images and hundreds of millions
of local features. It has MEX interfaces for Matlab, but can also be used
(with possible future modifications) from Python and directly from C++. It
can also be used for approximate nearest neighbor search, especially using
the Kd-Trees or LSH implementations.
The algorithms can be divided into two broad categories, depending on the
approach taken for image search:
1. Bag of Words:
----------------
The images are represented by histograms of visual words.
It includes algorithms for computing dictionaries:
* K-Means.
* Approximate K-Means (AKM).
* Hierarchical K-Means (HKM).
It also includes algorithms for fast search:
* Inverted File Index.
* Inverted File Index with Extra Information (for example for implementing
Hamming Embedding).
* Min-Hash.
2. Full Representation:
-----------------------
The images are represented by the individual features.
It includes algorithms for fast approximate nearest neighbor search:
* Kd-Trees (Kdt).
* Hierarchical K-Means (Hkm).
* Locality Senstivie Hashing (LSH), with several hash functions:
** Hamming hash function (bit sampling, approximates hamming distance) i.e.
h = x[i]
** Cosine hash function (random hyperplanes through the origin, approximates
dot product) i.e. h = sign()
** L1 hash function (approximates the L1 distance) i.e. h = floor((x[i]-b) / w)
** L2 hash function (random hyperplanes with bias, approximates
euclidean distance, similar to E2LSH) i.e. h = floor(( - b) / w)
** Spherical Simplex (approximates distances on the unit hypersphere)
** Spherical Orthoplex (approximates distances on the unit hypersphere)
** Spherical Hypercube (approximates distances on the unit hypersphere)
** Binary Gausian Kernels (approximates gaussian kernel)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CHANGES
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Nov. 5, 2010: version 1.0.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CONTENTS
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Approximate K-Means
--------------------
ccvAkmeansClean.m: clears an AKM dictionary from memory
ccvAkmeansCreate.m: creates an AKM dictionary
ccvAkmeansLookup.m: looks up words in an AKM dictionary
Bag of Words
------------
ccvBowGetDict.m: creates a dictionary of visual words. Supports AKM & HKM.
ccvBowGetWordsClean.m: clears a dictionary from memory.
ccvBowGetWordsInit.m: initializes a dictionary to lookup a sequence of images.
ccvBowGetWords.m: looks up words in a dictionary. The typical sequence is to
call ccvBowGetWordsInit at the start, then call ccvBowGetWords in a loop
for different images, and finally call ccvBowGetWordsClean to clear it
from memory.
Distance
--------
ccvDistance.m: computes distances between pairs of point sets.
Hierarchical K-Means
--------------------
ccvHkmClean.m: clears an HKM structure from memory.
ccvHkmCreate.m: creats and HKM structure.
ccvHkmExport.m: exports an HKM structure to Matlab.
ccvHkmImport.m: imports and HKM structure form Matlab.
ccvHkmKnn.m: performs k-nearest neighbor on an HKM structure.
ccvHkmLeafIds.m: retrieves the leaf id for input points. used in HKM
dictionaries as the visual words.
Inverted File
--------------
ccvInvFileClean.m: clears an inverted file from memory
ccvInvFileCompStats.m: prepares the inverted file for search operations.
ccvInvFileInsert.m: inserts docs in the inverted file
ccvInvFileLoad.m: loads an inverted file from a file
ccvInvFileSave.m: saves an inverted file to a file
ccvInvFileSearch.m: searches through the inverted file
Extra Inverted File (Hamming Embedding)
----------------------------------------
ccvInvFileExtraClean.m: clears an inverted file from memory
ccvInvFileExtraCompStats.m: prepares the inverted file for search operations.
ccvInvFileExtraInsert.m: inserts docs in the inverted file
ccvInvFileExtraSearch.m: searches through the inverted file
Kd-Tree
--------
ccvKdtClean.m: clears a Kdt structure from memory
ccvKdtCreate.m: creates a Kdt
ccvKdtKnn.m: performs k-nearest neighbor on the kdt
ccvKdtPoints.m: returns the points that share the same leaves without computing
distances
K-Nearest Neighbor
-------------------
ccvKnn.m: performs brute force k-NN
Locality Sensitive Hashing
---------------------------
ccvLshBucketId.m: returns the id of the bucket
ccvLshBucketPoints.m: returns the points in a given bucket
ccvLshClean.m: clears an LSH from memory
ccvLshCreate.m: creates an LSH
ccvLshFuncVal.m: returns the values of the hash functions
ccvLshInsert.m: inserts into the LSH
ccvLshKnn.m: performs k-NN
ccvLshLoad.m: loads from a file
ccvLshSave.m: saves to a file
ccvLshSearch.m: returns points in the same bucket without distance computations
ccvLshStats.m: returns stats
ccvNormalize.m: normalizes input points
ccvNorm.m: returns the norm of the input points
ccvRandSeed.m: sets/restores the random seed
COMPILE.m: compiles the mex files
DEMO.m: demo file
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INSTALL
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
To install package, unzip the package somewhere:
cd ~
unzip caltech-image-search.zip
cd ~/caltech-image-search
Then compile the MEX files with Matlab:
matlab&
>> COMPILE
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DEMO
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
See the demo file DEMO.m for example usages.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CONTACT
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mohamed Aly
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
REFERENCE
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[1] Mohamed Aly, Mario Munich, and Pietro Perona.
Indexing in Large Scale Image Collections: Scaling Properties and Benchmark.
IEEE Workshop on Applications of Computer Vision WACV, January 2011.
近期下载者:
相关文件:
收藏者: