首页
登录 | 注册

flann索引类

flann::Index 是Flann近邻索引类,该类用于抽象的不同类型的最近搜索索引。


namespace flann
 {
     template<typename Distance>
     class Index
     {
         typedef typename Distance::ElementType ElementType;
         typedef typename Distance::ResultType DistanceType;
     public:
         Index(const IndexParams& params, Distance distance = Distance() );
         Index(const Matrix<ElementType>& points, const IndexParams& params,
                 Distance distance = Distance() );
         ~Index();
         //建立最近邻搜索索引。
         void buildIndex();
         void buildIndex(const Matrix<ElementType>& points);
         //增加点到已建立的索引中,为了避免失衡,该方法具有增加大量的点后可以选择重建索引的选项默认为2
         void addPoints(const Matrix<ElementType>& points,float rebuild_threshold = 2);
         //从索引中移除指定id的点  ,其余其他点的索引不变  
         void removePoint(size_t point_id) ;
         //返回指定id数据的指针           
         ElementType* getPoint(size_t point_id);
         //为一组查询点执行最邻近搜索
         @param queries 包含查询点矩阵 ,矩阵尺寸为查询点数*维数
         @param indices 保存被找到的K最近邻的索引号,大小是查询点数*knn
         @param knn 查询点个数
         @param params 搜索参数,其值越大,搜索精度越高,但是会消耗更多的时间,如果要检索所有叶子,使用宏值CHECKS_UNLIMITED
         int knnSearch(const Matrix<ElementType>& queries,
                        Matrix<int>& indices,
                        Matrix<DistanceType>& dists,
                        size_t knn,
                        const SearchParams& params);
         int knnSearch(const Matrix<ElementType>& queries,
                        std::vector< std::vector<int> >& indices,
                        std::vector<std::vector<DistanceType> >& dists,
                        size_t knn,
                        const SearchParams& params);
         int radiusSearch(const Matrix<ElementType>& queries,
                          Matrix<int>& indices,
                          Matrix<DistanceType>& dists,
                          float radius,
                          const SearchParams& params);
         //执行一系列点的半径搜索
         int radiusSearch(const Matrix<ElementType>& queries,
                           std::vector< std::vector<int> >& indices,
                           std::vector<std::vector<DistanceType> >& dists,
                           float radius,
                           const SearchParams& params);
         void save(std::string filename);
         int veclen() const;
         int size() const;
         IndexParams getParameters() const;
         flann_algorithm_t getType() const;
}; }




相关文章

  • 阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?
    轻松筹首创了"大病救助"模式,帮助了众多病患在第一时间解決了医疗资金等问题,为了从源头解决了医疗资金问题.而在轻松筹这样全球5.5亿用户信赖的大病筹款平台的背后,是日益增长的各种数据.面对这样数据量所造成的巨大挑战,阿里 ...
  • 源码|详解分布式事务之 Seata-Client 原理及流程
    前言 在分布式系统中,分布式事务是一个必须要解决的问题,目前使用较多的是最终一致性方案.自年初阿里开源了Fescar(四月初更名为Seata)后,该项目受到了极大的关注,目前已接近 8000 Star.Seata 以高性能和零侵入的特性为目 ...
  • 现代IM系统中的消息系统架构 - 架构篇
    前言 IM全称是『Instant Messaging』,中文名是即时通讯.在这个高度信息化的移动互联网时代,生活中IM类产品已经成为必备品,比较有名的如钉钉.微信.QQ等以IM为核心功能的产品.当然目前微信已经成长为一个生态型产品,但其核心 ...
  • 简单的SSM-Shiro安全框架搭建
    首先需要导jar包! 配置你自己的web.xml CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 f ...
  • 字符串: 字符串用单引号(')或双引号(")括起来,不可变 1,find通过元素找索引,可切片,找不到返回-1 2,index,找不到报错. 3,split 由字符串分割成列表,默认按空格. 4,captalize 首字母大写,其 ...
  • 什么是GIL?GIL对多线程的影响 GIL全称Global Interpreter Lock(全局解释器锁).GIL和Python语言没有任何关系,只是因为历史原因导致在官方推荐的解释器Cpython中遗留的问题.(多线程)每个线程在执行的 ...

2020 jeepshoe.net webmaster#jeepshoe.net
13 q. 0.316 s.
京ICP备10005923号