手机拍照自动求和


图像识别初探

我们之前探讨了图像处理技术,接下来,我们来聊聊图像识别这一令人兴奋的话题。对于那些未曾了解过的同学,请关注我们的头条号:简单的老王。

在数字化时代,图像识别技术日益受到重视。当我们拿到一个字符的图案时,如何将其转化为计算机可认知的二进制编码呢?这次,我们主要讨论英文和标点的识别方法。

识别图像的方法有很多种,我接下来将介绍几种我使用的方法。为了提高识别率,可能还有其他更高效或先进的方法,这里未提及的请谅解。

每个待识别的字符图案都有其独特特征(例如,i字形很细长,O形状很圆润,T有横竖两笔等)。识别时,我们可以借助这些特征进行逐步分析。

那么,具体操作步骤是什么呢?

我们将多种字体的所有英文字符和标点生成标准图案,再将待识别图案与之进行比对,找出最相似的标准图案,从而确定其可能的ASCII码。

步骤一:生成模板图案

我们使用常见的字体,将所有英文字符和标点生成标准图案。这里简称为模板图案。为什么需要多种字体呢?因为同一字符在不同字体下可能呈现完全不同的样子。例如,字符“gal”在不同字体下效果截然不同。

拿到这些标准模板图案后,我们得到了如下的位图。

仅有这些位图还不够,我们还需要进行其他工作来保证后续的匹配工作能正常进行。接下来,我们来看看还需要做什么工作。

步骤二:归一化与记录meta信息

我们将模板图案的背景去除,让前景图案顶格。接着统一其宽高,将图案压缩或拉伸到固定大小(例如50像素50像素)。这样我们才能更好地进行比对。简而言之,大家都用同样的标准,否则你穿XL号的衣服,我穿S号的,我们如何比较?

有了统一的比对标准,是不是一切都解决了呢?答案是否定的。有些图案在归一化后可能会失真。为了解决这个问题,我们还要记录图案的meta信息,如原始的长宽、原始的位图等。这些信息在匹配时能提供额外的信息,帮助算法判断有效性。

步骤三:模板图案与待匹配图案的匹配

接下来,我们使用匹配算法对待匹配的图案和模板图案进行匹配。图像识别的算法有很多种,根据不同的应用场景,会有不同的选择。有些方法直接匹配,有些则通过数据挖掘来识别。每种方法都有其适用场景,没有绝对的好坏。

我曾看过一篇文章,讲的是验证码识别。验证码为了防止机器识别,会对字符进行旋转、扭曲、干扰等处理。那篇文章详细介绍了十几种识别算法。在这里,我们主要关注英文和标点的识别,因此采用以下几种方法:

1. 字符像素匹配:直接比对待匹配图案和模板图案的每一个像素点。

2. 投影区块匹配:将图像在x轴和y轴上做投影,然后比对投影的结果。

3. 九宫格匹配:将图案分成33的格子,统计每个格子里的像素值,然后比对这些统计值。

4. 重心匹配:计算位图中重心的位置,通过比对重心来判断图案的类型。

5. 宽高比匹配:通过计算图案的宽高比来辅助判断。每种匹配算法都有其优缺点,我们需要综合考虑所有算法的判定结果来确定最终的匹配值。

通过上面的算法,我们将待匹配的图案与每一个模板图案进行算法比对的相似度值求出来,做个排序,取相似度最大的那个,基本就得到我们想要的结果了。

为了验证效果,我实际应用了这个方法,效果还不错。但还有些字符如(I、l、i)、(t、[)等容易识别错误。为了解决这些问题,我们可以加入单词校正算法,如LCS(最长公共子序列)或Tree等。有了纠错算法,基本能很好地将图案识别出来。

图像识别是一个复杂且有趣的话题。除了上述方法,实际应用中还会对数据进行反馈训练,调整参数等。中文识别的难度和复杂度会更高,需要更深入的研究。本次分享到这里就结束了,希望对大家有所帮助。最后上美图(展示相关图像或界面设计),我们下次再见!