如何在opencv中为单词包使用筛选功能?

如何在opencv中为单词包使用筛选功能?,opencv,sift,multilabel-classification,Opencv,Sift,Multilabel Classification,我读过很多关于在使用图像的sift特性后实现单词包的文章,但我仍然不知道下一步该怎么做。我具体做什么 提前非常感谢您的指导 这是我到目前为止掌握的代码 cv::Mat mat_img = cropped.clone(); Mat grayForML; cvtColor(mat_img, grayForML, CV_BGR2GRAY); IplImage grayImageForML = grayForML.operator IplImage(); //create another copy

我读过很多关于在使用图像的sift特性后实现单词包的文章,但我仍然不知道下一步该怎么做。我具体做什么

提前非常感谢您的指导

这是我到目前为止掌握的代码

cv::Mat mat_img = cropped.clone();
Mat grayForML;
cvtColor(mat_img, grayForML, CV_BGR2GRAY);
IplImage grayImageForML = grayForML.operator IplImage();


//create another copy of iplGray
IplImage *input = cvCloneImage(&grayImageForML);
Mat matInput = cvarrToMat(input);
//  Mat matInput = copy_gray.clone();
cv::SiftFeatureDetector detector;
std::vector<cv::KeyPoint> keyPoints;
detector.detect(input, keyPoints);
//add results to image and save.
cv::Mat output;
cv::drawKeypoints(input, keyPoints, output);    //SIFT OUTPUT RESULT


//resize and display
cv::Mat output_reduced;
cv::resize(output, output_reduced, cv::Size2i(output.cols / 2, output.rows / 2));


imshow("SIFT result", output_reduced);
cv::Mat Mat_img=cropped.clone();
灰毡;
CVT颜色(材质、颜色、颜色);
IplImage grayImageForML=grayForML.operator IplImage();
//创建iplGray的另一个副本
IplImage*input=cvCloneImage(&grayImageForML);
Mat matInput=cvarrToMat(输入);
//Mat matInput=copy_gray.clone();
cv::SiftFeatureDetector检测器;
向量关键点;
检测器。检测(输入、关键点);
//将结果添加到图像并保存。
cv::Mat输出;
cv::drawKeypoints(输入、关键点、输出)//筛选输出结果
//调整大小并显示
cv::Mat输出减少;
cv::resize(输出,输出减少,cv::Size2i(output.cols/2,output.rows/2));
imshow(“筛选结果”,输出减少);

培训一袋单词系统如下所示:

  • 计算训练集的每个图像的特征
  • 将这些功能组合在一起
  • 用具有该簇中的功能的图像标记每个簇
  • 此时,培训已经完成,您可以从以下测试开始:

  • 计算测试图像的特征
  • 对于每个特征,查找最近的簇
  • 为属于此群集的每个训练图像添加一个勾号
  • 对测试图像的所有特征重复此操作
  • 具有最高刻度数的图像是最佳匹配,具有第二高刻度数的图像是次最佳匹配,依此类推

  • 正如您所注意到的,使用SIFT没有任何限制。您可以尝试不同的特征提取器和描述符。

    对于步骤1,是否可以从图像计数中获得SIFT关键点?@lionking是的,您可以使用SIFT。。我的建议是,您构建整个管道,然后使用不同的特征提取器进行实验。对于#2,您可以使用k-means聚类之类的算法来形成训练特征的集群。谢谢你的建议。我将开始试验SIFT。请原谅我的婴儿谈话,我真的是新的图像分类。通过#2,我可以通过将它们放在单独的yml中来对它们的特性进行集群?例如,banana.xml将包含banana的所有功能,而rice.xml将包含rice的所有功能?我很愿意相信我已经完成了60%。我发现了这个教程,它也非常有用!我调整了一些部分以适应我的项目,并且我能够成功地计算图像的描述符。根据本教程,该描述符可用于将图像分类为几个类。您可以使用SVM或任何其他分类器来检查该描述符的识别能力和鲁棒性。