我实现了由设计的空间金字塔匹配算法Lazebnik在Matlab中,最后一步是做svm分类在这一点上,我完全不明白我应该根据我应该向svmtrain
提供什么输入来做到这一点svmclassify
函数得到训练和测试图像。
我有:
- 列车图像上
SIFT
特征点的坐标 - 列车图像上SIFT特征点的坐标
- 列车图像的交集核矩阵
- 测试图像的交集核矩阵
这些我应该用哪一个?
SVM分类器期望一组由元组表示的对象(图像)作为输入,其中每个元组是一组数字属性。一些图像特征(例如灰度直方图)提供了数值向量形式的图像表示,其适合于训练SVM。然而,像SIFT这样的特征提取算法将为每个图像输出一组向量。所以问题是:
我们如何将这组特征向量转换为表示图像的唯一向量
为了解决这个问题,你必须使用一种叫做视觉单词袋的技术。
问题是点的数量不同,SVM希望训练和测试的特征向量大小相同。
列车图像上SIFT特征点的坐标列车图像上的SIFT特征点
坐标对SVM没有帮助。
我会使用:
- 找到的SIFT特征点的个数
- 以小矩形分割图像,并在特定rect作为布尔特征值。该特征为rect/SIFT特征类型结合体对于获得的N-Rects和M-SIFt特征点类型N*M个功能
第二种方法需要图像的空间归一化-相同大小,相同旋转
附言:我不是ML方面的专家。我只做过一些显微镜图像中细胞识别的实验。