问题标签 [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.
matlab - 解释 SIFT 中的分数
我在matlab中使用SIFT算法来确定模板图像和一组图像之间的相似度,最后我必须根据SCORES确定一组图像之间的最佳匹配,是不是说分数越高图像越匹配?我知道当完全匹配时,分数为零,但如果图像相似怎么办?
algorithm - SIFT算法能否在PC上实时提速?
在 David Lowe 2004 年的论文“Distinctive Image Features from Scale-Invariant Keypoints”的第 25 页中,他声称,“它们的计算效率很高,因此可以在标准 PC 上以近乎实时的性能从典型图像中提取数千个关键点硬件。” 这是链接:http ://www.cs.ubc.ca/~lowe/papers/ijcv04.pdf
但是,我使用 Andrea Vedaldi 的 sift++(又名 VLFeat)在 640x480 图像上测试了 SIFT 算法,这是一个 c++ 实现,从一张图像中提取大约 3000 个关键点需要 0.839 秒。我的电脑是 Intel i7 2600k,有 16GB RAM。这是代码的链接:http ://www.vlfeat.org/~vedaldi/code/siftpp.html
说实话,SIFT能做到实时速度我觉得挺奇怪的,因为它要从一张图像中提取这么多关键点。
有人知道现代 PC 上的 SIFT 有多快吗?
opencv - opencv中大图像的关键点检测与匹配
我正在opencv中进行关键点检测和匹配以拼接两个图像。
当图像很小时,它工作得很好。但是在处理较大的图像时,检测到的关键点数量会增加,因此要花费大量时间来匹配它们。但是为了拼接图像,我们似乎不需要这么多关键点。为了提高效率,有没有办法只检测有限数量的关键点?
在代码中,我使用 SiftFeatureDetector 和 SiftDiscriptorExtractor 来检测关键点并提取描述符。
问候。
android - 使用 FAST 检测更快地进行 SURF 描述?
对于我的硕士论文,我正在对 SIFT SURF en FAST 算法进行一些测试,以在智能手机上进行徽标检测。
当我简单地对某些方法进行检测、描述和匹配时,我得到以下结果。
对于 SURF 检测器和 SURF 描述符:
找到 180 个关键点
1,994 秒关键点计算时间 (SURF)
4,516 秒描述时间(SURF)
0.282 秒匹配时间(SURF)
当我使用 FAST 检测器而不是 SURF 检测器时
找到 319 个关键点
0.023 秒关键点计算时间 (FAST)
1.295 秒描述时间(SURF)
0.397 秒匹配时间(SURF)
FAST 检测器比 SURF 检测器快得多,甚至检测到几乎两倍的关键点,速度快 100 倍。这些结果是可以预见的。
下一步虽然不是预期的结果。使用 319 个 FAST 关键点的 de SURF 描述符怎么可能比使用 180 个 SURF 关键点的速度更快?
据我所知,描述与检测算法无关……但这些结果并不像预期的那样。
有谁知道这怎么可能?
这是代码:
computer-vision - 具有 SIFT 类似特征的 CBIR,离散方法与连续方法
目前我正在处理实现一个用于对象识别的 CBIR 系统(详细的对象分类),现在因为我有一些工作的特征检测器和描述符,我试图找到处理这些特征的最佳方法,以完成基于内容的任务图像检索。
据我所知,这项任务有两个主要趋势,离散方法和连续方法。离散代表方法,如视觉词袋和码本,用于建立反向索引以应用引用文本检索的方法,而连续代表方法,如使用 kd 树和最近邻分类的 Best Bin First 搜索。
所以这两种方法之间的一个主要区别是,一种使用视觉词等特征的额外表示,另一种使用从描述符计算的 nD 特征。
我现在的问题是,这两种 CBIR 方法之间是否有任何比较可以帮助我找到适合我的任务的最佳方法?
matlab - Matlab 筛选关键点多张图像,显示在一张图像上
我正在尝试将 4 个并发视频帧中的筛选关键点显示到一个图像上。我已经能够确定每个图像的关键点,但是我想在最后一张图像上显示所有这些关键点集,而不是 4 个单独的图像,以跟踪正在显示的卡车的运动。我写的代码如下:
如何从仅在图像 I4 上显示的图像 I1、I2、I3 和 I4 中获取 SIFT 关键点?
opencv - 在单个图像中重复筛选关键点
我正在使用 opencv2.3.1 来检测图像中的 SIFT 关键点。但是我发现在检测结果中,有重复的点。即,有两个坐标相同(以像素为单位)的关键点,但它们对应的描述符却大不相同。以下代码显示了 SIFT 提取过程。我认为人们应该熟悉使用过的“box.png”。所以有兴趣的朋友可以试试下面的代码,看看有没有跟我一样的问题。
}
c++ - OpenCV 上的简单 SIFT 检测器 ISSUE
我正在实现这个简单的示例只是为了熟悉 OpenCv 和 SIFT。
我期待它非常简单,但它引发了以下错误:
undefined reference to 'cv::SIFT::CommonParams::CommonParams()'
在第 11 行undefined reference to 'cv::FeatureDetector::detect(cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&, cv::Mat const&) const'
在第 13 行undefined reference to 'cv::drawKeypoints(cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> > const&, cv::Mat&, cv::Scalar_<double> const&, int)'
在第 17 行
你能告诉我出了什么问题吗?这是代码中的问题,还是我遗漏了一些headers
?
完整的构建输出:
c++ - 使用 OpenCV 丢弃细胞图像中的异常值 SIFT 关键点
我正在处理生物信息学的任务,需要从一些细胞图像中提取一些特征。
如图所示,我使用 SIFT 算法提取图像内部的关键点。
正如您在图片中看到的(以红色圈出),一些关键点是异常值,我不想计算它们的任何特征。
我cv::KeyPoint
使用以下代码获得了向量:
但我想从vector
所有那些关键点中丢弃,例如,在图像中以它们为中心的某个感兴趣区域 (ROI) 内的关键点少于 3 个。
因此,我需要实现一个函数,返回作为输入给出的某个 ROI 内的关键点数:
我有三个问题:
- 是否有任何现有的功能做类似的事情?
- 如果不能,你能给我一些帮助来理解如何自己实现它吗?
- 你会为这个任务使用圆形还是矩形 ROI?你会如何在输入中指定它?
笔记:
我忘了指定我想要一个有效的函数实现,即检查每个关键点的所有其他点相对于它的相对位置不是一个好的解决方案(如果存在另一种方法)。
cluster-analysis - SIFT 向量的分层 k 均值聚类
全部
在本文中,他们使用大量 SIFT 向量 (128-D) 作为分层 k-means 聚类的输入,以构建分层视觉词汇树。
有谁知道我可以用来进行这种聚类的任何好的库?
Ps:输入 SIFT 描述符的数量很高(70,000,000),我希望结果将是具有 1,000,000 个叶节点的词汇树。
非常感谢。问候。