OpenCV 4.10.0
开源计算机视觉库
|
FLANN 最近邻索引类。此类使用用于构建索引的元素类型进行模板化。 更多...
#include <opencv2/flann.hpp>
公共类型 | |
typedef Distance::ResultType | DistanceType |
typedef Distance::ElementType | ElementType |
公共成员函数 | |
GenericIndex (const Mat &features, const ::cvflann::IndexParams ¶ms, Distance distance=Distance()) | |
为给定数据集构建最近邻搜索索引。 | |
~GenericIndex () | |
const ::cvflann::IndexParams * | getIndexParameters () |
::cvflann::IndexParams | getParameters () |
void | knnSearch (const Mat &queries, Mat &indices, Mat &dists, int knn, const ::cvflann::SearchParams ¶ms) |
void | knnSearch (const std::vector< ElementType > &query, std::vector< int > &indices, std::vector< DistanceType > &dists, int knn, const ::cvflann::SearchParams ¶ms) |
使用索引对给定查询点执行 K 近邻搜索。 | |
int | radiusSearch (const Mat &query, Mat &indices, Mat &dists, DistanceType radius, const ::cvflann::SearchParams ¶ms) |
int | radiusSearch (const std::vector< ElementType > &query, std::vector< int > &indices, std::vector< DistanceType > &dists, DistanceType radius, const ::cvflann::SearchParams ¶ms) |
使用索引对给定查询点执行半径最近邻搜索。 | |
void | save (String filename) |
int | size () const |
int | veclen () const |
FLANN 最近邻索引类。此类使用用于构建索引的元素类型进行模板化。
Distance
仿函数指定用于计算两个点之间距离的度量。有一些Distance
仿函数可以直接使用
cv::cvflann::L2_Simple - 平方欧几里得距离仿函数。这是更简单、展开的版本。对于非常低维数据(例如 3D 点)来说,这是更优的选择。
cv::flann::L2 - 平方欧几里得距离仿函数,优化版本。
cv::flann::L1 - 曼哈顿距离仿函数,优化版本。
cv::flann::MinkowskiDistance - 明可夫斯基距离仿函数。这是高度优化的,带有循环展开。为了提高效率,省略了最后方的平方根计算。
cv::flann::MaxDistance - 最大距离仿函数。它计算两个向量之间的最大距离。这种距离不是有效的 kdtree 距离,它不是按维度加性的。
cv::flann::HammingLUT - 汉明距离仿函数。它使用查找表实现计算两个字符串之间的位差异。
cv::flann::Hamming - 汉明距离仿函数。如果可用,则使用库调用执行人口计数。查找表实现用作后备。
cv::flann::Hamming2 - 汉明距离仿函数。人口计数在 12 个算术运算中实现(其中一个为乘法)。
cv::flann::DNAmmingLUT - Hamming 距离仿函数对 DNA 比较的改编。由于 DNA 的四个碱基 A、C、G、T(或 RNA 的 A、G、C、U)可以在 2 位上编码,因此它使用查找表实现计算两个序列之间的位对差异。
cv::flann::DNAmming2 - Hamming 距离仿函数对 DNA 比较的改编。由于使用标准寄存器进行算术运算,碱基差异计数被矢量化(AVX2 和 AVX-512 应该在不久的将来出现)。
cv::flann::HistIntersectionDistance - 直方图交集距离仿函数。
cv::flann::HellingerDistance - 海林格距离仿函数。
cv::flann::ChiSquareDistance - 卡方距离仿函数。
cv::flann::KL_Divergence - 库尔贝克-莱布勒散度仿函数。
尽管提供的实现涵盖了广泛的情况,但也可以使用自定义实现。距离仿函数是一个类的 operator()
,它计算两个特征之间的距离。如果距离也是 kd-tree 兼容距离,它还应提供一个 accum_dist()
方法,该方法计算单个特征维之间的距离。
除了 operator()
和 accum_dist()
之外,距离仿函数还应定义 ElementType
和 ResultType
作为其操作的元素类型及其计算的结果类型。如果距离仿函数可以用作 kd-tree 距离(意味着一对特征之间的完整距离可以从单个维度之间的部分距离累积得到),则 typedef is_kdtree_distance
应该存在于距离仿函数中。如果距离不是 kd-tree 距离,但它是向量空间中的距离(可以独立访问其操作的元素的各个维度),则 typedef is_vector_space_distance
应该在仿函数中定义。如果未定义任何 typedef,则假设距离为度量距离,并且仅与对通用度量距离进行操作的索引一起使用。
typedef Distance::ResultType cv::flann::GenericIndex< Distance >::DistanceType |
typedef Distance::ElementType cv::flann::GenericIndex< Distance >::ElementType |
cv::flann::GenericIndex< Distance >::GenericIndex | ( | const Mat & | features, |
const ::cvflann::IndexParams & | params, | ||
Distance | distance = Distance() |
||
) |
为给定数据集构建最近邻搜索索引。
features | 包含要索引的特征(点)的矩阵。矩阵的大小为 num_features x feature_dimensionality,矩阵中元素的数据类型必须与索引的类型一致。 |
params | 包含索引参数的结构。将构建的索引类型取决于此参数的类型。请参见描述。 |
distance |
该方法使用指定的算法和指定的参数(由 params 定义)从一组特征构建一个快速搜索结构。params 是以下 IndexParams 后代类之一的引用
cv::flann::GenericIndex< Distance >::~GenericIndex | ( | ) |
|
inline |
|
inline |
void cv::flann::GenericIndex< Distance >::knnSearch | ( | const Mat & | 查询, |
Mat & | 索引, | ||
Mat & | 距离, | ||
int | knn, | ||
const ::cvflann::SearchParams & | 参数 | ||
) |
void cv::flann::GenericIndex< Distance >::knnSearch | ( | const std::vector< ElementType > & | 查询点, |
std::vector< int > & | 索引, | ||
std::vector< DistanceType > & | 距离, | ||
int | knn, | ||
const ::cvflann::SearchParams & | 参数 | ||
) |
使用索引对给定查询点执行 K 近邻搜索。
查询点 | 查询点 |
索引 | 将包含找到的 K 个最近邻居索引的向量。它必须至少有 knn 大小。 |
距离 | 将包含找到的 K 个最近邻居距离的向量。它必须至少有 knn 大小。 |
knn | 要搜索的最近邻居数量。 |
params | SearchParams |
int cv::flann::GenericIndex< Distance >::radiusSearch | ( | const Mat & | 查询点, |
Mat & | 索引, | ||
Mat & | 距离, | ||
DistanceType | 半径, | ||
const ::cvflann::SearchParams & | 参数 | ||
) |
int cv::flann::GenericIndex< Distance >::radiusSearch | ( | const std::vector< ElementType > & | 查询点, |
std::vector< int > & | 索引, | ||
std::vector< DistanceType > & | 距离, | ||
DistanceType | 半径, | ||
const ::cvflann::SearchParams & | 参数 | ||
) |
使用索引对给定查询点执行半径最近邻搜索。
查询点 | 查询点。 |
索引 | 将包含找到的最近邻居索引的向量。 |
距离 | 将包含找到的最近邻居距离的向量。它与索引具有相同的元素数量。 |
半径 | 搜索半径。 |
params | SearchParams |
此函数返回找到的最近邻居数量。
|
inline |
|
inline |
|
inline |