3

我正在开发一个应用程序,该应用程序应确定输入图像是否包含印记并返回其位置。对于 RGB 图像,我使用颜色分割并进行验证(使用各种形状因子),对于灰度图像,我认为 SIFT + 验证可以完成这项工作,但使用 SIFT 只会找到我在我的数据库。

在理想情况下,它工作得非常好,如下图所示。

图 1. http://i.stack.imgur.com/JHkUl.png

当输入图像包含数据库中不存在的标记时,会出现此问题。我做的第一件事是检查如果我将类似的印章与输入图像上的印章进行比较,是否会有任何匹配的关键点。在大多数情况下,没有单个匹配的关键点,如果有的话,它们宁愿参考输入图像的其他部分而不是戳记,如图 2 所示:

图 2. http://i.stack.imgur.com/coA4l.png

我还尝试在输入图像和圆形图像之间找到匹配,因为印章是圆形的,但圆形图像的关键点很少(如果有的话)。

所以我想知道是否有任何不同的方法可以让 SIFT 在这种情况下更有用?我想从我的数据库中创建一个包含所有描述符和关键点的矩阵,然后在输入图像和矩阵之间寻找最近的欧几里得距离,但它可能不会工作,因为整个数据库中有很多匹配的关键点(不需要) (见图 2)。

我正在使用 Matlab 并尝试了 VLFeat 和 D. Lowe SIFT 实现。

编辑:

所以我找到了一种强制 SIFT 计算图像上用户定义点的描述符的方法。我的测试图像包含一个圆圈,然后计算描述符并与输入图像匹配,包括图 1 和图 2 下的图像。这个过程重复了从 0 到 10 的尺度。不幸的是它也没有帮助。

4

2 回答 2

1

这只是第一个提示,而不是对 SIFT 问题的完整答案。

我的印象是,通过 SIFT 将圆与圆的图像进行匹配来检测圆并不是最好的方法,尤其是当您要检测的圆内部有一些未知纹理时。

圆形检测的教科书算法是Hough 变换,它主要用于线检测,但适用于任何可以用少量参数描述的形状(同事告诉我,3 以上的情况会变得很糟糕,但圆形只是有 X,Y 和 r)。文件交换有多种实现方式,链接只是一个示例。霍夫圆检测要求您在要检测的半径上设置一个上限,但这对于您的应用程序来说似乎没问题。

从您提供的示例来看,如果您能可靠地检测到圆圈,您应该会走得很远。

于 2012-08-02T12:18:30.543 回答
0

实际上,我认为 SIFT 不会解决这个问题。我一直在玩 SIFT 很长一段时间,我的结论是它非常适合识别相同的模式,但不适用于相似的模式。看看 SIFT 特征向量的构造:描述符由几个梯度直方图组成(!)。如果数据库中的模式在图章中具有非常相似的斑点状结构,那么您可能有机会。但如果这不成立,那么我猜你不会很幸运。

从我的角度来看,您已经解决了查找相同对象(邮票)的问题,现在扩展到查找相似对象。这听起来一样,但在我过去的研究中,我发现这些问题只是相关但不太相同。

您的应用程序中有任何运行时限制吗?可能还有其他方法,但在这种情况下,关于可能的约束的更多输入可能是有用的。


关于约束的更新
所以你的下一个任务可能是检测未知的邮票,对吧?这听起来像是一个分类任务。

在您的情况下,我首先会尝试找到一个描述符/表示(或 SVM),将图像分类为戳/无戳。为了评估这一点,请建立一个数据库,其中包含基本事实和合理数量的“未知”邮票和其他图像,例如来自字母的随机快照,不包含邮票。这将是您的测试集。

然后尝试一些描述符/表示来计算图像之间的距离/相似性,以将测试集分类为 STAMP / NO-STAMP 类。当您找到在分类方面表现良好的描述符/距离度量(或 SVM)时,您可以对字母执行滑动窗口方法来查找标记。滑动窗口方法当然不是一种非常快速的方法,而是一种非常简单的方法。至少当您达到这一点时,您可以调整检测 - 例如基于有趣的点检测器......但一步一步......

于 2012-10-17T19:15:25.357 回答