阅读 15

【图像识别】基于支持向量机SVM实现汉字识别matlab源码

前言

汉字历史悠久,流传四海,是我们书面交流的绝对主体。自蔡
伦改进纸张以来,两千年的时间里,汉字最重要的载体是纤维纸。
毫无疑问,较之前的龟甲竹简而言,纸张更便宜,更轻便,更适合
传播。纤维纸结合印刷术,构成了知识文化传播的主要方式。
然而步入新世纪后,我们有了电脑,有了电子书,有了电子
笔,最重要的,我们有了发达的互联网。技术革命正在快速蚕食纸
张原有的优势地位,纤维纸竟有了淘汰的可能。
但是,至少到目前为止,传统方式下的书籍仍然承载着巨大的
信息流量,纸张对于我们依旧不可或缺,这便需要有能够把信息在
两者间流转的方法。
我们组本次设计的内容便是在探讨一种传统书籍内容转移到电
子文档的方法——汉字识别

1 实验目标和实验方法

1.实验目标:通过设计,能够有效地识别出图片中的汉字。
2.实验平台:MATLAB

2 实验原理(具体原理略)

2.1 图像二值化

2.2 开操作

2.3 图像分割

2.4 贝叶斯公式法分类器

3 实验方案(总体流程图、具体步骤等)

1.1 算法一流程图

1.1.1 创建字库

在这里插入图片描述

1.1.2 识别汉字

在这里插入图片描述

1.1.3 提取字库特征向量

在这里插入图片描述

1.2 算法一步骤

①选择一段写在纸张上的文字,拍照截图
②把带有汉字的图像处理成标准格式。最好的结果是只留有汉字部分而切除其余空白,并清 理斑点修补线条。
③为了每次单独识别一个汉字,将每个汉字都分离切割出来,成为一个待处理的方块图像组
④对比汉字库与一个个分离出的汉字方块图像,找到最相似的结果(汉字库同样是分离出的 汉字方块图像。在实验前预先输入标准汉字图像,并输入每一个汉字图像代表汉字,的程序 会自动分割出一个个汉字方块图像,并按顺序存放于库文件夹中。 )
⑤输出对比出的最相似结果,并附上原图像

1.3 算法二流程图

1.3.1 提取字库特征向量

在这里插入图片描述

1.3.2 识别汉字

在这里插入图片描述

1.4 算法二步骤

(1) 将一个手写的字(假设这个字为“数”)的大方块切割为 10*10 个小方块。每一个 小方块都包含了一个字的一部分信息。
开始
输入带汉字的 图像
预处理阶段 (修补线段、 去除噪点)
切割字块
特征提取
贝叶斯分类器 进行比较
输出结果
结束
12 / 34

(2) 每一部分的小方块里的黑像素与白像素的数量之比为小方块所蕴含的信息; (3) 设立一个阈值 K。如果一个小方块内,黑像素的数量大于 K,则令小方块状态为 1, 表示有笔画经过;否则为 0,表示没有笔画经过; (4) 现在,我们得到了一个字的 100 个小方块的状态值,将状态值存入一个数组 shu[i],0<=i<=100; (5) 设立数据库。将足够多的训练用字(全是“数”)的图片进行(1)~(4)的处理步 骤,于是,我们改造之前的数组,得到一个新二维数组 shu[j][i]作为数据库,j 为训练 图片序号; (6) 利用数据库,我们可以统计出“数”字的笔画经过某一个小方块的概率,并记录下 来; (7) 我们又通过重复(1)~(6)的步骤,将其他的汉字(非“数”)也求出概率来; (8) 到此,我们建立了一个的数据库,这个数据库里包含了不同汉字的笔画经过不同位 置的概率,将其作为特征向量,如果想给汉字增加特征向量,重复以上步骤即可。 (9) 输入汉字 X 试图识别。重复(1)~(4),得到一个数组。这个数组内包含有 X 的 笔画信息供以比对,作为特征向量; (10) 接下来,进行笔画信息比对。利用贝叶斯分析,计算出在这种笔画信息下是某一种 字的可能性; (11) 利用贝叶斯分类器将数据库中特征向量比对一遍,找出最有可能的字即为结果。

clc,clear,close
for i=1:5
    imp=imread(['.\字库',num2str(i),'.jpg']);
    create_database(imp,i);
end
load templet pattern;
aa=imread('example_1.png');
[word cnum]=get_picture(aa);
%cc=imresize(aa,[120 90]);
for i=1:cnum
    class=bayesBinaryTest(word{i});
    Code(i)=pattern(class).name;
end
 
figure(3);
imshow(aa);
tt=title(['识别文字: ', Code(1:cnum)],'Color','b'); 
复制代码

文章分类
代码人生
文章标签