20160907-Flann
layout | title | categories | tags | date | description | ||
---|---|---|---|---|---|---|---|
post
|
近邻查询近似算法库FLANN
|
|
|
2016-09-07 02:25:24 -0700
|
近似近邻查询,作为大数据搜索方面的算法层出不穷,其中有基于树和基于hash的最为多见。
|
引言
近似近邻算法在大型应用中是解决搜索的关键技术。而近似近邻算法的研究中,一部分是基于树结构实现的,一部分是基于hash算法。今FLANN是一个开源库,opencv中已经集成了该module.
- github: FLANN - Fast Library for Approximate Nearest Neighbors
红黑树
https://blog.csdn.net/weewqrer/article/details/51866488
用途
红黑树和AVL树一样都对插入时间、删除时间和查找时间提供了最好可能的最坏情况担保。对于查找、插入、删除、最大、最小等动态操作的时间复杂度为O(lgn).常见的用途有以下几种:
- STL(标准模板库)中在set map是基于红黑树实现的。
- Java中在TreeMap使用的也是红黑树。
- epoll在内核中的实现,用红黑树管理事件块。
- linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块
红黑树 VS AVL树
常见的平衡树有红黑树和AVL平衡树,为什么STL和linux都使用红黑树作为平衡树的实现?大概有以下几个原因:
从实现细节上来讲,如果插入一个结点引起了树的不平衡,AVL树和红黑树都最多需要2次旋转操作,即两者都是O(1);但是在删除node引起树的不平衡时,最坏情况下,AVL需要维护从被删node到root这条路径上所有node的平衡性,因此需要旋转的量级O(logN),而RB-Tree最多只需3次旋转,只需要O(1)的复杂度
从两种平衡树对平衡的要求来讲,AVL的结构相较RB-Tree来说更为平衡,在插入和删除node更容易引起Tree的unbalance,因此在大量数据需要插入或者删除时,AVL需要rebalance的频率会更高。因此,RB-Tree在需要大量插入和删除node的场景下,效率更高。自然,由于AVL高度平衡,因此AVL的search效率更高。
总体来说,RB-tree的统计性能是高于AVL的
FLANN概述
首先阐述了近似结果查询的重要性,通过实验结果分析了最有效的近似nn算法中,随机KD森林是最有效的,另外提出了一个新的方法:优先查找k-means树,尤其是针对视觉任务中常用的二进制特征,提出了多层聚类树。为了应用于大数据环境下,还有分布式环境下nn查找框架。
相关名词定义
- KNN(K-nearest neighbor search):说白了,就是从数据集合了找K个最接近的
- RNN(radius nearest neighbor search):就是返回一定半径范围内的所有数据。当然这个半径有很多不同的定义。
参考文献
- K-D Tree
- R 树简介
- 从B树、B+树、B*树谈到R 树
- 线段树
- 红黑树
20160907-Flann相关推荐
- PCL-1.8.1从源码搭建开发环境二(FLANN库的编译)
原文首发于微信公众号「3D视觉工坊」,PCL-1.8.1从源码搭建开发环境二(FLANN库的编译) 首先,快速近似最近邻搜索库FLANN-Fast Library for Approximate Ne ...
- FLANN特征匹配(Python)
输入图片 算法输出图 可以看到,这里的算法效果比之前的ORB算法要好很多了! 可以点击来访问一下,就知道差别了~ ORB特征匹配(python) 代码 import cv2 from matplotl ...
- 学习OpenCV——Surf(特征点篇)flann快速最近邻搜索算法
Surf(Speed Up Robust Feature) Surf算法的原理 ...
- 【计算机视觉】OpenCV的最近邻开源库FLANN
FLANN介绍 FLANN库全称是Fast Library for Approximate Nearest Neighbors,它是目前最完整的(近似)最近邻开源库.不但实现了一系列查找算法,还包含了 ...
- OpenCV之feature2d 模块. 2D特征框架(2)特征描述 使用FLANN进行特征点匹配 使用二维特征点(Features2D)和单映射(Homography)寻找已知物体 平面物体检测
特征描述 目标 在本教程中,我们将涉及: 使用 DescriptorExtractor 接口来寻找关键点对应的特征向量. 特别地: 使用 SurfDescriptorExtractor 以及它的函数 ...
- 使用FLANN进行特征点匹配
目标 在本教程中我们将涉及以下内容: 使用 FlannBasedMatcher 接口以及函数 FLANN 实现快速高效匹配( 快速最近邻逼近搜索函数库(Fast Approximate Nearest ...
- OpenCV SURF FLANN匹配单应性的实例(附完整代码)
OpenCV SURF FLANN匹配单应性的实例 OpenCV SURF FLANN匹配单应性的实例 OpenCV SURF FLANN匹配单应性的实例 #include <iostream& ...
- OpenCV SURF FLANN匹配的实例(附完整代码)
OpenCV SURF FLANN匹配的实例 OpenCV SURF FLANN匹配的实例 OpenCV SURF FLANN匹配的实例 #include <iostream> #incl ...
- OpenCV FLANN在数据集中搜索查询图片的实例(附完整代码)
OpenCV FLANN在数据集中搜索查询图片的实例 OpenCV FLANN在数据集中搜索查询图片的实例 OpenCV FLANN在数据集中搜索查询图片的实例 #include <iostre ...
- OpenCV与FLANN的功能匹配
OpenCV与FLANN的功能匹配 与FLANN的功能匹配 目标 理论 代码 结果 与FLANN的功能匹配 目标 在本教程中,您将学习如何: 使用cv :: FlannBasedMatcher界面,以 ...
最新文章
- 傅里叶频域,复数域,冲激函数,香农采样(不介绍公式-只介绍是啥)另一种思维
- 【java】之读取InputStream流
- Android开发学习之路--Camera之初体验
- lingo变量无限制版本_LINGO笔记
- Linq中dbSet 的查询
- Three.js编辑器editor使用详解
- bingo update1
- WordPress评论摘要标签:comment_excerpt
- python爬取网易云音乐评论分析_Python爬取网易云音乐评论(附加密算法)
- Android Studio 选项菜单和动画结合_安卓手机关于“开发者选项”你该知道的几件事...
- 4.服务器的品牌和型号
- 篇一、Flask打造 Python Web 开发的灵活框架,实现简易登录。要求有 Python、HTML 和 CSS 基础。
- 约坡慈尉仪特诨谙凹毖仍怯滋傥丛
- 快排的优化策略(3种快排4种优化)
- 盘点程序员逃离一线的Plan B
- Windows 10下载安装openjdk及环境变量配置(以openjdk 8为例)
- 几种社会化分享工具总结
- windows7登录密码忘了怎么办?
- ctf(vip限免)WP
- Gorgon黑客组织再显新招:通过在线网盘发起“三重奏”攻击
热门文章
- 一行命令​解锁网易云音乐客户端变灰歌曲
- linux 网卡天启与关闭,Linux网络配置与安全管理
- OC 获取view相对位置_“至尊”武士进化!索泰GeForce RTX 308010G6X天启OC显卡深度评测...
- emoji mysql 配置_MySql支持Emoji表情
- 【NOIP模拟赛】铁路运输
- iOS 微信、支付宝、银联、Paypal 支付组件封装
- 动态规划——最长递增子序列
- Unity Shader - 实现类似镜面反射、水面扰动效果
- 入门图形学:光照模型(二)
- 绘制炫酷的地图,不只是pyecharts!