数字图像处理课程设计报告.docx

上传人:b****7 文档编号:9458096 上传时间:2023-02-04 格式:DOCX 页数:11 大小:287.39KB
下载 相关 举报
数字图像处理课程设计报告.docx_第1页
第1页 / 共11页
数字图像处理课程设计报告.docx_第2页
第2页 / 共11页
数字图像处理课程设计报告.docx_第3页
第3页 / 共11页
数字图像处理课程设计报告.docx_第4页
第4页 / 共11页
数字图像处理课程设计报告.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数字图像处理课程设计报告.docx

《数字图像处理课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理课程设计报告.docx(11页珍藏版)》请在冰豆网上搜索。

数字图像处理课程设计报告.docx

数字图像处理课程设计报告

数字图像处理

课程设计报告

 

姓名:

 宋东洋、祁飞、登科

学号:

、、

班级:

软件开发.NET3班

设计题目:

手写体数字识别

教师:

庞海波老师

提交日期:

2015年12月25日

 

一、设计容:

主题:

《手写体数字识别》

详细说明:

读入手写体数字图片,选择要识别的数字然后通过寻找数字边界将图像裁剪的边缘,然后生成裁剪后图像的二进制图像,并将其转换成5﹡7的图像,然后进行特征提取,运行Simulink模型识别数字。

二、现实意义:

手写体数字的识别有着非常广泛的应用(如:

邮政编码、统计报表、财务报表、银行票据等等)。

三、涉及知识容:

1、边界查找

2、二值化

3、Simulink模型

四、实例分析及截图效果:

(1)代码显示:

1、程序中定义图像变量说明

(1)S--------------------------------------------------------------原图变量;

(2)img_crop----------------------------------------------------选择的图象;

(3)imgGray-----------------------------------------------------灰度图像变量

(4)BW-----------------------------------------------------------二值化图像;

(5)charvec-----------------------------------------------------5*7图像变量;

2、实现代码:

Index.m

functionvarargout=charGUI(varargin)

%Begininitializationcode-DONOTEDIT

gui_Singleton=1;

gui_State=struct('gui_Name',mfilename,...

'gui_Singleton',gui_Singleton,...

'gui_OpeningFcn',charGUI_OpeningFcn,...

'gui_OutputFcn',charGUI_OutputFcn,...

'gui_LayoutFcn',[],...

'gui_Callback',[]);

ifnargin&&ischar(varargin{1})

gui_State.gui_Callback=str2func(varargin{1});

end

ifnargout

[varargout{1:

nargout}]=gui_mainfcn(gui_State,varargin{:

});

else

gui_mainfcn(gui_State,varargin{:

});

end

%Endinitializationcode-DONOTEDIT

%---ExecutesjustbeforecharGUIismadevisible.

functioncharGUI_OpeningFcn(hObject,eventdata,handles,varargin)

loaddata;

assignin('base','net',net);

handles.output=hObject;

guidata(hObject,handles);

%---Outputsfromthisfunctionarereturnedtothecommandline.

functionvarargout=charGUI_OutputFcn(hObject,eventdata,handles)

varargout{1}=handles.output;

%---ExecutesonbuttonpressinpbLoad.

functionpbLoad_Callback(hObject,eventdata,handles)

[filename,pathname]=uigetfile({'*.bmp';'*.jpg';'*.gif';'*.*'},'PickanImageFile');

S=imread([pathname,filename]);

axes(handles.axes1);

imshow(S);

handles.S=S;

guidata(hObject,handles);

%---ExecutesonbuttonpressinpbSelect.

functionpbSelect_Callback(hObject,eventdata,handles)

S=handles.S;

axes(handles.axes1);

img_crop=imcrop(S);

axes(handles.axes2);

imshow(img_crop);

handles.img_crop=img_crop;

guidata(hObject,handles);

%---ExecutesonbuttonpressinpbPreprocess.

functionpbPreprocess_Callback(hObject,eventdata,handles)

img_crop=handles.img_crop;

imgGray=rgb2gray(img_crop);

bw=im2bw(img_crop,graythresh(imgGray));

