基于人工神经网络的MATLAB手写数字识别系统
基于人工智能的手写数字识别技术研究

基于人工智能的手写数字识别技术研究随着人工智能技术的发展,越来越多的应用场景开始采用AI技术来解决实际问题。
其中,手写数字识别技术是一个非常典型的例子。
手写数字识别技术指的是通过计算机程序,将手写数字转换成数字字符的过程。
这种技术在实际应用中有着广泛的应用,比如字符识别、自动填表、手写邮箱等。
手写数字识别技术的研究历程可以追溯到上个世纪。
最初的手写数字识别系统采用的是模板匹配的方法,即将数字转化为模板后再与输入的数字进行比较,但是这种方法对于写法稍有不同的数字无法进行准确匹配,难以应对实际应用中的多变的手写数字。
随着计算机性能的提升和深度学习技术的出现,手写数字识别技术得到极大的提升。
目前,基于深度学习的手写数字识别技术已经达到了非常高的准确率,甚至能够超过人类的识别水平。
基于深度学习的手写数字识别技术主要采用卷积神经网络(CNN)和循环神经网络(RNN)等模型来进行学习和识别。
其中,CNN被广泛应用于图像分类领域,可以提取图像中的局部特征并进行高效的特征提取和分类。
而RNN则主要用于序列数据的处理,具有较好的时序特征提取能力。
在进行深度学习模型训练时,需要大量的数据集来进行训练和验证。
手写数字识别技术的数据集有很多,比如著名的MNIST数据集、EMNIST数据集、NIST数据集等。
这些数据集包含了大量的手写数字图片和对应的数字标签,可以用于模型的训练和测试。
除了基于深度学习的手写数字识别技术,还有一些其他的方法也被应用到手写数字识别中。
比如基于传统机器学习算法的手写数字识别方法,比如支持向量机、随机森林、K近邻等,这些方法在一些特定的数据集上也能取得不错的效果。
总之,基于人工智能的手写数字识别技术是一个非常有前途的方向。
通过不断地研究和探索,我们相信将会有更多的优秀方法应用到手写数字识别领域,让这个领域能够更好地服务于人们的生活和工作。
基于matlab的手写体数字识别系统研究

