问题标签 [surf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - openCV Android:knnMatcher 仅返回 1 个描述符的匹配项
我必须为我的硕士论文实现一个用于 android 的徽标检测算法。我目前正在使用带有 NDK 的 openCV android 库,并且已经设法使用 SURF 检测关键点并为这些关键点设置描述符。
对我来说,下一步是使用knnMatch为每个关键点找到 2 个最近的匹配,然后我将丢弃最佳 knn 匹配与第二个匹配不太明显的匹配(这两个的距离比太低)这里是我的代码的一部分:
我的问题是,例如,当我有 500 个用于查询徽标的描述符和 400 个用于火车徽标的描述符时,knn 返回 500 个匹配项,但每个匹配项都针对同一个关键点。通常,它为每个描述符返回 2 个最佳匹配,因此 500 个不同的描述符,现在它们返回一个相同描述符的最佳匹配的 500 倍。
因此,当我绘制这些 knn 匹配时,在始终相同的关键点之间有 1 条匹配线,绘制了 500 次
当我尝试简单的匹配器时,它只是返回最佳匹配,我得到更多的行。我已经通过将图像与自身进行比较来测试这一点。Knn 返回这一行,其中一个简单的匹配会抽取所有 500 个匹配,在这种情况下它们当然是正确的。
我找不到任何处理过类似问题的帖子,是否有人遇到过这个问题或知道我在这里做错了什么?
提前谢谢。
visual-studio - 从 Visual Studio 或直接从 .EXE 启动时,OpenSURF 具有相同图像的不同输出
我开发了一个对象识别应用程序,使用 SURF 算法的 Chris Evans OpenSURF 实现。我正在做一些实验,我刚刚意识到,如果我通过 IDE 启动应用程序或直接双击 .exe 文件启动应用程序,算法表现不佳。我检查了 .exe 文件是我通过 IDE 启动的代码的二进制编译。从 IDE 或从 .EXE 启动应用程序时,浮点精度似乎有些不同,因为 SURF 算法是确定性的,相同的输入总是必须返回相同的输出。一些例子。第一列和第二列是从图像中提取的点数。第三列是第一列和第二列之间的差异。
EXE VS 差异
17340 17366 -26 图片001
4639 4631 8 图片002
3196 3189 7 图片003
10442 10441 1 图片004
1485 1477 8 图片005
5539 5555 -16 图片006
18102 18073 29 图片007
如果算法和代码完全相同,任何人都可以告诉我为什么输出不同?
谢谢
stack - 变量“关键点”周围的堆栈已损坏
我正在使用以下部分代码来绘制冲浪特征:
Visual Studio 给我以下错误:
变量“关键点”周围的堆栈已损坏。
Visual Studio 调试器给出以下错误:
变量“关键点”周围的堆栈已损坏
任何帮助!
surf - 如何访问 SURFTracker 类?
我正在尝试使用 emgu 包装器 > 它包含冲浪算法,所以我想知道如何访问 surftracker 类它的命名空间是什么
opencv - 在 OpenCV 中从特征关键点手动进行成对匹配
这是我的问题。我在多张图像上使用 SURF 手动提取关键点特征。但我也已经知道哪一对点会匹配。问题是,我正在尝试创建我的配对,但我不明白如何。我试图通过查看代码,但它是一团糟。
现在,我知道 features.descriptors 的大小,一个矩阵,与关键点的个数相同(另一个维度是 1)。在代码中,为了检测匹配对,它只使用描述符,所以它比较行(或列,我不确定)或两个描述符矩阵,并确定是否有任何共同点。
但就我而言,我已经知道图像 1 中的关键点 i 和图像 2 中的关键点 j 之间存在匹配。我如何将其描述为 MatchesInfo 值。特别是 std::vector< cv::DMatch > 类型的元素匹配。
编辑:所以,为此,我不需要使用任何匹配器或类似的东西。我知道哪对会在一起!
c# - EMGU CV SURF 图像匹配
我一直在使用 EMGU CV 库中的 SURF 特征检测示例。
到目前为止,它的工作非常出色;我可以检测到 2 个给定图像之间的匹配对象,但我遇到了关于图像何时不匹配的问题。
我一直在寻求论坛的支持,但他们从我所在的地方下来。有谁知道哪些参数确定图像是否匹配。当我用 2 个不匹配的图像进行测试时,代码仍然会继续进行,就好像存在匹配一样,并在图像的随机位置绘制一条模糊的粗红线,即使没有匹配也是如此。
如果没有匹配项,我希望打破代码并且不再继续。
附录:
`
opencl - 运行 clsurf 时出错
我正在尝试运行发布在http://code.google.com/p/clsurf/source/browse/#svn%2Ftrunk%2Fsrc上的 CLSurf 代码 我有一个支持 OpenCL 的 ATI 显卡。我还安装了 OpenCV。我放置了 OpenCL (AMD SDK) 和 OpenCV 的路径目录。但是当我运行程序时会出现以下错误。我很茫然,无法理解。
p>我知道这里有很多错误。但由于它发布在 code.google.com 上,我假设它必须是正确的代码,这是我的错误。我真的很感谢有人帮助我。提前致谢
android - 在用于 ANDROID 的 OpenCV 中,模式识别算法 SURF、SIFT 出现异常
我想实现一个简单的应用程序(对 sample2 的修改),它显示了 SIFT、SURF、BRIEF 和 ORB 的作用。用户可以简单地比较旋转或缩放不变性或速度。但我发现失败,我无法处理,所以我求助于你。当我尝试使用 SIFT 或 SURF 时,我总是在尝试匹配时在线获得异常:matcherBruteForce.match(descriptorFrame, matches);
我有一个类似的 AR 应用程序,并且使用这些设置它正在工作,所以我无法弄清楚我在哪里犯了错误。我试图将变量“matcherBruteForce”设置为 BRUTEFORCE,BRUTEFORCE_L1,BRUTEFORCE_SL2 事件设置为 BRUTEFORCE_HAMMING。但我总是遇到同样的例外:
筛:
冲浪:
任何帮助表示赞赏
全班:
android - 使用 openCV for android 时找不到正确的 FAST-SURF 匹配项
我正在使用 openCV for android 来实现徽标检测算法。我现在的目标是在我用安卓相机拍摄的照片中找到一个预定义的标志。
我找不到任何正确的匹配项。考虑到我几乎只使用 openCV 库函数,我认为这很奇怪。
首先我使用 FAST 检测器检测关键点,我的图像大小为 500x500,然后我使用 SURF 来描述这些关键点。与 knn 我要求 2 个最佳匹配,并消除那些 A 比率不小于 0.6(first.distance/second.distance)的。
我得到了大约 10 场比赛,但他们都错了,当我每场比赛(100 多场)都画出来时,他们似乎都错了
我在这里看不到我做错了什么,有没有人有同样的问题,或者知道我做错了什么?
opencv - SurfFeatureDetector 并使用 Mat() 创建一个空蒙版
我想SurfFeatureDetector
用来检测指定图片区域的关键点:
- Train_pic & Source_pic
- 使用 检测 Train_pic keypoint_1
SurfFeatureDetector
。 SurfFeatureDetector
使用指定区域检测 Source_pic keypoint_2 。- 计算和匹配。
OpenCVSurfFeatureDetector
如下。
void FeatureDetector::detect(const Mat& image, vector<KeyPoint>& keypoints, const Mat& mask=Mat())
mask -- 指定在哪里查找关键点的掩码(可选)。必须是感兴趣区域中具有非零值的 char 矩阵。
任何人都可以帮助解释如何mask=Mat()
为 Source_pic 创建?
谢谢杰