人类文明的发展离不开信息的传递。文字一直是人们传递信息的一个重要媒介,承载着记录人类文明的重要使命。随着科技的发展,积累的文字信息日益增多,有效的存储和利用这些文字信息成为一个亟待解决的问题。光学字符识别的出现为这一问题提供了解决方法。手写体数字识别是光学字符识别的重要分支,因其在金融、邮政、医疗、交通、教育等领域中广泛的应用而日益被重视。目前,已有多种手写体数字识别算法,但都很难满足手写体数字识别应用时对识别率近乎百分之百的要求,所以,几乎没有能够实际应用的识别算法。 本文针对手写体数字识别对正确识别率及识别精度要求高的问题,在图像模式识别的理论基础上提出了一种基于数字字符几何轮廓特征的模板匹配改进算法,并利用该识别算法实现了针对医院信息统计表和医院处方笺的手写体字符识别信息录入系统。具体工作内容如下: (1)提出基于模板匹配的手写体字符识别算法。该算法考虑数字字符笔画简单的特点,以字符的质心为参考中心,利用字符的整体几何轮廓特征作为分类的依据,提取距离向量作为特征,使用改进的模板匹配算法设计分类器来进行字符识别。引入缩放因子和变异系数进行分类判别,增加了分类的准确性和可靠性。在样本库的设计上有所改进,采用多种标准字体书写的数字字符作为模板,减小了样本库的规模。 (2)利用matlab编程软件实现了手写体字符识别信息录入系统。在系统中设计了针对医院信息统计表和校医院处方笺中手写体字符的定位提取算法、多字符分割算法,可自动完成字符的提取、识别、结果输出和自动存储等多种功能。 (3)采集不同人群的手写体字符作为样本对算法进行验证。实验结果表明,本文提出的算法获得了较高的识别率,识别速度快,具有一定的抗噪能力,对待测字符的大小和位置的具有良好的鲁棒性,且具有较高的可行性和有效性,在本文所设计的信息录入系统中应用良好。
function varargout = daunxujian1(varargin)
% DAUNXUJIAN1 MATLAB code for daunxujian1.fig
% DAUNXUJIAN1, by itself, creates a new DAUNXUJIAN1 or raises the existing
% singleton*.
%
% H = DAUNXUJIAN1 returns the handle to a new DAUNXUJIAN1 or the handle to
% the existing singleton*.
%
% DAUNXUJIAN1('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in DAUNXUJIAN1.M with the given input arguments.
%
% DAUNXUJIAN1('Property','Value',...) creates a new DAUNXUJIAN1 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before daunxujian1_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to daunxujian1_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help daunxujian1
% Last Modified by GUIDE v2.5 23-Oct-2020 21:52:34
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @daunxujian1_OpeningFcn, ...
'gui_OutputFcn', @daunxujian1_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{
1})
gui_State.gui_Callback = str2func(varargin{
1});
end
if nargout
[varargout{
1:nargout}] = gui_mainfcn(gui_State, varargin{
:});
else
gui_mainfcn(gui_State, varargin{
:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before daunxujian1 is made visible.
function daunxujian1_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to daunxujian1 (see VARARGIN)
% Choose default command line output for daunxujian1
handles.output = hObject;
handles.Result = [];
handles.File = [];
% Update handles structure
guidata(hObject, handles);
clc; warning off all;
InitAxes(handles);
% UIWAIT makes daunxujian1 wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = daunxujian1_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{
1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename, pathname] = uigetfile({
'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' },'载入图像',...
fullfile(pwd, 'images'));
I = imread(fullfile(pathname, filename));
Result = Process_Main(I);
handles.File = fullfile(pathname, filename);
handles.Result = Result;
guidata(hObject, handles);
InitAxes(handles)
axes(handles.axes1); imshow(handles.Result.Image); title('原图像');
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)
axes(handles.axes1); imshow(handles.Result.Image); title('原图像');
axes(handles.axes2); imshow(handles.Result.Medfilt); title('中值滤波图像');
end
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)
axes(handles.axes1); imshow(handles.Result.Image); title('原图像');
axes(handles.axes2); imshow(handles.Result.Medfilt); title('中值滤波图像');
axes(handles.axes3); imshow(handles.Result.Normalize); title('归一化图像');
end
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)
axes(handles.axes1); imshow(handles.Result.Image); title('原图像');
axes(handles.axes2); imshow(handles.Result.Medfilt); title('中值滤波图像');
axes(handles.axes3); imshow(handles.Result.Normalize); title('归一化图像');
axes(handles.axes4); imshow(handles.Result.Bww); title('二值化图像');
end
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)
axes(handles.axes1); imshow(handles.Result.Image); title('原图像');
axes(handles.axes2); imshow(handles.Result.Medfilt); title('中值滤波图像');
axes(handles.axes3); imshow(handles.Result.Normalize); title('归一化图像');
axes(handles.axes4); imshow(handles.Result.Bww); title('二值化图像');
axes(handles.axes6); imshow(handles.Result.Thin); title('细化处理');
axes(handles.axes5); imshow(handles.Result.Bw); title('特征提取');
hold on;
h = [];
for i = 1 : length(handles.Result.hs) %绘制水平线
h = [h plot([1 handles.Result.sz(2)], [handles.Result.hs(i) handles.Result.hs(i)], 'r-')];
end
for i = 1 : length(handles.Result.vs)%绘制竖直线
h = [h plot([handles.Result.vs(i) handles.Result.vs(i)], [1 handles.Result.sz(1)], 'g-')];
end
h = [h plot(handles.Result.x1, handles.Result.y1, 'y-')];%绘制左对角线
h = [h plot(handles.Result.x2, handles.Result.y2, 'm-')];%绘制右对角线
end
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename, pathname] = uiputfile({
'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' },'Save Image',...
fullfile(pwd, 'Result/result.png'));
if ~isequal(filename, 0)
imwrite(handles.Result.label, fullfile(pathname, filename));
msgbox('保存图像成功!', '信息提示框');
end
% --- Executes on button press in pushbutton9.
function pushbutton9_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
choice = questdlg('确定退出?', ...
'退出', ...
'是','否','否');
switch choice
case '是'
close;
otherwise
return;
end
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.edit1,'string',handles.Result.label);
% --- Executes on button press in pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if ~isempty(handles.Result)
axes(handles.axes1); imshow(handles.Result.Image); title('原图像');
axes(handles.axes2); imshow(handles.Result.Medfilt); title('中值滤波图像');
axes(handles.axes3); imshow(handles.Result.Normalize); title('归一化图像');
axes(handles.axes4); imshow(handles.Result.Bww); title('二值化图像');
axes(handles.axes6); imshow(handles.Result.Thin); title('细化处理');
end
完整代码或者代写添加QQ2449341593
往期回顾>>>>>>
【图像识别】基于matlab路面裂缝识别含GUI【含Matlab源码 009期】
【图像识别】基于matlab身份证号码识别【含Matlab源码 014期】
【图像压缩】基于matlab图像处理教程系列之图像压缩【含Matlab源码 024期】
【图像分割】基于matlab图像处理教程系列之图像分割(一)【含Matlab源码 025期】
【图像分割】基于matlab图像处理教程系列之图像分割(二)【含Matlab源码 026期】
【模式识别】基于matlab指纹识别【含Matlab源码 029期】
【模式识别】基于matlab银行卡号识别【含Matlab源码 030期】
【图像聚类】基于matlab FCM和改进的FCM脑部CT图像聚类【含Matlab源码 074期】
【图像评价】基于matlab CCF算法的图像质量评价【含Matlab源码 075期】
【图像增强】基于matlab局部对比度增强的CLAHE算法之直方图增强【含Matlab源码 076期】
【图像融合】基于matlab Frequency Partition之图像融合【含Matlab源码 077期】
【图像评价】基于matlab SVM之图像无参考质量评价【含Matlab源码 078期】
【图像处理】基于matlab DWT+DCT+PBFO改进图像水印隐藏提取含GUI【含Matlab源码 081期】
【图像变换】基于matalb DIBR-3D图像变换【含Matalb源码 082期】
【图像融合】基于matlab CBF算法的图像融合【含Matlab源码 083期】
【图像分割】基于matlab模糊聚类算法FCM的图像分割【含Matlab源码 084期】
【图像分割】基于形态学重建和过滤改进FCM算法(FRFCM)的的图像分割【Matlab 085期】
【图像去噪】基于matlab自适应形态学的图像去噪【含Matlab源码 086期】
【图像增强】基于matlab DEHAZENET和HWD的水下去散射图像增强【含Matlab 087期】
【图像增强】基于matlab PSO寻优ACE的图像增强【含Matlab源码 088期】
【图像增强】基于matlab区域相似变换函数和蜻蜓算法之灰度图像增强【含Matlab源码 089期】
【图像重建】基于matlab图像重建之ASTRA算法【含Matlab源码 090期】
【图像分割】基于matlab四叉树图像分割【含Matlab源码 091期】
【图像分割】基于matlab心脏中心线提取【含Matlab源码 092期】
【图像识别】基于matlab svm植物叶子疾病检测和分类【含Matlab源码 093期】