首先,您需要获得一个视觉单词词典,或更具体地说:使用k -means聚类对所有图像的SIFT特征进行聚类。 在[1]中,推荐使用例如64或256个群集的粗略群集。

为此,我们必须将所有描述符连接到一个矩阵中,然后可以将其传递给vl_kmeans函数。 此外,我们将描述符从uint8转换为single ,因为vl_kmeans函数要求输入为single或double 。

all_descr = single([sift_descr{:}]);

centroids = vl_kmeans(all_descr, 64);

其次,您必须创建一个分配矩阵,该矩阵的尺寸为NumberOfClusters-by-NumberOfDescriptors ,该矩阵将每个描述符分配给一个群集。 在创建此分配矩阵时,您具有很大的灵活性:您可以进行软分配或硬分配,可以随意使用简单的最近邻居搜索或kd树或其他近似或分层的最近邻居方案。

在本教程中,他们使用kd-tree,因此请坚持以下步骤:首先,必须构建kd-tree。 在找到centroids之后,此操作即centroids :

kdtree = vl_kdtreebuild(centroids);

然后,我们准备为每个图像构建VLAD向量。 因此,我们必须再次浏览所有图像,并独立计算其VLAD向量。 首先,我们完全按照本教程中的描述创建分配矩阵。 然后,我们可以使用vl_vlad函数对SIFT描述符进行编码。 所得的VLAD向量将具有NumberOfClusters * SiftDescriptorSize的大小,即在我们的示例中为64 * 128。

enc = zeros(64*128, numel(sift_descr));

for k=1:numel(sift_descr)

% Create assignment matrix

nn = vl_kdtreequery(kdtree, centroids, single(sift_descr{k}));

assignments = zeros(64, numel(nn), 'single');

assignments(sub2ind(size(assignments)), nn, 1:numel(nn))) = 1;

% Encode using VLAD

enc(:, k) = vl_vlad(single(sift_descr{k}), centroids, assignments);

end

最后,我们为数据库中的所有图像提供了高维VLAD向量。 通常,您将需要降低VLAD描述符的维数,例如使用PCA。

现在,赋予了新的形象这是不是在数据库中,你可以提取SIFT特征使用vl_sift ,创建具有分配矩阵vl_kdtreequery ,并创建使用该图像的VLAD矢量vl_vlad 。 因此,您不必查找新的质心或创建新的kd树:

% Load image and extract SIFT features

new_image = imread('filename.jpg');

new_image = single(rgb2gray(new_image));

[~, new_sift] = vl_sift(new_image);

% Create assignment matrix

nn = vl_kdtreequery(kdtree, centroids, single(new_sift));

assignments = zeros(64, numel(nn), 'single');

assignments(sub2ind(size(assignments)), nn, 1:numel(nn))) = 1;

% Encode using VLAD

new_vlad = vl_vlad(single(new_sift), centroids, assignments);

[1] Arandjelovic,R.和Zisserman,A.(2013)。 所有关于VLAD。 IEEE计算机视觉和模式识别会议(CVPR),1578年至1585年。

