数字图像处理大作业基于BP神经网的手写数字识别

上传人:简****9 文档编号:110826079 上传时间:2019-10-31 格式:DOC 页数:7 大小:902.40KB
返回 下载 相关 举报
数字图像处理大作业基于BP神经网的手写数字识别_第1页
第1页 / 共7页
数字图像处理大作业基于BP神经网的手写数字识别_第2页
第2页 / 共7页
数字图像处理大作业基于BP神经网的手写数字识别_第3页
第3页 / 共7页
数字图像处理大作业基于BP神经网的手写数字识别_第4页
第4页 / 共7页
数字图像处理大作业基于BP神经网的手写数字识别_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《数字图像处理大作业基于BP神经网的手写数字识别》由会员分享,可在线阅读,更多相关《数字图像处理大作业基于BP神经网的手写数字识别(7页珍藏版)》请在金锄头文库上搜索。

1、基于BP神经网的数字识别一 实验名称:基于BP神经网的数字识别二 实验目的:熟悉利用matlab进行数字图像处理的方法。三 实验原理BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hidden layer)

2、和输出层(output layer)。本设计使用BP神经网实现数字的识别。四 实验内容1. 用数码相机拍摄一些待识别的数字,或直接从网上下载数字的图片。2. 为了更利于计算机识别数字要先对数字的图像进行处理,将其转换成简单的二值图像。下面以利用QQ截图产生的图像为例说明。1) 将含有数字的原图像用QQ截图截成单个数字。如下图:用手机拍摄的照片截图后的单个数字的图片2) 转换图片格式(以上述qq截图为例)。clc,close all,clear allfor kk = 0:9 m=strcat(int2str(kk),.png); x=imread(m,png); x=mat2gray(x);

3、bw=im2bw(x,0.5); m=strcat(int2str(kk),.bmp) imwrite(bw,m,bmp); end 上述程序将(09).png转换为(09).bmp。执行结果会在matlab当前路径中产生相应文件。如下图所示:3. 编写程序实现数字的识别,具体实验代码如下所示:% 数字识别 % 生成输入向量和目标向量clear all;LOADING. for kk = 0:99 p1=ones(16,16); %建立全为1的样本矩阵 m=strcat(nums,int2str(kk),.bmp); x=imread(m,bmp); %循环读入0-99个样本数字文件 bw=i

4、m2bw(x,0.5); %对输入图像进行二值化处理 采用全局阈值0.5 i,j=find(bw=0); imin=min(i); imax=max(i); jmin=min(j); jmax=max(j); bw1=bw(imin:imax,jmin:jmax); %截取输入图像中的数字部分 rate=16/max(size(bw1); bw1=imresize(bw1,rate); %对输入文件变尺寸处理 i,j=size(bw1); i1=round(16-i)/2); j1=round(16-j)/2); p1(i1+1:i1+i,j1+1:j1+j)=bw1; %建立起16*16的矩

5、阵 p1=-1.*p1+ones(16,16); %反色处理 for m=0:15 p(m*16+1:(m+1)*16,kk+1)=p1(1:16,m+1); end %将处理的源样本输入供神经网络训练的样本 pcolum是样本数循环变量 switch kk case0,10,20,30,40,50,60,70,80,90 t(kk+1)=0; %数字0 case1,11,21,31,41,51,61,71,81,91 t(kk+1)=1; %数字1 case2,12,22,32,42,52,62,72,82,92 t(kk+1)=2; %数字2 case3,13,23,33,43,53,63

6、,73,83,93 t(kk+1)=3; %数字3 case4,14,24,34,44,54,64,74,84,94 t(kk+1)=4; %数字4 case5,15,25,35,45,55,65,75,85,95 t(kk+1)=5; %数字5 case6,16,26,36,46,56,66,76,86,96 t(kk+1)=6; %数字6 case7,17,27,37,47,57,67,77,87,97 t(kk+1)=7; %数字7 case8,18,28,38,48,58,68,78,88,98 t(kk+1)=8; %数字8 case9,19,29,39,49,59,69,79,89

7、,99 t(kk+1)=9; %数字9 endend %建立与训练样本对应的输出值t LOAD OK. save E52PT p t;% 创建和训练BP网络 clear all;load E52PT p t; %加载样本 pr(1:256,1)=0;pr(1:256,2)=1;%创建BP网络 net=newff(pr,25 1,logsig purelin, traingdx, learngdm); net.trainParam.epochs=2500; %设置训练步数 net.trainParam.goal=0.001; %设置训练目标 net.trainParam.show=10; %设置

8、训练显示格数 net.trainParam.lr=0.05; %设置训练学习率 net=train(net,p,t); %训练BP网络 TRAIN OK. save E52net net; % 识别for times=0:9 clear all; p(1:256,1)=1; p1=ones(16,16); load E52net net; test=input(FileName:, s); x=imread(test,bmp); bw=im2bw(x,0.5); i,j=find(bw=0); imin=min(i); imax=max(i); jmin=min(j); jmax=max(j)

9、; bw1=bw(imin:imax,jmin:jmax); rate=16/max(size(bw1); bw1=imresize(bw1,rate); i,j=size(bw1); i1=round(16-i)/2); j1=round(16-j)/2); p1(i1+1:i1+i,j1+1:j1+j)=bw1; p1=-1.*p1+ones(16,16); for m=0:15 p(m*16+1:(m+1)*16,1)=p1(1:16,m+1); end a,Pf,Af=sim(net,p); %测试网络 imshow(p1); a=round(a) %输出网络识别结果 end4. 运行程序:主窗口会出现如下内容:在FileName:后面输入要识别的数字的图像的存储路径,系统就会显示该数字并打开该数字对应的图片。如: 五 实验结论实验能够准确识别已经被神经网处理后的图片,但对于手写的数字要实现较高的识别率还是比较困难的,因为人每次写的数字都不完全相同,即使要正确的识别一个人的自己也是困难的。但对于一些特殊场合,数字是打印的,且只有一种格式,如图书馆数的索书号、汽车牌照等,可以方便实现数字识别。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号