问题标签 [feature-descriptor]
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.
image-processing - 什么是 2+1-D 时空视频?
我正在阅读http://www.scholarpedia.org/article/SIFT,我需要一些帮助来定义这一部分:
SIFT 描述符也已从灰度级扩展到彩色图像,从 2-D 空间图像扩展到 2+1-D 时空视频。
什么是 2+1-D 时空视频?
opencv - SURF 描述符实现
我想生成SURF 描述符(长度为 64 的向量)。
在原始论文中,这里说:
该区域定期分成较小的 4*4 方形子区域。对于每个子区域,我们在 5*5 规则间隔的样本点处计算 Haar 小波响应。
在OpenCV的帮助下,我可以获得关键点及其相关区域(通过使用KeyPoint::size
and angle
),但我的问题是:
1. 如何计算 Haar 小波响应?
2. 什么是“在 5 x 5 规则间隔的采样点”是什么意思?
我已经阅读了有关 Harr 小波的wiki和介绍,但仍然不知道如何编写代码。
我知道如何使用 OpenCV SurfDescriptorExtractor
,但我不能使用它,因为我需要放大或缩小原始区域并获取新的描述符。
感谢您提供有关如何生成 SURF 描述符的任何提示。
opencv - 使用 MSER 作为有趣的关键点计算描述符大小
我正在研究一种应用于组织学图像的图像配准方法。
我有一个问题。我想使用 MSER 特征检测器来检测图像上的关键点。使用 opencv 提供的 MSER 函数检索 MSER 轮廓后,我计算每个轮廓的质心,以便将其用作有趣的点。
如果我直接对感兴趣的点进行描述,例如使用 Surf 描述符,描述符的大小是 1,无法比较它们。
因此需要将描述符的大小修改为合适的大小。
有人有想法吗?
谢谢
opencv - 为什么opencv FREAK提取器会删除这么多关键点,特别是使用ORB检测器
我正在使用 OpenCV 2.4.3 c++ 接口来查找两个图像之间的匹配点。第一次尝试是使用 SURF。唯一的问题是耗时,所以我尝试了新的 FREAK 提取器。使用 SURF 进行检测,使用 FREAK 进行描述,我意识到 FREAK 将关键点的数量减少到几乎检测到的一半,并且结果匹配还不够。这就是原因,我尝试 FAST 来获得更多的关键点。结果:
- SURF 检测器,SURF 提取器,BFMatcher crosscheck true,RANSAC:第一个图像 70 个关键点,第二个图像 50 个关键点,200 毫秒。250 毫秒。15 毫秒。15 毫秒。
- SURF 检测器,FREAK 提取器,BFMatcher 交叉检查为真,RANSAC:第一个图像 39 个关键点,第二个图像 30 个关键点(在 FREAK 之后),200 毫秒,50 毫秒。, 0 毫秒, 0 毫秒。结果是好的匹配太少了。
- FAST 检测器、FREAK 提取器、BFMatcher crosscheck true、RANSAC:120 个关键点、90 个关键点(FREAK 之后的 69 和 48 个关键点)、10 毫秒、450 毫秒、15 毫秒、10 毫秒。
之后,我使用了 ORBFeatureDetector,它获得的关键点数量与 FAST 相同,但在 FREAK 提取器之后,每个图像的结果关键点为 0。难道我做错了什么?ORB 关键点与从 FAST 获得的关键点不同吗?也许我可以为此提出另一个问题,但我有最后一个问题。什么是检测器/提取器的最佳组合,以获得与我使用 SURF 的第一次实验相同的结果,但减少了处理时间?因为当我获得更多关键点时,提取器部分也更耗时,尽管我使用 FREAK。
opencv - 打印关键点描述符
我会打印特征关键点的描述符。我的方法在输入中接收关键点向量和该点的垫子描述符。有人知道一个简单的解决方案吗?谢谢
opencv - SIFT opencv2.3.1/2.4.3 都给出非常奇怪的描述符..like 7., 29., 39., 11., 2.3.1 给出非常奇怪的描述符
这是 SIFT 的非常简单的代码,我得到的是非常奇怪的描述符。它们正确吗?
描述符:[0., 7., 29., 39., 11., 0., 0., 0., 32., 30., 39., 52., 16., 0., 1., 12. , 38., 14., 10., 20., 28., 93., 45., 37., 93., 3., 6., 11., 23., 107., 24., 80., 0 ., 2., 47., 53., 0., 1., 9., 8., 104., 85., 35., 41., 1., 10., 32., 19., 130., 73., 0., 0., 8., 76., 31., 42., 61., 40., 10., 5., 83., 130., 28., 31., 3., 0. , 0., 0., 0., 2., 12., 17., 60., 4., 0., 0., 0., 31., 76., 83., 130., 38., 10 ., 6., 15., 10., 16., 89., 19., 21., 16., 23., 130., 94., 7., 3., 1.]
c++ - OpenCV 中的 SiftDescriptorExtractor 如何转换描述符值?
我对 SiftDescriptorExtractor 工作的最后一部分有疑问,
我正在执行以下操作:
现在我想检查一个 descriptors_object Mat 对象的元素:
输出看起来像:
但在Lowe 论文中指出:
因此,我们通过将单位特征向量中的值阈值化到每个不大于0.2,然后重新归一化到单位长度来减少大梯度幅度的影响。这意味着匹配大梯度的大小不再那么重要,并且方向的分布更加重要。使用包含相同 3D 对象的不同照明的图像通过实验确定 0.2 的值。
因此,特征向量中的数字不应大于 0.2 值。
问题是,这些值是如何在 Mat 对象中转换的?
c++ - 在 OpenCV 的 FlannBasedMatcher 中,培训究竟发生在什么阶段?
以下代码使用 C++ 编写,我正在使用 OpenCV 进行实验。假设我以下列方式使用 kd-tree (FlannBasedMatcher):
在上面的代码中,训练似乎是在调用 train() 函数时进行的(即构建了 kd-tree)。但是,如果我们查看 train() 函数的内部,这就是问题所在:
这两个操作(设置训练描述符和 flann 索引,我在调用 train() 之前已经完成)。那么kd-tree究竟是什么时候建立的呢?
android - OpenCV:在 Android vs OSx 上运行相同代码的问题
我使用 OpenCV 编写了简单的模板匹配程序,它在 Android 和 OSx 上产生了令人惊讶的不同结果。
首先,看看我在做什么:
现在接下来看看我得到了什么:
在运行 Android 4.2.2 和 OSx 10.7(Lion) 的 Nexus i9250 上运行相同的代码段会得到以下结果:
- 垫对象:在两个操作系统上都相同
- 要点:[在 Android 上][2]、[在 OSx 上][3]、[差异][4]
- 描述符:[在 Android 上][5]、[在 OSx 上][6]、[DIFFERENCE][7]
- 匹配项:[在 Android 上][8]、[在 OSx 上][9]、[差异][10]
注意: 如果我对这些文件进行排序,则没有区别;所以我没有得到的是,为什么我得到不同的排序结果?让它们按顺序排列是我的要求,因为我需要进一步计算。此外,在同一平台上运行相同的代码片段总是会产生相同的有序结果。
Stackexchange 限制我的帐户在帖子中发布超过 2 个链接,因此请检查链接的评论。