第l 8 期 2 0 l 7 年9 月
无 线 互 联 科 技 W i r e 1 e s s
N 0 . 1 8
S e pt e mb e l ? ,2 0 1 7
基于ma t l a b 的手写体数字识别系统研究
丁禹鑫’ , 丁 会2 , 张红娟2 , 杨彤彤’
( 1 . 山东大学 ( 威海) , 山东 威海 2 6 4 2 0 0 ; 2 . 国家电网成 阳供电公 司, 陕西 成阳 7 1 2 0 0 0 )
神经网络构建 以及训练模块 、 神经 网络测试模块和正确 机器 学习是一 门多领域交叉学科, 专 门研究计算机 怎样 块 、 模拟或实现人类的学习行为, 以获取新 的知识或技能 , 重新 率计算模块 几个主要模 块来实现手写体 数字识别这一基本 接下来分模块对其原理进行叙述_ 4 _ 。 组织 已有 的知识结构, 使之不断改善自身的性能。 实现机器 功能 , 学习的方法多种多样, 常见到的主要有神经网络算法、 C NN 2 . 1图像读取 模块 卷积神经网络算法、 R NN 循环神经网络算法、 E M算法、 贝叶 图像读取模 块的功 能是对搜 集到的素材进行数字化的 斯算法、 聚类算法、 回归算法、 S VM等。 本文将利用B P 神经 处理, 读取到计算机 中的模块。 其中我们采取 { i mr e a d 函数 网络算法来完成手写体数字 的识别l l 】 。 将5 0 0 0 张手写体数字图片输入计算机 。 由于计算机 的图像
基于神经网络的手写数字识别算法设计与实现

基于神经网络的手写数字识别算法设计与实现手写数字识别是计算机视觉和人工智能领域的经典问题之一。
在过去的几十年中,神经网络被广泛应用于手写数字识别任务,并取得了显著的成果。
本文将介绍一种基于神经网络的手写数字识别算法的设计和实现。
一、介绍手写数字识别是指将手写的数字图像转化为计算机可识别的数字。
目前,神经网络是最常用的用于手写数字识别的算法之一。
神经网络可以通过训练样本学习并自动提取特征,从而实现对手写数字的识别。
二、算法设计1. 数据集准备手写数字识别算法的训练离不开一个具有标签的大型数据集。
常用的数据集包括MNIST和自定义的数据集。
在这里,我们选择使用MNIST数据集作为训练和测试数据。
2. 神经网络结构设计神经网络的结构是手写数字识别算法的核心。
传统的神经网络结构包括输入层、隐藏层和输出层。
其中,输入层的神经元数量为输入图像的像素数,输出层的神经元数量为0-9的10个数字。
隐藏层的数量和每一层的神经元数量可以根据实际需求进行设计。
3. 特征提取神经网络可以通过前向传播的过程自动地提取输入图像的特征。
这些特征可以帮助神经网络更好地理解和区分不同的手写数字。
4. 权重训练神经网络中的权重是连接不同神经元之间的参数。
通过反向传播算法,可以根据损失函数来优化权重参数。
训练的目标是使神经网络能够准确地预测输入图像的数字标签。
5. 模型评估在训练完成后,我们需要对模型进行评估。
常用的评估指标包括准确率、精确率、召回率和F1分数等。
这些指标可以帮助我们了解模型在不同情况下的性能。
三、算法实现手写数字识别算法的实现可以使用编程语言如Python、MATLAB 等。
以下是一种Python实现的伪代码:```pythonimport numpy as np# 神经网络结构设计input_size = 784hidden_size = 100output_size = 10# 权重初始化w1 = np.random.randn(input_size, hidden_size) w2 = np.random.randn(hidden_size, output_size) # 前向传播def forward(x):# 输入层到隐藏层z1 = np.dot(x, w1)h1 = sigmoid(z1)# 隐藏层到输出层z2 = np.dot(h1, w2)out = sigmoid(z2)return out# 反向传播def backward(x, out, y):# 计算损失函数的导数delta2 = (out - y) * sigmoid_derivative(out)# 更新权重w2 -= learning_rate * np.dot(h1.T, delta2)w1 -= learning_rate * np.dot(x.T, np.dot(delta2, w2.T) * sigmoid_derivative(h1))# 模型训练for epoch in range(num_epochs):for i, (x, y) in enumerate(train_data):# 前向传播out = forward(x)# 反向传播backward(x, out, y)# 模型评估correct = 0total = 0for x, y in test_data:out = forward(x)prediction = np.argmax(out)if prediction == y:correct += 1total += 1accuracy = correct / total```四、总结本文介绍了基于神经网络的手写数字识别算法的设计和实现。
基于Matlab的神经网络数字识别系统实现

写体 数 字 字符 有 所 限制 , 即 需要 有 一 定 的 工 整 度 。 通 过 对 真 实 图 片 的 处 理 , 本 系统 可对 印 刷 体 数 字 达 到 近 百 分之 百 的 识
别率 ,对较工 整的手 写体 数字 能到达近 百分之八 十 的识别 率。 关键 词:M t b al 编程 ;数字识别 ; 图像预处理 ;特征提取 a
摘
一
要:通过 M t b al 编程 能形 成一种 可 以识 别扫描 到 计算机 里的 图片上 的数字 的神经 网络 数字识 别 系统 ,此 系统 能达 到 a 定的识别精度 ,其 有别于一般 的数字识 别 系统 将印刷体和 手写体 字符分开 考虑 ,而是 将 两者 结合 在一起 考虑 ,并对手
D : 1 .9 9 Ji n1 71 5 62 1 .9 0 OI 3 6 / .s.6 —6 9 .0 1 . 1 0 s 0 1
l 系统实现思想 字符识别系 统一般分为预处理 、特征提取和 分类 器三
部 分 。 其 中 , 预 处 理 包 括 将 图 片 从 模 拟 图像 到 进 行 二 值 化 、 字 符 分 割 、 归一 化 等 过 程 ; 特 征 提 取 和 分 类 器 的 设 计 是 整 个 系 统 的核 心 部 分 。 通 过 对 各 个 部 分 分 别 进 行 编 程 处 理 来 实 现 ,将 每 部 分 编 为 可 调 用 的 函数 ,最 后 统 一 对 函 数 进 行 调 用 , 清 晰 方 便 。下 面 分 别 对 每 部 分 模 块 实现 进 行 介
一
9 c t* O ) : :n 2 l) )
l t ( c t 1 * + n 2 = u ( t m ) e t (n - ) 5 c t ) s m A e p ;
基于人工智能的手写文字识别与录入系统实现

