flann

Product Quantization for Nearest Neighbor Search 论文笔记

坚强是说给别人听的谎言 提交于 2020-12-23 20:33:53
摘要    本文介绍了一种基于乘积量化的近似最近邻搜索方法。 这个想法是将空间分解为低维子空间的笛卡尔积,并分别量化每个子空间。 矢量由其子空间量化索引和短码表示。 可以从它们的码字有效地估计两个矢量之间的欧氏距离。 非对称版本增加了精度,因为它计算向量和码字之间的近似距离。 实验结果表明,我们的方法有效地搜索最近邻居,特别是与倒置文件系统相结合。 SIFT和GIST图像描述符的结果显示出优异的搜索精度,优于三种最先进的方法。 我们的方法的可扩展性在20亿个向量的数据集上得到验证。 简介    在本文中,我们使用量化构造短码字。 目标是使用向量到质心距离来估计距离,即,不对量化查询向量,仅将代码分配给数据库向量。 这减少了量化噪声并随后提高了搜索质量。 为了获得精确的距离,必须限制量化误差。 因此,质心的总数k应该足够大,例如,对于64位代码,k = 2^64。 这引发了关于如何学习码本和分配的几个问题: 首先,学习量化器所需的样本数量很大,即几倍于k。 其次,算法本身的复杂性令人望而却步。 最后,地球上可用的计算机内存量不足以存储表示质心的浮点值。    分层k均值(HKM)提高了学习阶段和相应分配程序的效率[13]。 然而,上述限制仍然适用,特别是关于存储器使用和学习集的大小。 另一种可能性是标量量化器,但就存储器和重建误差之间的权衡而言,它们提供了差的量化误差特性。

OpenCV 学习笔记 07 目标检测与识别

有些话、适合烂在心里 提交于 2020-11-27 03:25:56
目标检测与识别是计算机视觉中最常见的挑战之一。属于高级主题。 本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测。 1 目标检测与识别技术 为了与 OpenCV 学习笔记 05 人脸检测和识别 进行区分;需重新说明一下什么是目标检测。 目标检测是一个程序,它用来确定图像的某个区域是否有要识别的对象,对象识别是程序识别对象的能力。识别通常只处理已检测到对象的区域。若人们总是会在有人脸图像的区域去识别人脸。 在计算机视觉中有很多目标检测和识别的技术,本章会用到: 梯度直方图(Histogram of Oriented Gradient, HOG) 图像金字塔(image pyramid) 滑动窗口(sliding window) 与特征检测算法不同,这些算法是互补的。如在梯度直方图(HOG)中会使用滑动窗口技术。 1.1 HOG 描述符 HOG 是一个特征描述符,因此 HOG 与 SIFT、SURF 和 ORB 属于同一类型的描述符。 在图像和视觉处理中常常会进行目标检测,其实目标检测的内部机制都差不多,如人脸识别的 LBPH 描述符: 第一步:将图像划分成多个部分 第二步:计算各个部分的梯度 HOG 不是基于颜色值而是基于梯度来计算直方图。 HOG 所得到的 特征描述符 能够为 特征匹配 和 目标检测 (或目标识别)提供非常重要的信息。

OpenCV开发笔记(六十八):红胖子8分钟带你使用特征点Flann最邻近差值匹配识别(图文并茂+浅显易懂+程序源码)

▼魔方 西西 提交于 2020-08-14 01:49:24
若该文为原创文章,未经允许不得转载 原博主博客地址: https://blog.csdn.net/qq21497936 原博主博客导航: https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址: https://blog.csdn.net/qq21497936/article/details/107357296 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...(点击传送门) OpenCV开发专栏(点击传送门) 上一篇:《 OpenCV开发笔记(六十七):红胖子8分钟带你深入了解特征点暴力匹配(图文并茂+浅显易懂+程序源码) 》 下一篇:持续补充中… <br> 前言   红胖子,来也!   前面讲解了特征点,那么匹配特征点,就是匹配两者的相似度,相似度达到一定的阈值,则认为识别了。   考虑性能,除开暴力匹配外,还有最近邻匹配。 <br> Demo             <br> 最近邻匹配(FLANN)   FlannBasedMatcher中FLANN的含义是Fast Library forApproximate

《PCL点云库学习&VS2010(X64)》Part 35 VFH_Recognition——FLANN_Build_Tree

