gpt4 book ai didi

opencv - 如何在 opencv 中对词袋使用 SIFT 特征?

转载 作者:太空宇宙 更新时间:2023-11-03 20:58:06 27 4
gpt4 key购买 nike

我已经阅读了很多关于在对图像进行筛选特征后实现词袋的文章,但我仍然对下一步该做什么感到困惑。我具体做什么?

非常感谢您的指导。

这是我目前的代码。

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);

最佳答案

训练词袋系统的过程如下:

  1. 计算训练集中每张图片的特征
  2. 聚类这些特征
  3. 用在该簇中具有特征的图像标记每个簇

此时训练已经完成,您可以按如下方式开始测试:

  1. 计算测试图像的特征
  2. 对于每个特征,找到最近的聚类
  3. 为属于该集群的每个训练图像添加一个标记
  4. 重复测试图像的所有特征
  5. 刻度数最高的图像是最佳匹配,刻度数第二高的图像是次佳匹配,依此类推

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

关于opencv - 如何在 opencv 中对词袋使用 SIFT 特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928135/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com