在scikit学习SVM的SURF功能

时间:2015-05-30 11:34:15

标签: python opencv scikit-learn svm surf

我一直在尝试使用SURF功能来创建一个带有sklearn SVM的分类器(以识别一类对象)。 我一直遇到特征向量的问题。 我已经生成了一系列要素对象和一系列描述符,但我使用什么作为特征向量? 我尝试直接将功能和描述符作为参数传递,如下所示:

sd = cv2.FeatureDetector_create("SURF")
keypoints = sd.detect(img)
kp,des = surf.compute(img, keypoints)
model = svm.SVC()
model.fit(des,['type1'])

我是否必须提取要素对象或描述符数组的属性才能获得最终的要素向量?特征向量的维度应该是多少?它不应该是一个向量数组(关键点的一个向量)吗?

1 个答案:

答案 0 :(得分:0)

我解决了。问题是“平坦”"多维描述符到单维向量,描述整个关键点集。我将图像调整为标准数量的行和列,并将像素的2D网格展平为单维数组。数组中的每个元素唯一地标识一个像素并取值1或0(1表示它是关键点)。如果我想为每个关键点添加更多描述性特征,我可以使用类似格式扩展数组(扩展中数组元素的值将是描述性特征的值)。这使得一个单维向量包含整个图像所需的特征信息。