帅比萌擦擦* 提交于 2020-05-05 13:11:58
《PCL点云库学习&VS2010(X64)》Part 35 VFH_Recognition——FLANN_Build_Tree #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/console/parse.h> #include <pcl/console/print.h> #include <pcl/io/pcd_io.h> #include <boost/filesystem.hpp> #include <flann/flann.h> #include <flann/io/hdf5.h> #include <fstream> typedef std::pair<std::string, std::vector<float> > vfh_model; /** \brief Loads an n-D histogram file as a VFH signature * \param path the input file name * \param vfh the resultant VFH model */ bool loadHist (const boost::filesystem::path &path, vfh_model &vfh) { int vfh_idx; // Load

vs2013+qt5.3.2+pcl1.8.0+osg2.3开发环境配置

送分小仙女□ 提交于 2020-05-02 06:36:36
一、安装vs2013 注意:最好安装 VS2013 Update 5 ,不然有些项目会报莫名其妙的异常。 VS2013 Update 5下载: https://pan.baidu.com/s/1TAU5Qig3i-w7Cw3IeG-sPA 密码:3emj 二、安装Qt5.3.2 所有Qt版本下载地址: http://download.qt.io/archive/qt/ 所有Qt Creator下载地址: http://download.qt.io/archive/qtcreator/ 所有Qt VS开发插件下载地址: http://download.qt.io/archive/vsaddin/ Qt相关下载大全: http://download.qt.io/ 本文安装的是: qt版本: qt-opensource-windows-x86-msvc2013_opengl-5.3.2 下载地址: https://pan.baidu.com/s/15Ug2zk55mFzN28MwnmbnWw 密码:ys3y vs插件: qt-vs-addin-1.2.3-opensource 下载地址: https://pan.baidu.com/s/1RrRNNRLhZ_OdLEbfs7rAig 密码:jmyd 安装路径:D:\Program Files (x86)\Digia\Qt5VSAddin

how does Flann Matcher train work in opencv?

会有一股神秘感。 提交于 2019-12-25 02:48:45
问题 I'm new in opencv. My question is: I have 2 train image descriptor trainA and trainB. Then i construct a vector to put them in, and add them into flann matcher for train. After that, i use query image descriptor queryC to do the knnMatch and get a DMatchs returned. In this case, which train descriptor would be used to match queryC, trainA or trainB? and how does the training help to improve the match accuracy? Thanks in advance. 回答1: Both. It is not "training" in standard meaning. "Training"

C++ CMake FLANN failing when building pcl in vs2012

社会主义新天地 提交于 2019-12-23 09:56:39
问题 Trying to build PCL on VS2012 in Windows 8.1 so I can attempt to integrate my Kinect for Windows v2 sensor with it, however I seem to be running into a bunch of CMake errors that I don't know what to do with. this is partially because I am not very familiar with CMake, and so I am following the tutorial here which outlines the building of dependencies using the CMake GUI. However, throughout this process I have found that the only things that have built properly are the ones I build using

C++ CMake FLANN failing when building pcl in vs2012

故事扮演 提交于 2019-12-23 09:53:42
问题 Trying to build PCL on VS2012 in Windows 8.1 so I can attempt to integrate my Kinect for Windows v2 sensor with it, however I seem to be running into a bunch of CMake errors that I don't know what to do with. this is partially because I am not very familiar with CMake, and so I am following the tutorial here which outlines the building of dependencies using the CMake GUI. However, throughout this process I have found that the only things that have built properly are the ones I build using

OpenCV Python: Occasionally get segmentation fault when using FlannBasedMatcher

末鹿安然 提交于 2019-12-21 19:52:47
问题 I'm trying to classify objects using SURF and kNN. The code work well however it occasionally crashes and shows 'Segmentation Fault'. I'm not sure whether I did something wrong but I'm pretty sure that it is corrected. Here is the input file in case that you want to reproduce the issue. Link to download the dataset import numpy as np import cv2 import sys trainfile = ['/home/nuntipat/Documents/Dataset/Bank/Training/15_20_front.jpg' , '/home/nuntipat/Documents/Dataset/Bank/Training/15_50_front

Which distance function does FlannBasedMatcher use and how to change it?

狂风中的少年 提交于 2019-12-21 17:33:15
问题 Which distance function does openCVs flannBasedMatcher use and is it possible to change the default? In the user manual from the original flann by Muja and Lowe there are some different distance types (flann_distance_t) and I don't see a method in opencv to change them :-/ 回答1: This is very poorly documented in the code for openCV but the default settings for the flannBasedMatcher are found in these two functions flann::SearchParams(); //32 checks, 0, sorted=true flann::KDTreeIndexParams(); /