![]() |
OpenCV 4.12.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 - 漢明距離仿函式在 DNA 比較中的改編。由於 DNA 的四個鹼基 A、C、G、T(或 RNA 的 A、G、C、U)可以用 2 位編碼,它使用查詢表實現來計算兩個序列之間的位對差異。
cv::flann::DNAmming2 - 漢明距離仿函式在 DNA 比較中的改編。由於使用標準暫存器的算術運算(AVX2 和 AVX-512 即將推出),鹼基差異計數已向量化。
cv::flann::HistIntersectionDistance - 直方圖交集距離仿函式。
cv::flann::HellingerDistance - 海林格距離仿函式。
cv::flann::ChiSquareDistance - 卡方距離仿函式。
cv::flann::KL_Divergence - Kullback-Leibler 散度仿函式。
儘管提供的實現涵蓋了廣泛的用例,也可以使用自定義實現。距離仿函式是一個類,其 operator() 計算兩個特徵之間的距離。如果該距離也是 kd-tree 相容距離,它還應提供一個 accum_dist() 方法,用於計算單個特徵維度之間的距離。
除了 operator() 和 accum_dist() 之外,距離仿函式還應將 ElementType 和 ResultType 定義為其操作的元素的型別以及其計算結果的型別。如果距離仿函式可以用作 kd-tree 距離(這意味著一對特徵之間的完整距離可以從單個維度之間的部分距離累加),則距離仿函式內部應存在 typedef is_kdtree_distance。如果距離不是 kd-tree 距離,但它是向量空間中的距離(其操作的元素的單個維度可以獨立訪問),則仿函式內部應定義 typedef is_vector_space_distance。如果兩者都沒有定義,則假定該距離是度量距離,並且僅用於對通用度量距離進行操作的索引。
| Distance::ResultType cv::flann::GenericIndex< Distance >::DistanceType |
| 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 & | params ) |
| void cv::flann::GenericIndex< Distance >::knnSearch | ( | const std::vector< ElementType > & | query, |
| std::vector< int > & | 索引, | ||
| std::vector< DistanceType > & | 距離, | ||
| int | knn, | ||
| const ::cvflann::SearchParams & | params ) |
使用索引對給定查詢點執行 K-最近鄰搜尋。
| query | 查詢點 |
| 索引 | 將包含找到的 K-最近鄰索引的向量。其大小必須至少為 knn。 |
| 距離 | 將包含找到的 K-最近鄰距離的向量。其大小必須至少為 knn。 |
| knn | 要搜尋的最近鄰數量。 |
| params | SearchParams |
| int cv::flann::GenericIndex< Distance >::radiusSearch | ( | const Mat & | query, |
| Mat & | 索引, | ||
| Mat & | 距離, | ||
| DistanceType | radius, | ||
| const ::cvflann::SearchParams & | params ) |
| int cv::flann::GenericIndex< Distance >::radiusSearch | ( | const std::vector< ElementType > & | query, |
| std::vector< int > & | 索引, | ||
| std::vector< DistanceType > & | 距離, | ||
| DistanceType | radius, | ||
| const ::cvflann::SearchParams & | params ) |
使用索引對給定查詢點執行半徑最近鄰搜尋。
| query | 查詢點。 |
| 索引 | 將包含找到的最近鄰索引的向量。 |
| 距離 | 將包含找到的最近鄰距離的向量。其元素數量與索引相同。 |
| radius | 搜尋半徑。 |
| params | SearchParams |
此函式返回找到的最近鄰數量。
|
inline |
|
inline |
|
inline |