OpenCV实现0到9数字识别OCR

使用OpenCV对0到9数字进行识别,实现简单OCR功能,基于CA(轮廓)分析实现特征提取,基于L1距离计算匹配实现数字识别。在排除干扰的基础上,识别精度可以达到98%以上。整个算法分为两个部分,第一部分是特征提取,提取的特征实现了尺度不变性与轻微光照与变形干扰排除,第二部分基于特征数据进行匹配实现了相似性比较,最终识别0到9十个数字。

第一部分详解:

算法的第一部分主要是实现以下功能,提取42个特征向量,用其中40个向量做匹配识别,另外两个向量做辅助检查。比如0跟1的横纵比有明显差别。特征提取的主要步骤如下:

1. 图像去噪声与二值化 2. 轮廓发现与ROI区域分割 3. 水平与垂直投影,提取20个向量,并归一化 4. 网格分割5x4,提取20个向量,并归一化 5. 宽高比与空白比,总计42个向量提取完成

预处理通过高斯模糊去噪声,然后通过全局阈值实现图像二值化,使用轮廓发现提取ROI矩形区域,对每个区域完成3~5步,实现特征提取,其中水平与垂直投影演示如下:

对ROI区域的水平与垂直投影分别分成10个BIN,考虑到浮点数划分,每个BIN长度不一定是整数,这样就通过权重进行按比例分割像素点。完成每个BIN的前景像素点统计。

同样对数字ROI区域实现5x4的网格分割,每个Cell计算前景像素个数,也会借助权重比例进行分割,最终得到归一化之后的20个特征向量。

这样得到的40个特征向量具有放缩不变性与轻微抗干扰变形能力。

第二部分详解:

运行截图:

训练数据:

输入数据:

识别结果:

观察结论

训练数据和识别数据在字体、大小上均有差异,然而根据提取的特征进行匹配,均可识别,充分证明了本识别算法的尺度不变性与局部抗干扰能力。

执行代码

int main(int argc, char** argv) {
    Mat src = imread("D:/vcprojects/images/td1.png");
    if (src.empty()) {
        printf("could not load image...\n");
        return -1;
    }
    namedWindow("input image", CV_WINDOW_AUTOSIZE);
    imshow("input image", src);

    // 训练
    train_data();

    // 测试
    test_data();

    waitKey(0);
    return 0;
}

原文发布于微信公众号 - OpenCV学堂(CVSCHOOL)

原文发表时间:2018-06-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能算法

长文干货!走近人脸检测:从 VJ 到深度学习(上)

本文分上下两篇,上篇主要介绍人脸检测的基本流程,以及传统的VJ人脸检测器及其改进,下篇介绍基于深度网络的检测器,以及对目前人脸检测技术发展的思考与讨论。为了节省...

3576
来自专栏鸿的学习笔记

精确控制数据模型误差(下)

有各种各样的方法试图衡量候选模型和真实模型之间有多少信息丢失的模型误差。当然,真正的模型(实际用于生成数据)是未知的,但是给定某些假设,我们仍然可以获得它与我们...

721
来自专栏向治洪

深度神经网络中的对抗样本与学习

概述 最近 大半年,人工智能领域成为科技领域提到的最多的名词之一。在kdnuggets此前发布的文章(Deep Learning’s Deep Flaws)’s...

3457
来自专栏AI研习社

深度神经网络中的对抗样本与学习

概述 最近大半年,人工智能领域成为科技领域提到的最多的名词之一。在kdnuggets此前发布的文章 (Deep Learning’s Deep Flaws)...

38112
来自专栏机器学习算法与Python学习

机器学习(3) -- 贝叶斯及正则化

Content 3. Bayesian statistics and Regularization.     3.1 Underfitting and ov...

3269
来自专栏机器之心

学界 | Tomaso Poggio深度学习理论:深度网络「过拟合缺失」的本质

过去几年来,深度学习在许多机器学习应用领域都取得了极大的成功。然而,我们对深度学习的理论理解以及开发原理的改进能力上都有所落后。如今对深度学习令人满意的理论描述...

1212
来自专栏AI科技评论

人脸检测发展:从VJ到深度学习(上)

本文分上下两篇,上篇主要介绍人脸检测的基本流程,以及传统的VJ人脸检测器及其改进,下篇介绍基于深度网络的检测器,以及对目前人脸检测技术发展的思考与讨论。为了让本...

3617
来自专栏SIGAI学习与实践平台

理解过拟合

在进行有监督的机器学习建模时,一般假设数据独立同分布(i.i.d,independently and identically distributed)。即样本数...

1121
来自专栏量化投资与机器学习

特征重要性在量化投资中的深度应用【系列56】

4114
来自专栏SIGAI学习与实践平台

理解过拟合

小明是个机器学习爱好者,他很喜欢吃蛋糕。有一天他突然想到:能不能用蛋糕的直径来预测蛋糕的价格。于是他定了各种不同尺寸的蛋糕,然后把尺寸和价格的数据记录起来,接着...

1996

扫码关注云+社区

领取腾讯云代金券