基于人工智能的手写文字识别与录入系统实现随着科技的飞速发展,人工智能已经逐渐融入我们生活的各个方面。
其中,手写文字识别与录入系统作为一种新兴的技术,极大地提高了文字处理的效率和准确性。
本文将介绍基于人工智能的手写文字识别与录入系统的实现原理和应用场景。
首先,我们需要明确手写文字识别与录入系统的目标。
该系统的主要任务是将手写的文字转化为可编辑的电子文档,并且保持识别的准确性。
传统的手写文字识别方法通常依赖于特定的表达形式,例如字库和模板匹配。
然而,这种方法对于多样性的手写样式和笔画变化较大的汉字无法很好地适应。
所以,基于人工智能的手写文字识别与录入系统采用了深度学习算法和神经网络,能够更好地识别复杂的手写文字。
在实现过程中,我们需要收集大量的手写文字数据作为训练样本,以建立一个有效的模型。
可以通过要求用户进行手写字的输入,并记录其手写样式来获取训练数据。
同时,还可以借助于已有的手写文字数据集,进行数据预处理和清洗,以剔除一些无效的数据和噪声。
然后,使用深度学习算法,例如卷积神经网络(CNN)或循环神经网络(RNN)等,对数据进行训练,使得系统能够学习到不同手写字的特征,并进行识别。
经过训练,系统就可以对用户输入的手写文字进行识别了。
当用户输入手写文字时,系统会将输入的图像转化为数字化的矩阵,并输入到训练好的模型中。
模型将对输入的图像进行特征提取和识别。
然后,识别后的文字可以被系统进一步处理,例如自动转化为可编辑的电子文档或存储在数据库中。
通过这种方式,我们实现了手写文字的快速识别和录入。
基于人工智能的手写文字识别与录入系统具有广泛的应用场景。
首先,它可以被应用于教育领域,帮助学生更好地完成笔记和作业。
学生可以通过手写的方式输入文字,系统能够及时识别并转化为电子文档,方便存储和分享。
其次,该系统可以应用于金融领域,方便银行和保险公司对客户的手写签名和表单进行自动识别和录入,提高工作效率。
另外,该系统还可以应用于医学领域,帮助医生记录和输入病历,减少人为输入错误的发生。
基于神经网络的手写数字识别

