OpenCV 4.11.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 - 最大距离函数对象。它计算两个向量之间的最大距离。此距离不是有效的 kd 树距离,它不是逐维可加的。
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 - Kullback-Leibler 散度函数对象。
尽管提供的实现涵盖了大量的案例,但也可以使用自定义实现。距离函数对象是一个类,其 operator()
计算两特征之间的距离。如果距离也是 kd 树兼容距离,它还应该提供一个 accum_dist()
方法来计算各个特征维度之间的距离。
除了 operator()
和 accum_dist()
之外,距离函数对象还应该将 ElementType
和 ResultType
定义为其操作的元素类型和其计算的结果类型。如果距离函数对象可以用作 kd 树距离(这意味着可以从各个维度之间部分距离累积出一对特征之间的完整距离),则应该在距离函数对象内提供一个 typedef is_kdtree_distance
。如果距离不是 kd 树距离,但它是向量空间中的距离(可以独立访问其操作的元素的各个维度),则应该在函数对象内定义一个 typedef is_vector_space_distance
。如果未定义这两个 typedef 中的任何一个,则假定距离为度量距离,并且仅与对通用度量距离进行操作的索引一起使用。
Distance::ResultType cv::flann::GenericIndex< Distance >::DistanceType |
距离::ElementType cv::flann::GenericIndex< Distance >::ElementType |
cv::flann::GenericIndex< Distance >::GenericIndex | ( | const Mat & | 特征, |
const ::cvflann::IndexParams & | 参数, | ||
距离 | distance = Distance() ) |
为给定的数据集构建最近邻搜索索引。
特征 | 包含要索引的特征(点)的矩阵。矩阵大小为特征数 x 特征维度,矩阵中元素的数据类型必须与索引的类型一致。 |
参数 | 包含索引参数的结构体。将要构造的索引类型取决于此参数的类型。请参见描述。 |
距离 |
该方法使用指定的算法和参数(由 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 & | params ) |
void cv::flann::GenericIndex< Distance >::knnSearch | ( | const std::vector< ElementType > & | 查询点, |
std::vector< int > & | 索引, | ||
std::vector< DistanceType > & | 距离, | ||
int | knn, | ||
const ::cvflann::SearchParams & | params ) |
使用索引对给定的查询点执行 K 近邻搜索。
查询点 | 查询点 |
索引 | 将包含找到的 K 近邻索引的向量。它必须至少具有 knn 大小。 |
距离 | 将包含找到的 K 近邻距离的向量。它必须至少具有 knn 大小。 |
knn | 要搜索的最近邻数。 |
参数 | SearchParams |
int cv::flann::GenericIndex< Distance >::radiusSearch | ( | const Mat & | 查询点, |
Mat & | 索引, | ||
Mat & | 距离, | ||
DistanceType | 半径, | ||
const ::cvflann::SearchParams & | params ) |
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 |