c# - 从图像中提取字符

标签 c# image-processing image-segmentation


我正在尝试从黑白图像中提取(无法识别!)字符,
所以如果图像是 123, 我得到一个包含 3 张图片的数组,

这是一个重复的问题,我知道,但我找不到我想要的,我也尝试查看 codeproject 但找不到一个工作示例

http://www.codeproject.com/Articles/143059/Neural-Network-for-Recognition-of-Handwritten-Digi
源代码不完整


非常感谢您的帮助:)

最佳答案

正如 Kenny 已经提到的,“连接组件标记”描述了一系列识别连接像素的算法。连接的组件也被称为“连接区域”或“ Blob ”,也被称为“轮廓”的相关概念。任何此类算法不仅应该能够找到连接的前景像素的形状,还应该能够找到由背景颜色像素组成的形状内部是否存在“孔”。

http://en.wikipedia.org/wiki/Connected-component_labeling

此算法用于多个依赖图像处理的工程领域,包括计算机视觉、机器视觉和医学成像。如果您打算在图像处理上花费任何时间,您应该非常熟悉这个算法并至少自己实现一次。

OpenCV 库有一个 findContours() 函数,可用于查找轮廓、轮廓内的轮廓等。
http://opencv.willowgarage.com/wiki/

如果您希望看到工作中的区域标记算法,请使用应用程序 ImageJ 查找对“细胞计数”的引用。生物细胞计数是医学成像区域标记的一个重要且经常被引用的应用。

http://rsbweb.nih.gov/ij/

考虑购买有关该主题的教科书,而不是零碎地在线学习。研究连接的组件(又名 Blob )不可避免地会导致考虑二值化(又名阈值),它采用灰度或彩色图像并从中生成黑白图像。如果您正在处理来自相机的图像,那么照明就变得至关重要,这需要时间和修修补补来学习。

清理图像可能需要许多其他预处理步骤。是否需要预处理取决于您的应用。

这是一本经常被推荐的教科书,它很好地涵盖了标准图像处理技术:

数字图像处理,Gonzalez 和 Woods,第 3 版 http://www.imageprocessingplace.com/

前往 addall.com 寻找便宜的副本。国际版更便宜。

如果图像中的字符(或其他形状)具有一致的大小和形状——例如,“A”始终为 40 像素高和 25 像素并且机器以相同的字体打印——那么你可能使用“归一化互相关”或模板匹配技术来识别一个或多个匹配形状的存在。这种技术可以用作一种非常粗糙的 OCR,但有严重的局限性。

http://en.wikipedia.org/wiki/Template_matching

关于c# - 从图像中提取字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9342305/

相关文章:

matlab - Watershed算法的过分割

c# - 从 strip "Could not load file or assembly ' System.Collections.Immutable' 获取响应时出错

c# - 为什么使用此 Linq to Sql 方法会出现 InvalidOperationException?

c# - Max(Threading.Interlocked.Increment(Offset), Offset - 1) 有什么意义?

algorithm - 图像的子图像查找和替换

c++ - 提取opencv中特定颜色的形状

c# - 发送第一个 block 后,C#.NET中的YouTube视频上传失败

python-2.7 - 如何检测透明容器中的水位?

image - 如何使用 OpenCV 减少图像中的颜色数量?

python - 基于颜色的图像分割