matlab中的sift函数,matlab - 用Matlab从VLFeat中的SIFT描述符中提取VLAD - 堆栈内存溢出...相关推荐

  1. linux中timer的作用,linux - linux / timer.h setup_timer()到期功能不起作用? - 堆栈内存溢出...

    因此,我的setup_timer()中的TimerExpire函数会引起巨大的恐慌(将在下面发布),而对TimerExpire()的常规函数​​调用实际上将输出我的输入. void TimerExpi ...

  2. pdf 中的java运行,java - 从pdf文件读取特定位置的itext在intellij中运行,并提供所需的输出,但是可执行jar抛出错误 - 堆栈内存溢出...

    我正在从n个页面的输入pdf文件中读取特定位置,并在这些位置上列出文本. 然后,我编写一个新的pdf文档,并将列表中的这些字符串写入包含单元格的表中. 我提出了两个主要问题. 我想在表中有三列,但是如 ...

  3. python从html拿到数据,python - 使用BeautifulSoup和Python从HTML文件中提取数据 - 堆栈内存溢出...

    我需要提取的数据可以在不同的标题下找到. 这是我到目前为止: from BeautifulSoup import BeautifulSoup ecj_data = open("data\ec ...

  4. ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务-Oracle连接错误

    连接Oracle时突然报"ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务"错误 检查OracleServiceORCL服务是否启动! win10:此电脑→管理 ...

  5. ORA-12514 监听程序当前无法识别连接描述符中的服务

    今天在用oracle的时候遇到了这样一个问题:"ORA-12514 监听程序当前无法识别连接描述符中的服务",网了看了好多别人的办法都没有解决,自己就试着解决了一下,嘿,还真解决了 ...

  6. ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

    在安装完Oracle10g后,使用PL/SQL工具连接,提示如下的问题: ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 解决办法是手动修改监听配置文件: # listen ...

  7. windows 2008 64位oracle11g部署问题(3)之ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务...

    oracle11g安装完毕了,监听也起来了,发现通过客户端 本地网络服务名配置(如下图)链接oracle11g服务器,确报ORA-12514的错误,该如何解决呢? 1. 找到listener.ora监 ...

  8. windows7 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法

    windows7 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法 参考文章: (1)windows7 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求 ...

  9. ora-12514: tns: 监听程序当前无法识别连接描述符中请求的服务 问题解决

    通过PlSQL Developer 访问oracle出现: ora-12514: tns: 监听程序当前无法识别连接描述符中请求的服务 通过重启服务的方式启动数据库,也不能连接上oracle数据库   ...

最新文章

  1. amazon linux 安装nginx,linux – NGINX不显示Amazon EC2实例上的默认页...
  2. 《系统集成项目管理工程师》必背100个知识点-46质量与等级
  3. IDEA中SVN未提交代码,更新时有冲突接受其它怎么办
  4. 远程连接server问题
  5. 解决Struts2的配置文件struts.xml文件无提示问题
  6. mysql full customer_mysql优化通常使用的几种方法
  7. NDK编译php,Android NDK编译常见错误及解决方案
  8. [渝粤教育] 广东-国家-开放大学 21秋期末考试马克思主义基本原理概论(A)10882k1 (2)
  9. 27.Linux/Unix 系统编程手册(上) -- 程序的执行
  10. ibm服务器操作系统重装步骤,ibm服务器安装 操作系统安装步骤
  11. android手机主流屏幕大小,如何选择适合自己的手机屏幕大小 屏幕大小选择标准【详解】...
  12. 手机屏幕分辨率真的是越高越清晰吗?
  13. 用CSS3实现无图片的百度Logo
  14. 【android开发】手机应用管理器的实现之获取应用列表(一)
  15. ssm框架搭建连接mysql_搭建SSM框架(一) - xiaoqi__y的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. 不同框架模型的对比试验
  17. 一个人的精神结构和他的精神资源
  18. linux远程判断目录是否存在,用shell判断远程主机上是否存在某个文件
  19. 设置行与行的间隔(行间距)
  20. JS验证用户真实姓名

热门文章

  1. c++ win32 裁剪窗口为圆角矩形窗口
  2. 简要描述java语言的特点是什么_java语言的特点是什么
  3. 五百左右蓝牙耳机哪个牌子好?学生党平价蓝牙耳机推荐
  4. 【imx6ul】SIM7600CE 4G模块在imx6ul linux4.15上拨号上网
  5. 7035. 2021.03.30【2021省赛模拟】神奇纸牌(uno)题解
  6. 云呐统一运维一体机,智能运维解决方案
  7. java filter chain_Filter及FilterChain的使用详解
  8. LayaAir基础(2) 之 资源加载
  9. kaggle搭建环境
  10. kaggle无法注册的问题解决