基于神经网络的手写数字识别一、引言在人工智能领域中,图像识别一直是一个热门话题。
随着科技的不断发展,越来越多的方法被提出,其中基于神经网络的手写数字识别方法是一个十分有效的方法。
本文将从几个方面介绍基于神经网络的手写数字识别。
二、神经网络神经网络是一种类似于人脑运作方式的机器学习算法。
它是由许多神经元组成的层级结构,每个神经元都是一个小型的计算单元。
神经网络可以学习和处理数据,它具有自动学习和优化的能力,可以对输入数据进行分类、识别、预测和生成等任务,在图像识别、自然语言处理等方面取得很好的成效。
三、手写数字识别手写数字识别是人工智能领域中最基础的问题之一。
它代表了自然语言理解和识别技术的重要应用。
手写数字识别已经实现了很大的进展并被应用于数字签名、自动银行支票处理、邮票识别、医学 X 射线分析等各种领域。
在这些应用中,唯一的输入是一个数字图像,因此手写数字识别是根据输入图像来预测输出数字标签的一个任务。
四、基于神经网络的手写数字识别4.1 数据集神经网络训练需要大量数据来描述模式。
手写数据集是用于训练模型的重要数据集之一。
MNIST 数据集是一个公共手写数字数据集,其包含 60,000 个训练图像和 10,000 个测试图像。
每个图像都是 28x28 像素的灰度图像,表示数字 0 到 9 中的一个。
神经网络可以通过这些图像来学习和预测给定数字。
4.2 网络架构卷积神经网络(Convolutional Neural Network,CNN)是一个有效的图像分类器。
CNN 通过使用卷积、池化和全连接层逐层处理图像,最终输出对图像的分类结果。
在手写数字识别问题中,CNN 模型通常包括三个部分:- 卷积层:用于提取图像中的特征。
- 池化层:用于减少图像的维度,并增强图像的鲁棒性。
- 全连接层:用于对图像进行分类。
4.3 训练模型通过使用所述的 CNN 模型和 MNIST 数据集,我们可以训练一个手写数字识别模型。
基于神经网络的手写数字识别算法研究与应用

基于神经网络的手写数字识别算法研究与应用近年来,随着神经网络在计算机科学领域的快速发展,基于神经网络的手写数字识别算法成为了一个备受关注的研究热点。
这一技术的应用非常广泛,如自动邮件识别、智能手机输入法、银行支票处理等。
本文旨在对基于神经网络的手写数字识别算法进行研究,并探索其在实际应用中的潜力。
手写数字识别问题可视为一个多分类任务,即将手写的数字图像分为0-9十个不同的类别。
神经网络是一种被广泛应用于图像分类问题的强大工具,它通过学习数据中的模式和特征来对输入图像进行分类。
本文将围绕神经网络在手写数字识别领域的研究和应用展开讨论。
首先,我们将介绍神经网络的基本原理。
神经网络是一种模拟人脑神经元网络结构的计算模型,它由多个神经元层组成。
每个神经元接收来自前一层神经元的输入,并通过激活函数对输入进行加权和求和,然后产生输出。
神经网络通过不断调整神经元之间的连接权重来优化模型,从而提高分类准确率。
在手写数字识别问题中,输入的图像是一个二维像素矩阵,每个像素点的灰度值表示了图像的特征。
我们可以将这个二维矩阵展开为一个一维向量,并将其作为神经网络的输入层。
为了提高模型的表达能力,我们可以在输入层之后添加多个隐藏层。
隐藏层的神经元数量和层数的选择需要进行实验和调优,以达到最佳的识别效果。
在神经网络的训练过程中,我们使用的是反向传播算法。
反向传播算法通过计算输出层与标签之间的误差,并将误差从输出层向隐藏层进行反向传播,不断调整神经元之间的连接权重。
通过多次迭代,神经网络能够逐渐学习到输入图像的模式和特征,提升识别准确率。
在具体的实践中,我们可以使用一些公开的手写数字数据集来训练和测试神经网络模型。
常用的数据集包括MNIST、NIST等。
这些数据集中包含了大量的手写数字图像样本,并且已经提供了对应的标签,可以用于模型的训练和评估。
除了基本的神经网络结构和训练算法之外,还有一些改进和优化技术可以应用于手写数字识别算法中。
基于人工神经网络的MATLAB手写数字识别系统

