SURF 已获得专利,SIFT 也是如此。ORB 和 Brief 没有专利,但它们的特性不是尺度不变的,严重限制了它们在复杂场景中的有用性。
是否有任何特征提取器可以像 SURF 一样快地提取尺度不变特征,并且没有像 SURF 和 SIFT 那样严格的专利?
SURF 已获得专利,SIFT 也是如此。ORB 和 Brief 没有专利,但它们的特性不是尺度不变的,严重限制了它们在复杂场景中的有用性。
是否有任何特征提取器可以像 SURF 一样快地提取尺度不变特征,并且没有像 SURF 和 SIFT 那样严格的专利?
虽然您已经选择了 BRISK,但您可能会觉得FREAK很有趣。作者声称比 BRISK 和 ORB 有更好的结果。我还应该补充一点,ORB是尺度不变的,但在该领域存在一些问题。所以我还是会推荐给别人试试。
FREAK 源代码与 OpenCV 兼容(合并它们有多容易,我不知道),作者正在努力将其提交到 OpenCV 项目。
编辑:
FREAK 应该是最快的缩放和旋转不变描述符提取器,它是开源的,您可以轻松使用它,因为它是在 OpenCV 中实现的。您需要一个使用汉明距离的二进制匹配器,例如 BruteForceMatcher。
Here你有一个如何使用它的例子,很容易被SIFT描述符替换。
我最终使用了Brisk,这是一个性能与 SURF 相当但在 BSD 许可证下的特征检测器。另外,它有一个非常好的开源 C++ 实现,可以轻松插入 OpenCV FeatureDetector 框架,所以就像在代码中选择使用 Brisk 而不是 SURF 的 2 行代码一样。
您可以尝试多尺度直方图的定向梯度。它不会是完全尺度不变的,但如果您的数据受到一组合理的尺度限制的约束(在实践中通常是这种情况),那么这可能对您有用。
另一种方法,完全取决于您的预期应用程序,将利用poselets,即使它们建立在非尺度不变描述符(如定向梯度的普通直方图或外观模型)之上。如果您的训练数据中的注释包括在不同尺度上用于检测的不同项目的示例,那么在 Poselets 中用于训练的 Procrustes 式距离应该注意很多尺度不变性。如果您的主要应用不是零件的局部检测,这可能并不令人满意。
顺便说一句,我认为 SIFT 和 SURF 能够以这种方式获得专利是相当不幸的,因为它们(至少部分)通过赠款获得了纳税人的资金。
你可以试试 KAZE,它应该更快更精确(视频看起来很花哨,但我自己还没有尝试过)。还有一个可用的加速版本。
Pablo F. Alcantarilla、Adrien Bartoli 和 Andrew J. Davison,“ KAZE Features ”,在欧洲计算机视觉会议 (ECCV) 上。佛罗伦萨*,意大利。2012 年 10 月。
Pablo F. Alcantarilla、Jesús Nuevo 和 Adrien Bartoli,“非线性尺度空间中加速特征的快速显式扩散”,英国机器视觉会议 (BMVC)。英国布里斯托尔。2013年九月
源代码、视频等可以在作者的网站上找到。
*佛罗伦萨
FREAK 现在包含在 OpenCV 2.4.2 中,您可以轻松使用它:-)
通过在地标点周围形成补丁来检测地标点并找到 hog 特征(它不是专利)。