比较C#.NET中的图像

我有一个文档的扫描图像,该文档有多个框,可能包含也可能不包含签名。 我能够识别这些框,但现在我想弄清楚哪些框包含签名。 我试图将图像与参考空白框图像进行比较。 理想情况下,像素匹配应该可以,但我的图像可以倾斜一定的角度,这使它很难。 我在.NET编程。

有什么建议?

04年1月编辑:我在11月25日提出了这个问题。当时,提出的解决方案是检查图像中黑色像素的数量。 这对我有用。 但是,应用程序的性能现在很糟糕。 因为,它必须检查20个100 * 1000大小的矩形上的黑色像素。

有没有更好的解决方案来确定图像是否为空白?

也许您可以将与“空白”颜色匹配的像素数相加,然后将与空白颜色不匹配的像素数相加。 如果非空白像素的数量超过一定水平,那么假设有签名? 从逻辑上讲,一个空框将包含几乎完全空白的像素,并且其中包含签名的框将包含更少的空白像素。

编辑:一个额外的点 – 您将希望对“空白”像素颜色具有一定程度的容差,否则在扫描时产生的一些灰尘或渐变将导致非空白像素。

您应该首先尝试标准化图像的旋转。 一种方法是在页面上放置可以排列的标记(页面每个角落的黑色方块是我之前看到过的),以确保在您尝试识别签名之前页面的旋转是正确的。

也许最快的方法是在图像的字节流上执行MD5哈希并比较结果? 在这里查看有关此内容的更多信息。

希望这会有所帮助,最好的问候,汤姆。