首页 > 编程知识 正文

手写数字识别项目介绍,手写数字识别系统

时间:2023-05-06 16:22:14 阅读:25604 作者:1673

PS :是很久以前的博客了。 又在整理百度云的时候,翻到了前面的代码。 贴在这里。 代码

手写数字识别作为模式识别领域的重要问题之一,也具有重要的理论价值,在大数据时代的背景下,其应用领域非常广泛。 许多学者对数字识别提出了不同的算法,取得了很好的测试效果,但目前OCR领域大部分还处于算法理论的研究阶段,还没有出现完善的应用体系。 一些科技企业开发的手写数字应用系统由于局限于书写环境和书写风格的要求,只能应用于特色应用场景,并没有得到很好的推广。

本场通过相机实时读取待处理的图像,经过灰度变换转换为灰度,经过图像的形态学膨胀和腐蚀进行初步处理,利用Sobels算子滤除噪声。 寻找轮廓后设定阈值分类图像,综合数字特征,通过训练的KNN分类模型识别数字。 提供自我训练的API,按执行命令,可以识别该场景中的识别图像。 必须手动输入图像的标签。 测试结果显示,6~8组可以准确识别不同条件的训练数据。

图1 :场景1的流程图

(一)图像预处理)形态学膨胀蚀刻) :

对图像进行形态学腐蚀膨胀常用作图像的预处理。 主要功能包括:

去噪

“隔离”(isolate )独立图像元素并连接图像中的相邻元素。

查找图像中明显的极大值区域或极小值区域

求出图像梯度

在方案设计中,首先进行图像的腐蚀膨胀,使后面的边缘检测变得容易。 效果如下。

图2 :预处理——腐蚀膨胀

(二) Sobel算子边缘检测:

Sobel算法是像素图像边缘检测中最重要的算子之一,在机器学习、数字媒体、计算机视觉等信息技术领域起着重要的作用。 技术上,是离散的1次差分算子,计算图像的亮度函数的1个阶段的近似值。 在图像的任意点上使用此运算符将生成与该点对应的梯度向量或其法线向量。 Sobel运算符是离散的一阶导数运算符,用于计算图像灰度函数的近似梯度。 算子将两个3*3的矩阵与原始图像进行卷积,分别得到横向和纵向的梯度值。 如果坡度值大于设定的阈值,则认为检测到了边缘点。

图3:Sobel操作符使用的矩阵

对对方写了数字的图像使用Sobel算子进行边缘检测,综合其横向纵向的检测结果,如下。

图4 :边缘检测

(三)数字抽取分割和KNN识别:

将识别出的数字串分割成各个数字进行包围,转换为特征矩阵作为对KNN分类器的输入,在训练过的KNN模型中识别数字标签,并填写在手写数字旁边。 图:

图5 :数字提取和识别结果

(四) API手动培训:

如果由于某些原因发生识别错误,程序将设置为按u键手动更新培训,如图所示。

图6 :手动培训示例

画面上会显示识别出的数字图像。 手动输入标签,然后按enter键更新。 更新两组后可以稳定识别。

图7 :强化训练后识别结果

视频演示截图:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。