gpt4 book ai didi

opencv - 如何选择好的SURF特征关键点?

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:15 26 4
gpt4 key购买 nike

我目前正在研究对象分类问题。我的目标是使用 SURF 描述符在 opencv 中训练基于 MLP 的人工神经网络并生成对象分类模型。到目前为止,我已经取得了以下成就:

我正在使用以下代码计算 SURF 关键点:

vector<KeyPoint> computeSURFKeypoints(Mat image) {
SurfFeatureDetector surfdetector(400, 4, 2, true, false);
vector<KeyPoint> keypoints;
surfdetector.detect(image, keypoints);
return keypoints;
}

我使用以下代码计算这些关键点上的 SURF 描述符:

Mat computeSURFDescriptors(Mat image, vector<KeyPoint> keypoints) {
SurfDescriptorExtractor extractor;
Mat descriptors;
extractor.compute(image, keypoints, descriptors);
return descriptors;
}

我面临的问题是描述符的大小因图像而异。描述符包含每个特征点的 64 个元素。为了训练神经网络,我希望描述符的大小是固定的。为此,我使用 PCA 来减小描述符的大小,如下所示:

Mat projection_result;
PCA pca(descriptors, Mat(), CV_PCA_DATA_AS_COL, 64);
pca.project(descriptors,projection_result);
return projection_result;

这样做,我可以减少描述符的维度,但所选的特征点不能代表图像,它们会导致较差的匹配结果。如何通过保留好的特征点来降低描述符的维度?任何帮助将不胜感激。

最佳答案

我正在寻找完全不同的东西,所以不是专家,但我碰巧知道 Matlab 有一个功能“points.selectstrongest(x)”,其中 x 是你想要的点数。该功能选择具有最强指标的点。

度量是 Matlab 函数“detectSURFFeatures”赋予 SURFpoints 的一个属性。我的指标由 OpenCV 函数“vision.internal.buildable.fastHessianDetectorBuildable.fastHessianDetector_uint8”在“detectSURFFeatures”中给出

关于opencv - 如何选择好的SURF特征关键点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30722394/

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