自-基于MATLAB的图像处理字母识别-_第1页
自-基于MATLAB的图像处理字母识别-_第2页
自-基于MATLAB的图像处理字母识别-_第3页
自-基于MATLAB的图像处理字母识别-_第4页
自-基于MATLAB的图像处理字母识别-_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字图像处理报告名称:字母识别学院:ﻩ 信息工程与自动化学院专业:ﻩ 物联网工程学号: 2学生姓名:ﻩ 廖成武指导教师:ﻩﻩ王剑日期: ﻩ2015年12月28日 教务处制目录字母识别---------------------测试图像预处理及连通区域提取---------------------样本库的建立采集feature---------------------选择算法输入测试图像进行测试---------------------总结字母识别1.imgPreProcess(联通区域提取)目录下conn.m:连通区域提取分割(在原图的基础上进行了膨胀、腐蚀、膨胀的操作使截取的图像更加接近字母)%%提取数字的边界,生成新的图clear;clc;f=imread('5.jpg');f=imadjust(f,[01],[10]);SE=strel('square',5);%%膨胀、腐蚀、膨胀A2=imdilate(f,SE);SE=strel('disk',3)f=imerode(A2,SE)SE=strel('square',3);f=imdilate(f,SE);gray_level=graythresh(f);f=im2bw(f,gray_level);[l,n]=bwlabel(f,8)%%8连接的连接分量标注imshow(f)holdonfork=1:n%%分割字符子句[r,c]=find(l==k);rbar=mean(r);cbar=mean(c);plot(cbar,rbar,'Marker','o','MarkerEdgeColor','g','MarkerFaceColor','y','MarkerSize',10);%plot(cbar,rbar,'Marker','*','MarkerEdgecolor','w');row=max(r)-min(r)col=max(c)-min(c)fori=1:rowforj=1:colseg(i,j)=1;endendcon=[r-min(r)+1,c-min(c)+1];[a,b]=size(con);fori=1:aseg(con(i,1),con(i,2))=0;endimwrite(seg,strcat('seg',int2str(k),'.bmp'));%seg=zeros(size(seg));clearseg;end截取后的图像digitalRec目录下进行样本库的的建立并采集feature在对截取出来的图像进行识别之前要先输入样本并提取特征进入templet.mat:我自己通过WORLD打出字母后截屏下来获得字母样本并各自命名.jpg放入digitalRec目录下用以建立样本库获取特征。对每个字母都进行下面代码的的执行得到新的1x14的pattern得到各个字母(前9个为数字1~9)每个cell内的feature信息,因为样本有限在此每个字母只提取一次feature。运行digRec01.mclearall;clc;loadtemplet;%A被分成5*5=25个cell%注意A的size(长和宽都需被定义成5的倍数,因为后面要被5除)A=imread('a.jpg');A=imresize(A,[2525])%%将输入图像转化为25*25的尺寸figure(1),imshow(A)B=zeros(1,25);%%初始化一个B用于存放25个cell的feature[rowcol]=size(A);%%得到图像的长宽cellRow=row/5cellCol=col/5count=0;currentCell=1;forcurrentRow=0:4%%遍历25个cell获取featureforcurrentCol=0:4fori=1:cellRowforj=1:cellColif(A(currentRow*cellRow+i,currentCol*cellCol+j)==0)count=count+1;endendendratio=count/(cellRow*cellCol);B(1,currentCell)=ratio;%%将feature信息存入B中currentCell=currentCell+1;count=0;endendpattern(11).num=1;%%每个字母只有一个样本pattern(11).feature(:,1)=B';%%将B置入patternsavetempletpatternpattern、pattern.feature:3.digitalRec目录下进行图像测试在将截取下来的图像放入digitalRec目录下并改名为.bmp作为测试输入图像由于用到imshow([num2str(class),'.jpg']),测试后只得到“编号.jpg”所以根据样本库中的字母对应的数字编号新建图像命名为10~14.jpg,用以输出识别出的图像。选取基于最小距离的数字识别neartemplet.mfunctiony=neartemplet(sample);clc;loadtempletpattern;d=0;min=[inf,0];fori=1:14%%遍历14个样本进行feature的测试forj=1:pattern(i).numd=sqrt(sum((pattern(i).feature(:,j)-sample).^2));ifmin(1)>dmin(1)=d;min(2)=i;endminendendy=min(2);运行neartempletTest.m输入测试图像调用neartemplet函数先将测试图像调整为25*25的图像,然后同建立样本库一样的方法取得测试图像的25个cell的feature信息用于与样本库的feature作测试A=imread('a.bmp');%待测样本A=imresize(A,[2525])%%调整大小figure(1),subplot(121),imshow(A),title(['待识别的数:']);B=zeros(1,25);[rowcol]=size(A);%%获取测试图像特征cellRow=row/5cellCol=col/5count=0;currentCell=1;forcurrentRow=0:4forcurrentCol=0:4fori=1:cellRowforj=1:cellColif(A(currentRow*cellRow+i,currentCol*cellCol+j)==0)count=count+1;endendendratio=count/(cellRow*cellCol);B(1,currentCell)=ratio;currentCell=currentCell+1;count=0;endendclass=neartemplet(B');%%调用基于最小距离算法的测试函数得到class为测试结%%果对应样本库的编号subplot(122),imshow([num2str(class),'.jpg']),title(['该数字被识别为:']);%%num2str(class)将编号转化为字符串型分别输入测试图像得到测试结果:a、h、e能通过neartemplet识别出来r、t识别不出来bayesBinary.m算法可以识别r、ht这两种算都没有识别出来应该是样本库里每个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论