主要内容

bagOfFeatures

视觉词的袋子物体

描述

您可以构建一个视觉词汇包,用于图像类别分类、图像检索或视觉同步定位和映射(vSLAM)中的环路闭合检测。

创建

描述

例子

袋= bagOfFeatures (洛桑国际管理发展学院返回一个功能对象包。的的示例生成输出对象洛桑国际管理发展学院输入。默认情况下,视觉词汇表是根据从图像中提取的SURF特征创建的洛桑国际管理发展学院

袋= bagOfFeatures (洛桑国际管理发展学院,'CustomExtractor',extractorFcn返回使用自定义特征提取函数从中的图像中提取特征的特征包洛桑国际管理发展学院extractorFcn是自定义特征提取函数的函数句柄。

袋= bagOfFeatures (洛桑国际管理发展学院名称,值使用一个或多个名称-值对设置属性。将每个属性名用引号括起来。例如,袋= bagOfFeatures(‘详细’,真的)

该对象支持使用多个MAT金宝appLAB进行并行计算®工人。的并行计算计算机视觉工具箱首选项对话框。要打开计算机视觉工具箱™首选项,请在首页选项卡,环境部分中,点击首选项.然后选择计算机视觉工具箱。

输入参数

全部展开

指定为ImageDatastore对象。的bagOfFeatures从包含的图像中提取等量的最强特征洛桑国际管理发展学院对象。最强功能的数量定义为:

最强特性的数量最小值在每个集合中发现的特征数量) xStrongestFraction

对象获取StrongestFraction价值的StrongestFeatures财产。

自定义特征提取器函数,指定为函数句柄。这个自定义函数提取特征来学习对象的视觉词汇。

这个函数,extractorFcn,必须指定为文件的函数句柄:

extractorFcn = @exampleBagOfFeaturesExtractor;袋= bagOfFeatures (imd, CustomExtractor, extractorFcn)
在哪里exampleBagOfFeaturesExtractor是一个MATLAB函数。例如:
function [features,featureMetrics,location] = exampleBagOfFeaturesExtractor(img)…
函数必须在路径上或当前工作目录中。参数定义如下:

论点 输入/输出 描述
img 输入
  • 二值、灰度或真彩色图像。

  • 输入图像来自最初传入的图像集bagOfFeatures

特性 输出

  • 一个binaryFeatures对象。

  • 一个——- - - - - -N图像特征的数值矩阵,其中是多少特征和N为每个特征向量的长度。

  • 特征长度,N,必须大于零,并且在处理期间的所有图像都相同bagOfFeatures创建过程。

  • 如果不能从图像中提取特征,则提供空特征矩阵和空特征度量向量。例如,如果您没有找到任何用于特征提取的关键点,则使用空矩阵和向量。

  • 数字、实数和非稀疏性。

featureMetrics 输出

  • 一个-by-1特征度量向量,表示每个特征向量的强度。

  • 用于应用“SelectStrongest”标准bagOfFeatures框架。

  • 数字、实数和非稀疏性。

位置 输出

  • 一个- 1基的× 2矩阵[xy)的值。

  • (xy值可以是小数。

  • 数字、实数和非稀疏性。

有关自定义提取器函数及其输入和输出需求的详细信息,请参见创建自定义特性提取器

你可以打开一个示例函数文件,并通过在MATLAB命令行中输入以下命令来使用它作为模板:

编辑(“exampleBagOfFeaturesExtractor.m”)

属性

全部展开

自定义特征提取器函数,指定为函数的句柄。自定义特征提取函数提取的特征用于学习的视觉词汇bagOfFeatures.你必须指定'CustomExtractor'和函数句柄,extractorFcn,转换为自定义特征提取函数。

这个函数,extractorFcn,必须指定为文件的函数句柄:

extractorFcn = @exampleBagOfFeaturesExtractor;袋= bagOfFeatures (imd, CustomExtractor, extractorFcn)
在哪里exampleBagOfFeaturesExtractor是一个MATLAB函数,如:
function [features,featureMetrics] = exampleBagOfFeaturesExtractor(img)…
函数必须在路径上或当前工作目录中。

有关自定义提取器函数及其输入和输出需求的详细信息,请参见创建自定义特性提取器.你可以打开一个示例函数文件,并通过在MATLAB命令行中输入以下命令来使用它作为模板:

编辑(“exampleBagOfFeaturesExtractor.m”)

词汇表树属性,指定为形式为[numLevelsbranchingFactor].numLevels是一个整数,用于指定词汇表树中的级别数。branchingFactor是一个整数,该整数指定一个因子,以控制词汇表在树中逐次增长的数量。词汇树所表示的视觉单词的最大数量为branchingFactornumLevels.典型值numLevels之间的是16.典型值branchingFactor之间的是10500.使用实证分析来选择最优值。

增加分支因素以生成更大的词汇表。增加词汇量可以提高分类和图像检索的准确性,但也会增加图像编码的时间。您可以使用具有多个级别的词汇表树来创建大约10,000个可视单词或更多的词汇表。多层树减少了用大型词汇表对图像进行编码所需的时间,但将花费更长的创建时间。对于只包含100 - 1000个可视单词的词汇表,您可以使用一个级别的树。

最强特性的部分,指定为逗号分隔对,由'StrongestFeatures和范围[0,1]的值。属性中的每个标签中要使用的最强特性的部分洛桑国际管理发展学院输入。

使进度显示在屏幕上,指定为逗号分隔的对,由'详细的'和逻辑的真正的

SURF特征提取的点位置选择方法,指定为逗号分隔对,由'PointSelection”,要么“网格”“探测器”.特征提取分为两个阶段。首先,选择一个方法来选择点位置(SURF)“探测器”“网格”),PointSelection财产。第二阶段提取特征。特征提取使用SURF提取器进行两种点选择方法。

当您设置PointSelection“探测器”,利用加速鲁棒特征(SURF)检测器选择特征点。否则,这些点将在一个预定义的网格上选取,网格的间距定义为GridStep”。属性指定的自定义提取器时,此属性才应用CustomExtractor财产。

以像素为单位的网格步长,指定为逗号分隔的对,由'GridStep'和1乘2 [xy)向量。此属性仅在设置时应用PointSelection“网格”函数没有指定自定义提取器CustomExtractor财产。其中的步骤xy方向定义了均匀网格的间距。网格线的交点定义了特征提取的位置。

用于提取直立SURF描述符的Patch大小,指定为逗号分隔的对,由'BlockWidth'和一个1-by-N向量的N块宽度。属性指定的自定义提取器时,此属性才应用CustomExtractor财产。向量的每个元素都对应于一个正方形块的大小,函数从中提取直立的SURF描述符。使用多个正方形大小提取多尺度特征。所有指定的正方形用于网格上的每个提取点。此属性仅在您设置时应用PointSelection“网格”.块的宽度与特征的规模相对应。最低BlockWidth是32像素。

SURF特征向量的方向,指定为逗号分隔对,由'正直的和一个逻辑标量。属性指定的自定义提取器时,此属性才应用CustomExtractor财产。将此属性设置为真正的当不需要估计SURF特征向量的方向时。将其设置为当您需要图像描述符来捕获旋转信息时。

对象的功能

编码 创建视觉词出现的直方图

例子

全部折叠

加载两个图像集。

setDir = fullfile (toolboxdir (“愿景”),“visiondata”“imageSets”);imgSets = imageSet (setDir,“递归”);

从每个图像集中选取前两个图像创建训练集。

trainingSets =分区(imgSets, 2);

创建功能包。这个过程可能需要几分钟。

袋= bagOfFeatures (trainingSets,“详细”、假);

计算直方图的视觉词出现的图像之一。将直方图存储为特征向量。

img =阅读(imgSets (1), 1);featureVector =编码(袋、img);
使用特征包编码图像。-------------------------------------- * 编码图像做…。

加载图像集。

setDir = fullfile (toolboxdir (“愿景”),“visiondata”“imageSets”);imd = imageDatastore (setDir,“IncludeSubfolders”,真的,“LabelSource”...“foldernames”);

指定一个自定义特征提取器。

器= @exampleBagOfFeaturesExtractor;袋= bagOfFeatures (imd,“CustomExtractor”器)
创建Bag-Of-Features。------------------------- *图像类别1:书籍*图像类别2:杯子*使用自定义特征提取函数提取特征:exampleBagOfFeaturesExtractor。*从12张图片中提取特征…完成。提取230400特性。*保留每个类别中80%最强大的功能。*创建500字的视觉词汇。*级别数:1 *分支因子:500 *聚类步骤数:1 * [Step 1/1]聚类词汇等级1*特性数量:184320 *集群数量:500 *初始化集群中心……100.00%。*完成20/100次迭代(~1.77秒/迭代)…在20次迭代中收敛。*完成功能包的创建
袋子= bagfeatures with properties: CustomExtractor: @exampleBagOfFeaturesExtractor NumVisualWords: 500 TreeProperties: [1 500] stronggestfeatures: 0.8000

扩展功能

介绍了R2014b