基于人工神经网络的MATLAB手写数字识别系统一、函数MouseDraw实现手写识别系统GUI界面的建立和鼠标手写的实现。
(使用时保存为MouseDraw.m)function MouseDraw(action)% MouseDraw 本例展示如何以Handle Graphics来设定滑鼠事件% (MouseDraw Events)的反应指令(Callbacks)% 本程序在鼠标移动非常快时,不会造成画“断线”% global不能传矩阵global InitialX InitialY FigHandle hb2 hb3 hb4 count hb5 hb6 hb7 count='E:\im.jpg';imSize = 50;if nargin == 0, action = 'start';endswitch(action)%%开启图形视窗case'start',FigHandle = figure('WindowButtonDownFcn','MouseDraw down','DeleteFcn','save bpnet');axis([1 imSize 1 imSize]); % 设定图轴范围%set(gca,'Position',[.25 .20 .7 .7]);axis off;grid off;box on; % 将图轴加上图框title('手写体输入窗');try evalin('base','load bpnet')catchevalin('base','bpgdtrain');end% % fprintf('start');%%设定滑鼠按钮被按下时的反应指令为「MouseDraw down」% set(gcf, 'WindowButtonDownFcn', 'MouseDraw down');hb1 = uicontrol('Parent', FigHandle, 'Units', 'Normalized', ...'Position', [.3 .01 .13 .07], 'String', '保存', ...'Callback',['exa=rgb2gray(frame2im(getframe(gca)));','imwrite(exa ,''E:\im.jpg'')']);hb2=uicontrol('Parent',FigHandle,'Style','popupmenu','Position',[ 50 50 50 30],...'String', {'26','24', '22', '20', '18', '16','14','12','10'}); hb3=uicontrol('Parent', FigHandle,'Style','text',...'Position',[10 90 90 30],'String',[ 'CurrentX() ','CurrentY()']); hb4=uicontrol('Parent',FigHandle,'Style','popupmenu','Position',[ 50 20 50 30],...'String',{'Red','Blue','Black','Yellow','Green'});uicontrol('Parent',FigHandle,'Position',[270 6 70 30],'String','训练','Callback',...['exa=rgb2gray(frame2im(getframe(gca)));','sample=reshape(recgnit ion(exa),25,1);','clc;',...'t=inputdlg(''数字类别'',''样品训练'');','t=str2num(t{1,1})/10;',...'bpnet.trainParam.lr=str2num(get(hb6,''String''));','bpnet.trainP aram.goal=str2num(get(hb7,''String''));',...'[bpnet]=train(bpnet,sample,t);','save bpnet']);uicontrol('Parent',FigHandle,'Position',[360 6 70 30],'String','识别','Callback',...['exa=rgb2gray(frame2im(getframe(gca)));','sample=reshape(recgnit ion(exa),25,1);',...'record=round(sim(bpnet,sample)*10);','clc;','set(hb5,''String'', num2str(record),''fontSize'',48);']);uicontrol('Parent',FigHandle,'Style','text','Position',[10 60 30 20],'String','字号');uicontrol('Parent',FigHandle,'Style','text','Position',[10 30 30 20],'String','颜色');hb5=uicontrol('Parent',FigHandle,'Style','text','Position',[10 150 90 90]);uicontrol('Parent',FigHandle,'Style','text','Position',[5 260 50 20],'String','学习速率');hb6=uicontrol('Parent',FigHandle,'Style','Edit','Position',[60 260 30 20],'String','0.01');uicontrol('Parent',FigHandle,'Style','text','Position',[5 290 50 20],'String','训练精度');hb7=uicontrol('Parent',FigHandle,'Style','Edit','Position',[60 290 30 20],'String','0.005');uicontrol('Parent',FigHandle,'Style','pushbutton','Position',[450 6 70 30],'String','清除','Callback','cla');%将函数变量导入到工作空间;assignin('base','hb5',hb5);assignin('base','hb6',hb6);assignin('base','hb7',hb7); %%%%%%%%%%%%%%%%%%%%%%%%%%%dlmwrite('IXT.txt', -10, 'delimiter', '\t', 'precision', 6); dlmwrite('IYT.txt', -10, 'delimiter', '\t', 'precision', 6); %%滑鼠按钮被按下时的反应指令case'down',if strcmp(get(FigHandle, 'SelectionType'), 'normal') %如果是左键 set(FigHandle,'pointer','hand');CurPiont = get(gca, 'CurrentPoint');InitialX = CurPiont(1,1);InitialY = CurPiont(1,2);dlmwrite('IXT.txt', InitialX, '-append', 'delimiter', '\t', 'precision', 6);dlmwrite('IYT.txt', InitialY, '-append', 'delimiter', '\t', 'precision', 6);% 列印「MouseDraw down!」讯息% % fprintf('MouseDraw down!\n');% 设定滑鼠移动时的反应指令为「MouseDraw move」set(gcf, 'WindowButtonMotionFcn', 'MouseDraw move');set(gcf, 'WindowButtonUpFcn', 'MouseDraw up');elseif strcmp(get(FigHandle, 'SelectionType'), 'alt') % 如果是右键set(FigHandle, 'Pointer', 'arrow');set( FigHandle, 'WindowButtonMotionFcn', '')set(FigHandle, 'WindowButtonUpFcn', '')fprintf('MouseDraw right button down!\n');ImageX = importdata('IXT.txt');ImageY = importdata('IYT.txt');InputImage = ones(imSize);roundX = round(ImageX);roundY = round(ImageY);for k = 1:size(ImageX,1)if0<roundX(k) && roundX(k)<imSize && 0<roundY(k) && roundY(k)<imSizeInputImage(roundX(k)-1:roundX(k)+2,roundY(k)-1:roundY(k)+2) = 0;endendInputImage = imrotate(InputImage,90); % 图像旋转90figure(2);imshow(InputImage);end%%滑鼠移动时的反应指令case'move',CurPiont = get(gca, 'CurrentPoint');X = CurPiont(1,1);Y = CurPiont(1,2);set(hb3,'String',['CurrentX(',num2str(X),')','CurrentY(',num2str( Y),')']);% 当鼠标移动较快时,不会出现离散点。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于人工神经网络的MATLAB手写数字识别系统一、函数MouseDraw实现手写识别系统GUI界面的建立和鼠标手写的实现。
(使用时保存为MouseDraw.m)function MouseDraw(action)% MouseDraw 本例展示如何以Handle Graphics来设定滑鼠事件% (MouseDraw Events)的反应指令(Callbacks)% 本程序在鼠标移动非常快时,不会造成画“断线”% global不能传矩阵global InitialX InitialY FigHandle hb2 hb3 hb4 count hb5 hb6 hb7 count='E:\im.jpg';imSize = 50;if nargin == 0, action = 'start';endswitch(action)%%开启图形视窗case'start',FigHandle = figure('WindowButtonDownFcn','MouseDraw down','DeleteFcn','save bpnet');axis([1 imSize 1 imSize]); % 设定图轴范围%set(gca,'Position',[.25 .20 .7 .7]);axis off;grid off;box on; % 将图轴加上图框title('手写体输入窗');try evalin('base','load bpnet')catchevalin('base','bpgdtrain');end% % fprintf('start');%%设定滑鼠按钮被按下时的反应指令为「MouseDraw down」% set(gcf, 'WindowButtonDownFcn', 'MouseDraw down');hb1 = uicontrol('Parent', FigHandle, 'Units', 'Normalized', ...'Position', [.3 .01 .13 .07], 'String', '保存', ...'Callback',['exa=rgb2gray(frame2im(getframe(gca)));','imwrite(exa ,''E:\im.jpg'')']);hb2=uicontrol('Parent',FigHandle,'Style','popupmenu','Position',[ 50 50 50 30],...'String', {'26','24', '22', '20', '18', '16','14','12','10'}); hb3=uicontrol('Parent', FigHandle,'Style','text',...'Position',[10 90 90 30],'String',[ 'CurrentX() ','CurrentY()']); hb4=uicontrol('Parent',FigHandle,'Style','popupmenu','Position',[ 50 20 50 30],...'String',{'Red','Blue','Black','Yellow','Green'});uicontrol('Parent',FigHandle,'Position',[270 6 70 30],'String','训练','Callback',...['exa=rgb2gray(frame2im(getframe(gca)));','sample=reshape(recgnit ion(exa),25,1);','clc;',...'t=inputdlg(''数字类别'',''样品训练'');','t=str2num(t{1,1})/10;',...'bpnet.trainParam.lr=str2num(get(hb6,''String''));','bpnet.trainP aram.goal=str2num(get(hb7,''String''));',...'[bpnet]=train(bpnet,sample,t);','save bpnet']);uicontrol('Parent',FigHandle,'Position',[360 6 70 30],'String','识别','Callback',...['exa=rgb2gray(frame2im(getframe(gca)));','sample=reshape(recgnit ion(exa),25,1);',...'record=round(sim(bpnet,sample)*10);','clc;','set(hb5,''String'', num2str(record),''fontSize'',48);']);uicontrol('Parent',FigHandle,'Style','text','Position',[10 60 30 20],'String','字号');uicontrol('Parent',FigHandle,'Style','text','Position',[10 30 30 20],'String','颜色');hb5=uicontrol('Parent',FigHandle,'Style','text','Position',[10 150 90 90]);uicontrol('Parent',FigHandle,'Style','text','Position',[5 260 50 20],'String','学习速率');hb6=uicontrol('Parent',FigHandle,'Style','Edit','Position',[60 260 30 20],'String','0.01');uicontrol('Parent',FigHandle,'Style','text','Position',[5 290 50 20],'String','训练精度');hb7=uicontrol('Parent',FigHandle,'Style','Edit','Position',[60 290 30 20],'String','0.005');uicontrol('Parent',FigHandle,'Style','pushbutton','Position',[450 6 70 30],'String','清除','Callback','cla');%将函数变量导入到工作空间;assignin('base','hb5',hb5);assignin('base','hb6',hb6);assignin('base','hb7',hb7); %%%%%%%%%%%%%%%%%%%%%%%%%%%dlmwrite('IXT.txt', -10, 'delimiter', '\t', 'precision', 6); dlmwrite('IYT.txt', -10, 'delimiter', '\t', 'precision', 6); %%滑鼠按钮被按下时的反应指令case'down',if strcmp(get(FigHandle, 'SelectionType'), 'normal') %如果是左键 set(FigHandle,'pointer','hand');CurPiont = get(gca, 'CurrentPoint');InitialX = CurPiont(1,1);InitialY = CurPiont(1,2);dlmwrite('IXT.txt', InitialX, '-append', 'delimiter', '\t', 'precision', 6);dlmwrite('IYT.txt', InitialY, '-append', 'delimiter', '\t', 'precision', 6);% 列印「MouseDraw down!」讯息% % fprintf('MouseDraw down!\n');% 设定滑鼠移动时的反应指令为「MouseDraw move」set(gcf, 'WindowButtonMotionFcn', 'MouseDraw move');set(gcf, 'WindowButtonUpFcn', 'MouseDraw up');elseif strcmp(get(FigHandle, 'SelectionType'), 'alt') % 如果是右键set(FigHandle, 'Pointer', 'arrow');set( FigHandle, 'WindowButtonMotionFcn', '')set(FigHandle, 'WindowButtonUpFcn', '')fprintf('MouseDraw right button down!\n');ImageX = importdata('IXT.txt');ImageY = importdata('IYT.txt');InputImage = ones(imSize);roundX = round(ImageX);roundY = round(ImageY);for k = 1:size(ImageX,1)if0<roundX(k) && roundX(k)<imSize && 0<roundY(k) && roundY(k)<imSizeInputImage(roundX(k)-1:roundX(k)+2,roundY(k)-1:roundY(k)+2) = 0;endendInputImage = imrotate(InputImage,90); % 图像旋转90figure(2);imshow(InputImage);end%%滑鼠移动时的反应指令case'move',CurPiont = get(gca, 'CurrentPoint');X = CurPiont(1,1);Y = CurPiont(1,2);set(hb3,'String',['CurrentX(',num2str(X),')','CurrentY(',num2str( Y),')']);% 当鼠标移动较快时,不会出现离散点。