问题标签 [sift]
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 个匹配,在这种情况下它们当然是正确的。
我找不到任何处理过类似问题的帖子,是否有人遇到过这个问题或知道我在这里做错了什么?
提前谢谢。
sift - 如何在 Andrea Veldadi 的 SIFT 实现中绘制匹配点?
我使用了 vl_ubcmatch 函数。我从如何使用 SIFT 算法来计算两个图像的相似程度得到了帮助?. 我正在使用的步骤是https://stackoverflow.com/users/71131/jacob 推荐的?. 这些是:
这样做的目的是显示两张图像,其中一张标记为蓝色,另一张标记为红色。但是,我也想看到相应的特征被一条线连接起来。
sift - SIFT 泰勒展开计算子像素位置
我正在尝试实现 SIFT,目前只是想在开始在 MATLAB 中实现它之前了解它是如何工作的,除了如何使用泰勒展开计算亚像素精度之外,我了解其中的大部分内容:
以上是原始论文中的方程式。我有几个关于它是如何应用的问题。
是否在每个维度上分别计算导数,然后将方程应用于 x 和 y?
一阶和二阶导数是否也沿 sigma 轴应用?
我已经厌倦了查看以前的实现,但无法找到他们这样做的地方。提前致谢
image-processing - SIFT 描述符:循环支持补丁指的是什么?
我正在阅读这篇文章,使用随机森林和蕨类植物进行图像分类。它写道:
SIFT 描述符 [19] 在间距为 M 个像素的规则网格上的点处计算。在每个网格点,描述符在四个具有不同半径的圆形支撑块上计算,因此每个点由四个 SIFT 描述符表示。计算多个描述符以允许图像之间的比例变化。
我不确定关于四个圆形支撑补丁的部分是什么意思。任何人都可以向我澄清这一点?
c++ - 使用 SIFT 描述符的 OpenCV (C++) 增加了检测到的特征数量?
在使用OpenCV的SIFT 描述符实现时,我遇到了一些令人困惑的情况。
我正在尝试测试各种特征检测器 + 描述符计算方法,因此我使用了cv::FeatureDetector
和cv::DescriptorExtractor
接口的组合,这使我可以简单地在不同的检测器方法和描述符之间进行更改。
在调用cv::DescriptorExtractor::compute(...)
(单个图像的变体)时,文档说如果无法计算其描述符,则赋予算法的关键点数量可能会减少,我理解这样做的方式和原因。
但是,发生在我身上的是描述符计算后的关键点数量实际上增加了。显然是这样,我并没有试图阻止它发生,我只是希望能解释一下原因(只是一个直观的描述会很酷,尽管我更欣赏那些)。
我在没有任何代码的实际 OpenCV 周围有一层又一层的包装器(只是设置了一些本地非 OpenCV 标志),所以这是在它的底部调用的 OpenCV 代码:
我在描述符计算之前和之后打印了前 10 个关键点,所以这里有一些具体的数字作为示例:
我可以从这个例子中看到,原来的feat[1]
和feat[7]
每个都跨越了两个新的关键点,但我没有看到任何合乎逻辑的解释来说明compute
这样做的方法:(
我在这里给出的打印输出是使用MSER检测关键点,然后尝试计算SIFT描述符,但同样大小的增加也发生在检测到的STAR、SURF和SIFT(即 DoG)关键点上。我没有尝试将SIFT描述符更改为其他内容,但如果有人认为它与问题相关,我会尝试并在我的问题中对其进行编辑。
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 多场)都画出来时,他们似乎都错了
我在这里看不到我做错了什么,有没有人有同样的问题,或者知道我做错了什么?
image - 使用 SIFT 描述符比较两幅图像之间的相似性
我正在使用 SIFT 算法来确定两个图像之间的相似度。我设法获得了图像的描述符列表,但我似乎不知道下一步该做什么。我的问题是我有不同数量的描述符,它们的顺序可能不一样。比较这些描述符的最佳方法是什么?
谢谢。
c++ - 尝试在 OpenCv 中使用 sift 匹配两个图像,但匹配太多
我正在尝试实现一个程序,该程序将输入两个图像,一个是单独的盒子图像,另一个是场景中的盒子。基本上,该程序应该在这两个图像中找到关键点,并将显示与关键点匹配的图像。最后,我希望看到两个输入图像的附加图像以及连接的匹配关键点。我的代码如下:
问题是有两个多于预期的匹配。我试图调试程序并查看关键点向量内部的内容等等,一切看起来都很好,至少我认为它们是,关键点是通过方向等检测到的。
我正在使用 OpenCV v2.3 并检查了它的文档以了解我正在使用的类的类型,并试图解决问题,但没有奏效。我为此工作了 3 天并没有取得太大的进步。
这是我从程序中得到的输出。
我应该删除图像。
我知道这不应该给我太多的匹配,因为我已经在 matlab 中用另一个非常好的实现测试了完全相同的图像。