通过创建视觉词袋使用计算机视觉工具箱™图像类别分类功能。该过程生成视觉词的出现表示的图像的直方图。这些直方图被用来训练图像类别的分类器。下面的步骤介绍如何设置您的图像,创建视觉词袋,再培训和应用图像类别分类。
整理和图像分割成训练和测试的子集。使用imageDatastore
功能存储图像用于训练的图像分类。组织图像进行分类处理,使大集图像容易得多。您可以使用splitEachLabel
功能将图像分割为训练和测试数据。
阅读类别的图像和创建图像集。
setDir =完整文件(toolboxdir( '视力'), 'visiondata', 'imageSets');IMDS = imageDatastore(setDir, 'IncludeSubfolders',真, 'LABELSOURCE',... 'foldernames');
分隔成集训练和测试图像的子集。在这个例子中,图像的30%的被划分为训练和测试剩余部分。
[trainingSet,测试集] = splitEachLabel(IMDS,0.3, '随机化');
创建视觉词汇,或特征的袋,通过从每个类别的代表性图像中提取特征描述符。
该bagOfFeatures
对象定义的特征,或视觉的话,通过使用k均值聚类从提取的特征描述符(统计和机器学习工具箱)算法trainingSets
。该算法迭代组描述成ķ互斥集群。将得到的簇紧凑,并通过类似的特征分隔开。每个群集中心表示的特征,或视觉词。
您可以提取基于特征检测的功能,也可以定义一个网格,提取特征描述符。网格方法可能会失去细粒度的尺度信息。因此,使用不包含显着特征,图像网格例如含图像的风景,就像海滩。使用加速稳健特征(SURF或)检测器提供了更大的尺度不变性。默认情况下,该算法运行'格'
方法。
该算法的工作流程的全部分析图像。图片必须说明他们所代表的阶级适当的标签。例如,一组汽车的图像可以被标记的汽车。工作流不依赖于空间信息,也没有对标记的图像中的特定对象。袋的视觉词该技术依赖于检测而无需定位。
该trainImageCategoryClassifier
函数返回一个图像分类。该函数使用列车具有二进制支持向量机(SVM)分类器的纠错输出编码(ECOC)框架多类分类器。万博1manbetx该trainImageCategoryClassfier
功能使用的由返回的视觉词袋bagOfFeatures
目的是在图像组成的视觉词直方图编码图像。的视觉词直方图然后被用作阳性和阴性样品来训练分类器。
使用bagOfFeatures
编码
方法来编码从训练集中的每个图像。该功能检测并提取从图像特征,然后使用近似最近邻算法来构造针对每个图像的特征直方图。然后,该函数增量直方图基于描述符的邻近于特定的聚类中心箱。直方图长度对应于视觉词,所述数量bagOfFeatures
对象构成。直方图成为该图像的特征向量。
在训练集来创建训练数据的每个图像重复步骤1。
评估分类的质量。使用imageCategoryClassifier
评估
方法来测试针对所述验证图像集合分类器。输出混淆矩阵表示预测的分析。一个完美的分类结果中包含对角线上的1的归一化矩阵。不正确的分类结果的分数值。
使用imageCategoryClassifier
预测
新的图像上的方法来确定其类别。
[1] Csurka,G.,C. R.舞蹈,L.范,J. Willamowski,和C.布雷。视觉分类与关键点的包。车间统计学习计算机视觉。ECCV 1(1-22),1-2。