【发布时间】:2014-02-28 22:57:52
【问题描述】:
我有一个图像文件,我需要确定该图像的指定区域是否包含签名。或者用最终用户的话来说,“这个文件已经签署了吗?”
到目前为止,我所做的是检查该区域中包含的所有像素,计算平均“暗度”,并将其与参考值进行比较。如果黑暗的差异超过某个阈值,那么我认为它已签名。
这种(诚然简单)方法的问题在于,由于签名本身的像素只占面积的一小部分,我必须使用非常低的暗度阈值,这会导致大量误报。我无法将真实签名与杂散标记、污迹、传真伪影等区分开来。
要明确...我不是要匹配任何特定签名或一组签名。也就是说,我不关心谁签名,只关心是否签名。
有没有人知道可以做到这一点的 Java 库,或者比我目前正在做的更好的解决这个问题的方法?
编辑:
这是我正在使用的各种图像的example。该文件将被传真给收件人,签名并传真回。当我需要寻找签名时,它不会看起来这么干净。
【问题讨论】:
-
而不是使用平均暗度,也许看看是否有像素线大于某个值。因此,例如,找到第一个非白色像素,然后查看在任何方向上有多少非白色像素连接到它。您甚至可以检查是否有多个区域,以防他们在手稿而不是草书上签名。或者,如果单个区域的像素数超过一定数量,以防它们标记“X”。
-
你能上传一些示例图片吗..?我最近也在处理一个类似的问题,我相信我可以帮到你。
-
@scap3y 我添加了一个示例图片的链接。
-
你能上传一张带签名的图片吗?
-
顺便说一句,我使用的方法是:使用this 检测带有文本的区域,然后将其删除。如果有任何像素被遗漏,则图像会进入稍深的测试(这基本上会删除所有“正常”文本)。
标签: java opencv image-processing computer-vision