数字图像处理课程设计报告文档格式.docx
《数字图像处理课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理课程设计报告文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
二、现实意义:
手写体数字的识别有着非常广泛的应用(如:
邮政编码、统计报表、财务报表、银行票据等等)。
三、涉及知识容:
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{:
%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;
%---ExecutesonbuttonpressinpbSelect.
functionpbSelect_Callback(hObject,eventdata,handles)
S=handles.S;
img_crop=imcrop(S);
axes(handles.axes2);
imshow(img_crop);
handles.img_crop=img_crop;
%---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;
%---ExecutesonbuttonpressinpbExtract.
functionpbExtract_Callback(hObject,eventdata,handles)
bw2=handles.bw2;
charvec=edu_imgresize(bw2);
axes(handles.axes5);
plotchar(charvec);
handles.charvec=charvec;
%---ExecutesonbuttonpressinpbRecognize.
functionpbRecognize_Callback(hObject,eventdata,handles)
charvec=handles.charvec;
selected_net=get(handles.editNN,'
string'
selected_net=evalin('
selected_net);
result=sim(selected_net,charvec);
[val,num]=max(result);
set(handles.editResult,'
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,'
white'
functioneditResult_Callback(hObject,eventdata,handles)
functioneditResult_CreateFcn(hObject,eventdata,handles)
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;
%寻找右侧空白空间
while(sum(bw(cntB,:
))==x2temp)
y1=y1+1;
%寻找上边空白空间
cntB=x2temp;
x2=x2-1;
tB=cntB-1;
%寻找下边空白空间
cntB=y2temp;
y2=y2-1;
%将图像裁剪到边缘
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:
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
lett=((100-lett)/100);
lett=lett'
3、运行效果截图:
第一步:
读取原图,并显示
第二步:
选择图像并显示
第三步:
预处理(二值化、查找边界、裁剪图片)
第四步:
特征提取
第五步:
显示数字(运行Simulink模型)
四、算法分析
(1)Simulink模型
sim函数用来运行Simulink模型。
需要注意的是,用户无法控制其仿真过程(例如暂停、继续),一旦运行就会直到达到结束条件为止——这一点和通过模型窗口界面运行仿真不同。
五、心得体会
通过这次的课程设计,我对Matlab有了一定的了解,刚开始做的时候有点不知所措,主要是因为平时不够努力,书上的知识了解得不够多,课下没有及时地复习。
这次作业我和组员商量后选择了手写体数字识别,做作业之前上网查了很多资料,通过网络了解了一些关于数字识别方面的知识,通过课本也了解了一些,经过不断地努力我和我的组员一起完成了这次作业。
虽然作业完成了,但也有一些缺陷,由于时间比较紧迫,所以希望以后有时间能自己再完善一下。
我相信只要能坚持到底就能成功。
六、程序资料清单和源代码
电子档打包发送到FTP。