【问题标题】:Java library or strategy to tell if an image contains a signature判断图像是否包含签名的 Java 库或策略
【发布时间】:2014-02-28 22:57:52
【问题描述】:

我有一个图像文件,我需要确定该图像的指定区域是否包含签名。或者用最终用户的话来说,“这个文件已经签署了吗?”

到目前为止,我所做的是检查该区域中包含的所有像素,计算平均“暗度”,并将其与参考值进行比较。如果黑暗的差异超过某个阈值,那么我认为它已签名。

这种(诚然简单)方法的问题在于,由于签名本身的像素只占面积的一小部分,我必须使用非常低的暗度阈值,这会导致大量误报。我无法将真实签名与杂散标记、污迹、传真伪影等区分开来。

要明确...我不是要匹配任何特定签名或一组签名。也就是说,我不关心签名,只关心是否签名。

有没有人知道可以做到这一点的 Java 库,或者比我目前正在做的更好的解决这个问题的方法?

编辑:

这是我正在使用的各种图像的example。该文件将被传真给收件人,签名并传真回。当我需要寻找签名时,它不会看起来这么干净。

【问题讨论】:

  • 而不是使用平均暗度,也许看看是否有像素线大于某个值。因此,例如,找到第一个非白色像素,然后查看在任何方向上有多少非白色像素连接到它。您甚至可以检查是否有多个区域,以防他们在手稿而不是草书上签名。或者,如果单个区域的像素数超过一定数量,以防它们标记“X”。
  • 你能上传一些示例图片吗..?我最近也在处理一个类似的问题,我相信我可以帮到你。
  • @scap3y 我添加了一个示例图片的链接。
  • 你能上传一张带签名的图片吗?
  • 顺便说一句,我使用的方法是:使用this 检测带有文本的区域,然后将其删除。如果有任何像素被遗漏,则图像会进入稍深的测试(这基本上会删除所有“正常”文本)。

标签: java opencv image-processing computer-vision


【解决方案1】:

我不知道任何简单的解决方案。您可以覆盖queXF 或用Java 编写类似的东西。 This paper 谈论识别签名的颜色代码算法。

【讨论】:

  • 引用的论文涉及识别特定签名:“此图像与 X 的签名匹配吗?”我的问题是:“这张图片是否包含任何签名?”
【解决方案2】:

这是我认为可以做到的(虽然不是一个很好的解决方案)但可能仍然有效。这将涉及一些机器学习。我假设您的图片不包含手写文本,它只是一张图片。

首先要做的是创建一个包含签名和不包含签名的图像数据集。数据集的正样本应仅包含签名(您可以学习多个纵横比的分类器),负样本应包含相同纵横比/尺寸的随机图像。现在,您可以在这些样本上计算一些特征(HoG 可以用作特征,尽管我并不认为它是用于此应用程序的最佳特征)并为每个纵横比学习一个 SVM。

下一步是在整个图像中滑动一个检测窗口(具有不同的纵横比),并使用您学习的多个 SVM 并检查它们中是否有任何一个给出了积极的响应。

虽然这种方法可能并不总是有效,但应该可以提供相当不错的准确性。您将用于学习的数据越多,结果就会越好(如果您能提出一个好的特征向量来表示签名,它将帮助您进一步案例)

【讨论】:

  • Bharat 建议的方法可以很好地工作。我使用了相同的滑动窗口方法,但我使用的是宪法神经网络而不是 SVM,它的效果要好得多。此外,使用滑动窗口方法,您可以通过创建位图强度(在获得阳性的地方增加像素值)并在最大像素强度值上使用阈值来解释分类器误报。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
  • 2019-08-17
  • 1970-01-01
相关资源
最近更新 更多