axes(handles.axes3);

imshow(bw);

bw2=edu_imgcrop(bw);

axes(handles.axes4);

imshow(bw2);

handles.bw2=bw2;

guidata(hObject,handles);

%---ExecutesonbuttonpressinpbExtract.

functionpbExtract_Callback(hObject,eventdata,handles)

bw2=handles.bw2;

charvec=edu_imgresize(bw2);

axes(handles.axes5);

plotchar(charvec);

handles.charvec=charvec;

guidata(hObject,handles);

%---ExecutesonbuttonpressinpbRecognize.

functionpbRecognize_Callback(hObject,eventdata,handles)

charvec=handles.charvec;

selected_net=get(handles.editNN,'string');

selected_net=evalin('base',selected_net);

result=sim(selected_net,charvec);

[val,num]=max(result);

set(handles.editResult,'string',mod(num,10));

%---ExecutesonbuttonpressinpbNN.

functionpbNN_Callback(hObject,eventdata,handles)

functioneditNN_Callback(hObject,eventdata,handles)

%---Executesduringobjectcreation,aftersettingallproperties.

functioneditNN_CreateFcn(hObject,eventdata,handles)

ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

functioneditResult_Callback(hObject,eventdata,handles)

%---Executesduringobjectcreation,aftersettingallproperties.

functioneditResult_CreateFcn(hObject,eventdata,handles)

ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

 

edu_imgcrop.m

functionbw2=edu_imgcrop(bw)

%求图像的边界

[y2tempx2temp]=size(bw);

x1=1;

y1=1;

x2=x2temp;

y2=y2temp;

%寻找左侧空白空间

cntB=1;

while(sum(bw(:

cntB))==y2temp)

x1=x1+1;

tB=cntB+1;

end

%寻找右侧空白空间

cntB=1;

while(sum(bw(cntB,:

))==x2temp)

y1=y1+1;

tB=cntB+1;

end

%寻找上边空白空间

cntB=x2temp;

while(sum(bw(:

cntB))==y2temp)

x2=x2-1;

tB=cntB-1;

end

%寻找下边空白空间

cntB=y2temp;

while(sum(bw(cntB,:

))==x2temp)

y2=y2-1;

tB=cntB-1;

end

%将图像裁剪到边缘

bw2=imcrop(bw,[x1,y1,(x2-x1),(y2-y1)]);

 

edu_imgresize.m

functionlett=edu_imgresize(bw2)

%此功能将采取裁剪的二进制图像,并将其改为5×7

%单个向量中的特征表示。

bw_7050=imresize(bw2,[70,50]);

fort=1:

7

fort2=1:

5

Atemp=sum(bw_7050((cnt*10-9:

cnt*10),(cnt2*10-9:

cnt2*10)));

lett((cnt-1)*5+cnt2)=sum(Atemp);

end

end

lett=((100-lett)/100);

lett=lett';

3、运行效果截图:

第一步:

读取原图,并显示

 

第二步:

选择图像并显示

 

 

第三步:

预处理(二值化、查找边界、裁剪图片)

 

第四步:

特征提取

 

第五步:

显示数字(运行Simulink模型)

四、算法分析

(1)Simulink模型

sim函数用来运行Simulink模型。

需要注意的是,用户无法控制其仿真过程(例如暂停、继续),一旦运行就会直到达到结束条件为止——这一点和通过模型窗口界面运行仿真不同。

五、心得体会

通过这次的课程设计,我对Matlab有了一定的了解,刚开始做的时候有点不知所措,主要是因为平时不够努力,书上的知识了解得不够多,课下没有及时地复习。

这次作业我和组员商量后选择了手写体数字识别,做作业之前上网查了很多资料,通过网络了解了一些关于数字识别方面的知识,通过课本也了解了一些,经过不断地努力我和我的组员一起完成了这次作业。

虽然作业完成了,但也有一些缺陷,由于时间比较紧迫,所以希望以后有时间能自己再完善一下。

我相信只要能坚持到底就能成功。

六、程序资料清单和源代码

电子档打包发送到FTP。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1