2012-03-28 33 views
0

我已经采用的OpenCV来检测特征开始:训练图像在openCV中意味着什么?

序列等:

cv::SurfFeatureDetector detector(40 ); 
std::vector<cv::KeyPoint> keypoints_object; 
detector.detect(img_object, keypoints_object); 
//-- Step 2: Calculate descriptors (feature vectors) 
cv::SurfDescriptorExtractor extractor; 
cv::Mat descriptors_object, descriptors_scene; 
extractor.compute(img_object, keypoints_object, descriptors_object); 
//-- Step 3: Matching descriptor vectors using FLANN matcher 

将提取其可以对来自其他图像中提取的特征被匹配的图像的特征。在这种情况下,“训练图像”是什么意思。

我一定要像多次旋转和/或缩放?

如果是这样的。可以将这些特征合并为一个描述符吗?在特征提取的背景下

回答

2

培训形象让我觉得分类。您可以从不同类别中提取一组训练图像,从中提取特征。然后,您尝试使用此功能来学习某种分类器。所以你使用这些图像来训练分类器。

SURF特点是规模和旋转不变的。所以不需要缩放或旋转图像。

要获得每幅图像单一特征向量,你可以使用一个bag of words model

+0

+1我将实际使用FAST功能,可我存储他们在一个DB和匹配他们免受凸轮拍摄的图像,withou任何训练过程? – stacker 2012-03-28 12:29:37

+0

当然可以。这个过程被称为[1最近邻居分类器](http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm)。然后,训练阶段仅包括将图片添加到数据库。 – sietschie 2012-03-28 12:34:55

+0

谢谢,我还发现了另一个资源(用于记录)http://opencv.willowgarage.com/documentation/cpp/k_nearest_neighbors.html – stacker 2012-03-28 12:42:26