C# 感知图像散列

C# 感知图像散列,c#,image,hash,ocr,C#,Image,Hash,Ocr,嗯。这是(非英语)OCR项目的一部分。我已经完成了预处理步骤,如倾斜、灰度缩放、字形分割等,现在我陷入了最重要的一步:通过将字形与字形图像数据库进行比较来识别字形,因此需要设计一种鲁棒有效的感知图像哈希算法 由于许多原因,我需要的函数不会像一般图像比较问题所要求的那样复杂。首先,我的图像总是灰度的(甚至是黑白的,如果这样可以更容易识别的话)。另一方面,这些字形比照片更“笔划导向”,结构更简单 为了定义一个好的相似性度量,我尝试了自己的一些想法和借用的一些想法。一种方法是将图像划分为一个由M x

嗯。这是(非英语)OCR项目的一部分。我已经完成了预处理步骤,如倾斜、灰度缩放、字形分割等,现在我陷入了最重要的一步:通过将字形与字形图像数据库进行比较来识别字形,因此需要设计一种鲁棒有效的感知图像哈希算法

由于许多原因,我需要的函数不会像一般图像比较问题所要求的那样复杂。首先,我的图像总是灰度的(甚至是黑白的,如果这样可以更容易识别的话)。另一方面,这些字形比照片更“笔划导向”,结构更简单

为了定义一个好的相似性度量,我尝试了自己的一些想法和借用的一些想法。一种方法是将图像划分为一个由M x N个单元格组成的网格,并取每个单元格的平均“黑度”为该图像创建哈希,然后取哈希的欧几里德距离来比较图像。另一种方法是在每个字形中找到“角”,然后比较它们的空间位置。事实证明,它们都不是非常健壮的

我知道有像SIFT和SURF这样更强的候选者,但我有三个很好的理由不使用它们。一是,我猜它们是专有的(或以某种方式获得专利),不能用于商业应用程序。第二,它们是非常通用的,对于我比较简单的图像领域来说,可能是一种过度使用。第三,没有可用的实现(我使用的是C#)。我甚至试图将pHash库转换为C#,但仍然没有成功


我终于来了。有人知道代码(C或C或C++或java或VB.NET,但不需要任何在.NET世界中不能使用的依赖关系)、库、算法、方法或思想来创建一个健壮高效的哈希算法,可以在诸如翻译、旋转、缩放、模糊等小视觉缺陷中生存。斑点等。

看起来您已经尝试过类似的方法,但可能仍有一些用处:


谢谢你,伙计。是的,我以前看过这篇文章。但正如作者所说:“然而,如果有修改——比如添加了文本或将头部拼接到位,那么平均哈希可能无法完成这项工作。虽然pHash速度较慢,但它对微小修改的容忍度非常高(微小的修改不到图片的25%)。”OCR图像通常具有轻微的(有时严重的)转变。