定向梯度直方图作为vlfeat / libsvm的特征向量

时间:2014-03-03 13:47:55

标签: matlab computer-vision libsvm vlfeat

我在计算机视觉的vlfeat库上相当新手,我在处理它时遇到了问题。我想要做的是使用直方图梯度图(HOG)作为特征向量来在不同维度的LIBSVM图像中进行分类。

我正在处理的第一个问题是vl_hog返回一个HOG矩阵,而不是一个向量。这不是一个真正的问题,因为我可以按照以下方式对该矩阵进行矢量化:

            hog = vl_hog(image,cellSize); 
            features=hog(:);

第二个问题是什么让我感到害怕。因为图像具有不同的尺寸,所以特征向量也有不同的维度,所以用它们提供libsvm是不可能的,或者我错了?我能以更简单的方式解决这个问题吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您需要创建本地功能的全局表示,以便将数据提供给SVM。这项任务最受欢迎的方法之一是词袋(功能)。 vlfeat有一个很好的演示/示例。您可以从vlfeat website检查此代码。

对于您的特定情况,您需要在Caltech-101中安排您的培训/测试数据,如数据目录:

  • 信1
    • 图片1
    • 图片2
    • 图片3
    • 图片4
    • ...
  • 信2
    • ...
  • 信3
    • ...

然后您需要调整以下配置设置:

conf.numTrain = 15;

conf.numTest = 15;

conf.numClasses = 102;

此演示使用SIFT作为本地功能,但您可以在之后将其更改为HOG。