[英]Computer Vision - Recognize 'A' from an image of 'A'
嗨,我是一个新手程序员,在处理简单的图像时遇到了麻烦。
我在这里的目标是使程序识别出两个A是...嗯,两个A都是。 如果您足够仔细地看,您会发现它有点不同。(以像素为单位。)尽管任何有识字的人都可以将其读为“ A”,但是我敢肯定,逐像素比较的程序不会之所以起作用,是因为两个A实际上不同。 更糟的是,这两个尺寸不同-一个是48 * 60,另一个是48 * 61。
我想知道程序是否有办法将它们都读为A。 我听说这就是所谓的计算机视觉(不太确定)……我真的更希望该方法很简单-并不是要识别任意字符; 只有“ A”。 但是,如果不是那样,那么欢迎任何使计算机将它们都视为A的解释。
提前致谢 :)
第一:字符识别不仅不是一个简单的问题,也不是一个完全解决的问题。
是否有许多OCR实现? 是。 这些实现好吗? 这取决于应用程序。 您认为OCR应该越概括,现有的实现就越糟糕。
长话短说,有专门针对这个主题的书,要花任何篇幅来提供有意义水平的细节答案。
有许多OCR(光学字符识别)技术。 已经针对(a)机器打印字符与(b)手写字符开发了不同的技术。 读取机器打印的字符通常比较容易,但不一定很容易。 读取手写字符可能非常困难,并且仍然是一个未完全解决的问题。 请记住,还有其他“脚本”(书写字符系统),并且拉丁字符的识别技术可能与传统汉字的识别技术不同。 [如果您可以编写一个移动OCR应用程序以快速,准确地读取手写汉字,那么您可以赚很多钱。]
https://en.wikipedia.org/wiki/Optical_character_recognition
有许多种OCR方法,如果您对实际编写代码来执行OCR感兴趣,那么您自然应该首先考虑至少实现一种较简单的技术。 从您的评论看来,您已经在研究这一点,但简要地说:不要先看神经网络。 是的,您可能最终会到那里,但是在充分利用神经网络技术之前,还有很多关于成像,照明和基本图像处理的知识要学习。
但是在深入探讨之前,请花一些时间尝试自己解决问题:
稍作修改后,请阅读一些基本的图像处理技术。 一本好书是Gonzalez和Woods撰写的Digital Image Processing。
(归一化相关是一种可以在网上和书籍中阅读的简单算法。它对某些简单类型的OCR很有用。您可以将归一化相关视为将参考“ A”字符的“模具”与样本的ACR比较的一种方法。其他可能不是'A'的字符-模板与样本的距离越近,样本对A的置信度越高。
是的,请尝试使用OpenCV的模板匹配。 首先尝试使用OpenCV功能,并了解模板匹配何时起作用以及何时失败,然后更仔细地查看代码。)
最新的OCR技术调查可以在本书中找到:Cheriet的字符识别系统 。 这是研究各种算法的良好起点。 其中一些技术将非常令人惊讶且违反直觉。
要了解有关人类如何识别角色的更多信息(其细节通常令人惊讶且违反直觉),请阅读 Dehaene撰写的《大脑中的阅读》 。 这本书可读性强,不需要特殊的数学或编程技能。
最后,对于任何OCR算法,记住以下几点很重要:
祝好运!
您的问题看起来像是光学字符识别。 为此,一种非常常见的方法是使用神经网络。 神经网络将分析图像并为您提供每个字母的概率。 但是您必须首先对其进行培训,并且神经网络是活跃研究的主题,所以我知道没有简单的“嵌入式”解决方案。
好的,确实没有针对此问题的简单“插入”。 我将尝试以一种简单的方式来说明神经网络方法,以为您解决一些问题。 首先,您需要以更简单的方式表示图像! 这意味着,现在您的图像是48 * 60矩阵,并且是灰度级。 考虑采取以下措施:
现在,我们将对结果使用拳击方法。 将您的50 * 50图像分成例如8 * 8的网格部分。 计算每个部分中有多少像素,并将结果放入8 * 8矩阵名称C中。 现在您有一个8×8的矩阵C,它是原始图像的简单表示。 收集一些训练数据和测试数据,只需使用Matlab的神经网络模式识别应用程序(您确实需要了解ANN的工作方式才能使用此应用程序)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.