OXIESEC PANEL
- Current Dir:
/
/
usr
/
include
/
opencv2
/
flann
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
10/28/2024 06:50:42 AM
rwxr-xr-x
📄
all_indices.h
5.82 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
allocator.h
5.92 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
any.h
8.06 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
autotuned_index.h
20.36 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
composite_index.h
5.85 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
config.h
1.75 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
defines.h
4.61 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
dist.h
26.9 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
dummy.h
251 bytes
05/12/2017 03:45:27 AM
rw-r--r--
📄
dynamic_bitset.h
4.45 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
flann.hpp
2.31 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
flann_base.hpp
8.65 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
general.h
1.99 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
ground_truth.h
3.23 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
hdf5.h
7.13 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
heap.h
4.01 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
hierarchical_clustering_index.h
25.42 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
index_testing.h
10.56 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
kdtree_index.h
19.22 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
kdtree_single_index.h
19.7 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
kmeans_index.h
36.05 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
linear_index.h
3.61 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
logger.h
3.63 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
lsh_index.h
15.19 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
lsh_table.h
17.51 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
matrix.h
3.21 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
miniflann.hpp
5.75 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
nn_index.h
5.91 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
object_factory.h
2.83 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
params.h
3.2 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
random.h
3.61 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
result_set.h
14.64 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
sampling.h
2.78 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
saving.h
5.64 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
simplex_downhill.h
5.61 KB
05/12/2017 03:45:27 AM
rw-r--r--
📄
timer.h
2.47 KB
05/12/2017 03:45:27 AM
rw-r--r--
Editing: nn_index.h
Close
/*********************************************************************** * Software License Agreement (BSD License) * * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved. * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved. * * THE BSD LICENSE * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *************************************************************************/ #ifndef OPENCV_FLANN_NNINDEX_H #define OPENCV_FLANN_NNINDEX_H #include "general.h" #include "matrix.h" #include "result_set.h" #include "params.h" namespace cvflann { /** * Nearest-neighbour index base class */ template <typename Distance> class NNIndex { typedef typename Distance::ElementType ElementType; typedef typename Distance::ResultType DistanceType; public: virtual ~NNIndex() {} /** * \brief Builds the index */ virtual void buildIndex() = 0; /** * \brief Perform k-nearest neighbor search * \param[in] queries The query points for which to find the nearest neighbors * \param[out] indices The indices of the nearest neighbors found * \param[out] dists Distances to the nearest neighbors found * \param[in] knn Number of nearest neighbors to return * \param[in] params Search parameters */ virtual void knnSearch(const Matrix<ElementType>& queries, Matrix<int>& indices, Matrix<DistanceType>& dists, int knn, const SearchParams& params) { assert(queries.cols == veclen()); assert(indices.rows >= queries.rows); assert(dists.rows >= queries.rows); assert(int(indices.cols) >= knn); assert(int(dists.cols) >= knn); #if 0 KNNResultSet<DistanceType> resultSet(knn); for (size_t i = 0; i < queries.rows; i++) { resultSet.init(indices[i], dists[i]); findNeighbors(resultSet, queries[i], params); } #else KNNUniqueResultSet<DistanceType> resultSet(knn); for (size_t i = 0; i < queries.rows; i++) { resultSet.clear(); findNeighbors(resultSet, queries[i], params); if (get_param(params,"sorted",true)) resultSet.sortAndCopy(indices[i], dists[i], knn); else resultSet.copy(indices[i], dists[i], knn); } #endif } /** * \brief Perform radius search * \param[in] query The query point * \param[out] indices The indinces of the neighbors found within the given radius * \param[out] dists The distances to the nearest neighbors found * \param[in] radius The radius used for search * \param[in] params Search parameters * \returns Number of neighbors found */ virtual int radiusSearch(const Matrix<ElementType>& query, Matrix<int>& indices, Matrix<DistanceType>& dists, float radius, const SearchParams& params) { if (query.rows != 1) { fprintf(stderr, "I can only search one feature at a time for range search\n"); return -1; } assert(query.cols == veclen()); assert(indices.cols == dists.cols); int n = 0; int* indices_ptr = NULL; DistanceType* dists_ptr = NULL; if (indices.cols > 0) { n = (int)indices.cols; indices_ptr = indices[0]; dists_ptr = dists[0]; } RadiusUniqueResultSet<DistanceType> resultSet((DistanceType)radius); resultSet.clear(); findNeighbors(resultSet, query[0], params); if (n>0) { if (get_param(params,"sorted",true)) resultSet.sortAndCopy(indices_ptr, dists_ptr, n); else resultSet.copy(indices_ptr, dists_ptr, n); } return (int)resultSet.size(); } /** * \brief Saves the index to a stream * \param stream The stream to save the index to */ virtual void saveIndex(FILE* stream) = 0; /** * \brief Loads the index from a stream * \param stream The stream from which the index is loaded */ virtual void loadIndex(FILE* stream) = 0; /** * \returns number of features in this index. */ virtual size_t size() const = 0; /** * \returns The dimensionality of the features in this index. */ virtual size_t veclen() const = 0; /** * \returns The amount of memory (in bytes) used by the index. */ virtual int usedMemory() const = 0; /** * \returns The index type (kdtree, kmeans,...) */ virtual flann_algorithm_t getType() const = 0; /** * \returns The index parameters */ virtual IndexParams getParameters() const = 0; /** * \brief Method that searches for nearest-neighbours */ virtual void findNeighbors(ResultSet<DistanceType>& result, const ElementType* vec, const SearchParams& searchParams) = 0; }; } #endif //OPENCV_FLANN_NNINDEX_H