- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在研究对象分类问题。我的目标是使用 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/
OpenCV SURF function is not implemented 可能重复 我的错误代码是: error LNK2019: unresolved external symbol "pub
我在 http://opencv.willowgarage.com/documentation/python/feature_detection.html 阅读了 OpenCV SURF 手册“Ext
我正在使用 SURF 测试一些对象检测和 SIFT . SURF 声称比 SIFT 更快、更稳健,但我在测试中发现这不是真的。中等图像 (600*400) 的 SIFT 与 SURF 的速度相同,并且
我正在尝试像全景 View 一样在 Android 中拼接图像。我正在尝试使用冲浪描述符来拼接图像。我使用的是 2.4.0 版本的 openCv,因为较高版本不包含用于冲浪描述符的非自由文件夹。我有还
我正在尝试编写一个 matlab 代码来回答以下问题: Using functions linspace,meshgrid,surf and dot operations, plot the surf
在SURF技术中,更确切地说,在特征描述阶段,作者已经声明(如果我理解正确的话),描述将在20倍sigma的区域内执行。 Sigma代表检测到关键点的规模。 Sigma = 0.4 x L,其中L =
我正在尝试编写一个 matlab 代码来回答以下问题: Using functions linspace,meshgrid,surf and dot operations, plot the surf
我使用以下简单的代码从图像中提取 SURF 描述符: Ptr descriptor = DescriptorExtractor::create("SURF"); descriptor->com
我正在使用 Opencv C++ 进行人脸识别应用。为此,我使用 SURF 作为描述符,使用 FlannMatcher 来匹配点。我的代码如下, FlannBasedMatcher matcher;
有什么方法可以将 OPENCV SURF 中的关键点数量限制为 100 个?获取到的关键点会按照强度排序吗?如何获取描述符的强度?我正在使用 cpp 程序在 LINUX 系统中处理 OPENCV。 问
我有 2 个图像,在相机中有一点点方向,我想从 opencv 中找到方向,我从 2 个图像中获取冲浪关键点,我的问题是如何比较这 2 个关键点以找到方向。 最佳答案 您需要应用匹配器(例如 cv Fl
我正在尝试使用 OpenCV 和 SURF 方法实现交通标志识别器。我的问题是我得到随机结果(有时非常准确,有时显然是错误的)而且我无法理解为什么。这是我实现比较的方式: 首先我检测图像上的轮廓 然后
我正在尝试了解 SURF 特征检测的工作原理。我想我已经取得了一些进步。我想知道我离真正发生的事情有多远。 您已经存储的模板图像和真实世界图像根据“关键点”或一些重要特征进行比较在两张图片中。 相同点
任何人熟悉此错误?我实时测试了一个冲浪描述符。我想使用此功能来识别不同种类的鱼。有时程序可以,但有时会出错。编译成功。编译后显示此错误。 #include #include #include #
我在理解 SURF 和 SIFT 算法时遇到了一些概念问题 All about SURF .据我了解,SURF 发现高斯的拉普拉斯算子,而 SIFT 对高斯的差异进行运算。然后它围绕它构造一个 64
我有一个矩阵 Z,我想使用 surf 命令绘制它。我可以使用 surf 命令很好地绘制它,但我希望 Z 的一部分不显示在图中。我假设我需要做的是使用符号 surf(X,Y,Z) 其中 X 和 Y 是定
我想检测实时视频源中的 SURF 特征点,但是,我似乎找不到任何关于如何实现这一点的教程。 我能够在静止图像上检测到它们: int minHessian = 400; cv::Surf
我能够编译代码,但是当我运行它时,我收到了这个错误。 我在 Win 7 中使用 VS 2010 和 opencv 248。 感谢任何帮助。 最佳答案 遇到同样的问题。 SURF 开发人员说,为了使用库
最近,我在做机器人项目;我的机器人可以通过颜色检测物体,但我发现对于不同的物体来说还不够好。因此,我希望机器人实时浏览图像以找到将使用其模板定义的目标对象。 不幸的是,我不知道如何将模板的关键点与其图
在我的代码中,我根据最近的邻居距离比过滤好的图像,如下所示: for(int i = 0; i 0)) { good_matches.push_back(mat
我是一名优秀的程序员,十分优秀!