鼠标手势的识别方法和装置与流程

文档序号:12670896阅读:225来源:国知局
鼠标手势的识别方法和装置与流程

本发明涉及通信技术领域,尤其涉及一种鼠标手势的识别方法和装置。



背景技术:

在现有的Windows计算机中,用户常常通过鼠标在浏览器的网页上划出某种特定的轨迹,通过该轨迹实现相应的操作,例如可以实现预定的前进、后退、刷新、关闭窗口等常用操作。其过程具体如下:用鼠标输入图形,然后获取鼠标输入的图形与模板进行对比,提取特征,在网页上进行识别结果的输出。

但是,目前鼠标手势大多数还只限于浏览器上的应用,而对于其他Windows客户端应用程序并不适用。但是,由于计算机对鼠标轨迹识别的准确度还有待提高,现在的鼠标手势还比较简单,对用户而言还不能体会到鼠标手势比键盘上的快捷键会更加的方便快捷,而且鼠标手势是基于字符识别的,字符识别是通过基于字符结构的识别法及模糊匹配方法来进行处理,所以识别精度不高。

基于此,有必要提供一种鼠标手势的识别方法,以解决当前鼠标手势识别应用范围有限、识别精度不高的问题。



技术实现要素:

本发明的主要目的在于解决现有技术在鼠标手势识别应用范围有限、识别精度不高的技术问题。

为实现上述目的,本发明提供的一种鼠标手势的识别方法,所述方法包括:

侦测用户通过鼠标操作输入的鼠标手势,获取鼠标手势图像以得到待识别图像;

对所述待识别图像进行预处理以得到所述待识别图像的特征向量;

将所述特征向量输入预先训练的BP神经网络中以得到识别字符。

优选地,所述对所述待识别图像进行预处理以得到所述待识别图像的特征向量具体包括:

对所述待识别图像进行灰度化处理;

对灰度化处理后的所述待识别图像进行二值化处理并进行去离散噪声处理;

对去离散噪声处理后的所述待识别图像进行归一化处理以得到待识别的图像的归一化像素点阵图;

从所述归一化像素点阵图的像素矩阵中提取所述待识别图像的特征向量。

优选地,所述从所述归一化像素点阵图的像素矩阵中提取所述待识别图像的特征向量具体包括:

从所述归一化图像点阵图中提取各像素值以得到所述待识别图像对应的像素矩阵;

将所述像素矩阵转化为列矩阵以得到所述待识别图像的特征列向量。

优选地,在所述侦测用户通过鼠标操作输入的鼠标手势,获取鼠标手势图像以得到待识别图像之前,所述方法还包括:通过预设的手势模板图像对预设的BP神经网络进行训练以得到所述预先训练的BP神经网络。

优选地,所述通过预设的手势模板图像对预设BP神经网络进行训练以得到所述预先训练的BP神经网络具体包括:

对预设的各手势模板图像进行预处理以得到各手势模板图像的特征向量;

设定预设的BP神经网络的期望输出为所述各手势模板图像对应的字符;

将所述各手势模板图像的特征向量输入所述BP神经网络,根据期望输出对所述BP神经网络进行训练;

当所述BP神经网络的训练次数达到预设次数或误差值小于期望值时,停止训练并保存此时的BP神经网络的各参数以得到预先训练的BP神经网络。

此外,为实现上述目的,本发明还提供一种鼠标手势的识别装置,所述鼠标手势的识别装置包括:

侦测模块,用于侦测用户通过鼠标操作输入的鼠标手势,获取鼠标手势图像以得到待识别图像;

处理模块,用于对所述待识别图像进行预处理以得到所述待识别图像的特征向量;

识别模块,用于将所述特征向量输入预先训练的BP神经网络中以得到识别字符。

优选地,所述处理模块具体包括:

灰度化单元,用于对所述待识别图像进行灰度化处理;

二值化单元,用于对灰度化处理后的所述待识别图像进行二值化处理并进行去离散噪声处理;

归一化单元,用于对去离散噪声处理后的所述待识别图像进行归一化处理以得到待识别的图像的归一化像素点阵图;

提取单元,用于从所述归一化像素点阵图的像素矩阵中提取所述待识别图像的特征向量。

优选地,所述提取单元具体包括:

矩阵子单元,用于从所述归一化图像点阵图中提取各像素值以得到所述待识别图像对应的像素矩阵;

转换子单元,用于将所述像素矩阵转化为列矩阵以得到所述待识别图像的特征列向量。

优选地,所述装置还包括:训练模块,用于通过预设的手势模板图像对预设的BP神经网络进行训练以得到所述预先训练的BP神经网络。

优选地,所述训练模块具体包括:

预处理单元,用于对预设的各手势模板图像进行预处理以得到各手势模板图像的特征向量;

设定单元,用于设定预先设计的BP神经网络的期望输出为所述各手势模板图像对应的手势;

输入单元,用于将所述各手势模板图像的特征向量输入所述BP神经网络,根据期望输出对所述BP神经网络进行训练;

判断单元,用于当所述BP神经网络的训练次数达到预设次数或误差值小于期望值时,停止训练并保存此时的BP神经网络的各参数以得到预先训练的BP神经网络。

本发明所提供的鼠标手势的识别方法和装置,侦测用户通过鼠标操作输入的鼠标手势,获取鼠标手势图像以得到待识别图像;对所述待识别图像进行预处理以得到所述待识别图像的特征向量;将所述特征向量输入预先训练的BP神经网络中以得到识别字符。利用BP神经网络的人工智能,将经过预处理后的鼠标手势图像的特征向量输入训练好的BP神经网络即可得到识别结果。由此,BP神经网络的分布式存储信息,并行处理信息,自组织,自学习信息等优点,让用户输入的鼠标手势能够及时的处理,并且大量的训练也保证了识别精度,同时,还可应用于各种类型的应用程序,大大的提高了用户体验。

附图说明

图1为本发明的鼠标手势的识别方法第一实施例的流程示意图;

图2为图1中步骤S20的具体细化流程示意图;

图3为图2中步骤S24的具体细化流程示意图;

图4为本发明的鼠标手势的识别方法第一实施例中BP神经网络训练的细化流程示意图;

图5为本发明的鼠标手势的识别装置第一实施例的功能模块示意图;

图6为图5中处理模块70的细化功能模块示意图;

图7为图6中提取单元74的细化功能模块示意图;

图8为本发明的鼠标手势的识别装置第一实施例中训练模块90的细化功能模块示意图;

图9为本发明中BP神经网络训练时的学习误差曲线图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

需要说明的是,在本发明各实施例中,终端包括但不限于个人计算机、移动终端、IPAD等任意采用Windows系统的电子设备。

本发明提供一种鼠标手势的识别方法。参照图1,图1为本发明的鼠标手势的识别方法第一实施例的流程示意图。在该实施例中,所述鼠标手势的识别方法包括:

步骤S10,侦测用户通过鼠标操作输入的鼠标手势,获取鼠标手势图像以得到待识别图像;

具体的,在本实施例中,终端侦测用户通过鼠标操作输入的鼠标手势,例如,用户通过鼠标右键在终端上当前页面上进行的拖曳轨迹,终端记录鼠标光标经过的轨迹并在用户输入完毕后生成包含该轨迹的图形,即鼠标手势图像。所述鼠标手势图像即为后续需要进行识别的待识别图像。

可以理解的是,当前鼠标手势已经涵盖了许多的常用英文字母和数字,在本实施例中,待识别的鼠标手势默认为0到9的10个数字字符。

步骤S20,对所述待识别图像进行预处理以得到所述待识别图像的特征向量;

具体的,在识别鼠标手势图像之前,都需要对该待识别图像进行一系列的变换处理以得到符合要求的特征向量,所述变换处理包括但不限于灰度化处理、二值化处理、去离散噪声、归一化调整等预处理,最终,可以将待识别图像转换为归一化的M*N的像素点阵图,并由此得到待识别图像的特征向量A,并且,特征向量A为数值类型为双精度类型的(N*M)*1的列矩阵。其中,M,N的取值可以依据需要设定,在本实施例中,可以取M为20,N为36。

进一步的,请参考图2,所示是步骤S20的细化流程图,在本实施例中,步骤S20具体包括:

步骤S21,对所述待识别图像进行灰度化处理;

步骤S22,对灰度化处理后的所述待识别图像进行二值化处理并进行去离散噪声处理;

步骤S23,对去离散噪声处理后的所述待识别图像进行归一化处理以得到待识别的图像的归一化像素点阵图;

步骤S24,从所述归一化像素点阵图的像素矩阵中提取所述待识别图像的特征向量。

具体的,终端先对待识别图像进行灰度化处理,在本实施例中,对于具体的处理方式不作限制,例如可以采用最大值法,平均值法或是加权平均法,本实施例中优选采用加权平均法,例如可以通过MATLAB中的rgb2gray函数直接实现图像的灰度化。得到灰度化的待识别图像后,终端进一步对灰度化的待识别图像进行二值化处理以及去噪处理。本实施例中仍旧通过MATLAB软件实现如下:假设灰度化的待识别图像为fig_gray,则首先通过graythresh函数使用最大类间方差法得到fig_gray的全局阈值,再通过im2bw函数调用该全局阈值将fig_gray转化为二值图像fig_bool。实现过程如下:

Threshold=graythresh(fig_gray);

Fig_bool=im2bw(fig_gray,threshold);

其中,其中fig_gray和fig_boo1分别为灰度图像的存储矩阵和二值化图像的存储矩阵。

因为二值化后的图像一般存在字体模糊现象,因此,在去除离散噪声之前一般还需要进行梯度锐化,同时也可以对噪声起到一定的去除作用,本实施例中可以采用Roberts算子、Sobel算子、Prewitt算子或是Laplacian算子等处理方式对二值化后的待识别图像进行锐化使凸显边缘变清楚,同时选用合适的阈值可以减弱和消除细小的噪声,去离散噪声的仍可以通过MATLAB软件实现,现有的去离散噪声方式已经非常成熟,故此处不作详细描述,仅列举一方式作为例子:扫描整个图像,当发现一个黑色像素时就考察和它直接或间接相连的黑色像素的数量,如果该数量大于一定值(具体数值根据图像情况而定),则可以判定它为非离散点,反之,则认为它为离散点,将其从图像中去除。

因为用户通过鼠标输入鼠标手势后,其覆盖的范围存在不同,因此,终端获取到的鼠标手势图像大小也存在差异,因此,需要对输入的鼠标手势图像即待识别图像进行归一化调整。将去离散噪声后的待识别图像统一归一化为M*N即20×36的像素点阵图,从该像素点阵图中即可提取待识别图像的特征向量。

进一步的,请参考图3,在本实施例中,步骤S24具体包括:

步骤S241,从所述归一化图像点阵图中提取各像素值以得到所述待识别图像对应的像素矩阵;

步骤S242,将所述像素矩阵转化为列矩阵以得到所述待识别图像的特征向量。

经过上述一系列处理后,此时,待识别图像为归一化的二值化图像,每一个像素点对应一个像素值,提取之后即可得到一个对应的36*20的布尔矩阵,此时,将该36*20的布尔矩阵转换为720*1的双精度列矩阵,该列矩阵即为待识别图像的特征向量。

步骤S30,将所述特征向量输入预先训练的BP神经网络中以得到识别字符。

具体的,对于BP神经网络而言,隐含层数越多,神经网络学习速度就越慢,根据Kosmogorov定理,在合理的结构和恰当的权值条件下,3层网络可以逼近任意的连续函数,因此,在本实施例中,选取结构相对简单的3层网络为例进行说明。其中,输入层的神经元个数等于特征向量的位数,即M*N=20*36的720个输入神经元,输出层神经元则等于本实施例中默认可识别的鼠标手势的数量,即0到9的10个数字字符,因此输出层神经元个数为10。而隐含层神经元个数是根据网络收敛性能的好坏来确定的,在总结大量网络结构的基础上,得出经验公式:

s=sqr(0.43nm+0.12m+2.54n+0.77m+0.35+0.51);

其中n为输入层神经元个数,m为输出层神经元个数,根据以上公式,可以得出隐含层神经元个数为70。

当数字字符0—9对应的特征向量输入BP神经网络后在输出神经元对应的位置上为1,其他的位置为0。例如输入数字0,则第1个输出神经元为1,其他为0;输入数字1,则第2个输出神经元为1,其他为0,以此类推。在本实施例中,对于已经预先训练好的BP神经网络,当将待识别图像的特征向量即该720*1的列矩阵输入时,则BP神经网络会对应输出相应的字符。

进一步的,在本实施例中,在步骤S10之前,所述鼠标手势的识别方法还包括:

步骤S40,通过预设的手势模板图像对预设的BP神经网络进行训练以得到所述预先训练的BP神经网络。

具体的,对于BP神经网络而言,都要通过大量的训练调整隐含层各神经元的权值,使BP神经网络的输入趋近于期望输出。本实施例中,在初始化阶段可以构造预设的BP神经网络,通过将大量预设的手势模板图像输入至预设的BP神经网络中,根据期望输出对该预设的BP神经网络进行训练,直至实际输出与期望输出的误差小于目标值为止。

进一步的,请参考图4,在本实施例中,步骤S40具体包括:

步骤S41,对预设的各手势模板图像进行预处理以得到各手势模板图像的特征向量;

步骤S42,设定预设的BP神经网络的期望输出为所述各手势模板图像对应的字符;

步骤S43,将所述各手势模板图像的特征向量输入所述BP神经网络,根据期望输出对所述BP神经网络进行训练;

步骤S44,当所述BP神经网络的训练次数达到预设次数或误差值小于期望值时,停止训练并保存此时的BP神经网络的各参数以得到预先训练的BP神经网络。

本实施例中,在预先确定了待识别图像归一化后的大小后,即确定了M*N的值后,即可以确定BP神经网络的结构,此时,可以通过newff函数建立一个前向神经网络即预先设计的BP神经网络,如下:

net=newff(minmax(P),[720,70,10],{‘logsig’,‘logsig’,‘logsig’},‘traincgb’);

其中,minmax(P)为BP神经网络对它的720个输入元素的最大值和最小值的限制。P为训练样本集合。[720,70,10]为该神经网络的层结构。{‘logsig’,‘logsig’,‘logsig’}为神经网络的各层的转移/传递函数,均设置为对数S型激活函数。训练函数采用traincgb,即采用Powel1-Beale共轭梯度法训练。

一个手势模板图像即为一个数字字符,其对应一个期望输出。对于训练样本集合而言,本发明中0—9共10类数据,每个数字字符经过上述相同的一系列处理后归一化后的图像为36×20的布尔矩阵,用此36×20=720个元素组成一个数字字符的720*1的列矩阵即数字字符的特征向量,由0~9这10个数字的特征向量组成一个720×10的输入矢量,记为:sample_group=[0,1,2,…,9];式中的0,1,…,9代表数字字符的特征向量。与该输入矢量对应的目标矢量是希望每一个数字输入BP神经网络后在输出神经元对应的位置上为1,其他的位置为0。为此取目标矢量为对角线上为1的10×10的单位矩阵,用matlab命令实现为:targets=eye(10)。

0—9共l0类数据,每类取20个做训练样本,即20组输入矢量构成训练样本集合,训练样本集合如下:P=[samples_groupl,samples_group2,…,group20];因为数字字符的特征向量由布尔元素组成,所以训练样本集合为布尔类型,而BP神经网络不能够对布尔值进行训练,所以需要将训练样本集合转化为双精度类型,可通过直接通过P=double(P)实现。

与训练样本集合相对应的目标值集合由20组目标矢量构成,目标值集合如下:T=[targets1,targets2,…,targets19,targets20]。

本实施例中BP神经网络的训练采用的目标性能函数为SSE,误差性能目标值设置为0.01,当BP神经网络训练次数达到预设最大值(取1000)或者BP神经网络的误差平方和SSE(误差值)降到0.01(期望值)以下,则认为训练目标达到,终止训练。可通过MATLAB软件实现,其实现部分程序代码如下:

net.trainParam.epochs=1000;%最大训练次数

net.trainParam.show=20;%显示的间隔次数

net.trainParam.min_grad=le-10;%最小执行梯度

net.peformFcn:‘sse’;%设置目标性能函数

net.trainParam.goal=0.01;%性能期望值

net.1ayers{1}.initFcn=‘initwb’;%网络层的初始化函数选为‘initwb’,使下面的输入层初始化语句randnr’有效

net.inputWeights{1,1}.initFcn=‘randnr’;%输入层权值向量初始化

net.1ayerWeights{2,1}.initFcn=‘randnr’;%第1网络层到第2网络层的权值向量初始化

net=init(net);%初始化网络

[net,tr]=train(net,P,T);%网络训练

其中[net,tr]中的net为更新了权值的BP神经网络,tr为训练记录(记录次数和每次训练的误差)。

请同时参考图9,所示是训练过程中BP神经网络的学习误差曲线图一示意图,但达到图9所示的程度时,此时,神经网络的误差平方和SSE为0.0088,小于性能期望值0.01,可结束训练,得到预先训练的BP神经网络。

以上实施例提供的鼠标手势的识别方法,通过侦测用户通过鼠标操作输入的鼠标手势,获取鼠标手势图像以得到待识别图像;对所述待识别图像进行预处理以得到所述待识别图像的特征向量;将所述特征向量输入预先训练的BP神经网络中以得到识别字符。利用BP神经网络的人工智能,将经过预处理后的鼠标手势图像的特征向量输入训练好的BP神经网络即可得到识别结果。由此,BP神经网络的分布式存储信息,并行处理信息,自组织,自学习信息等优点,让用户输入的鼠标手势能够及时的处理,并且大量的训练也保证了识别精度,同时,还可应用于各种类型的应用程序,大大的提高了用户体验。

本发明提供一种鼠标手势的识别装置。参照图5,图5为本发明的鼠标手势的识别方法第一实施例的功能模块示意图。在该实施例中,鼠标手势的识别装置100应用于终端中,包括:

侦测模块60,用于侦测用户通过鼠标操作输入的鼠标手势,获取鼠标手势图像以得到待识别图像;

具体的,在本实施例中,侦测模块60侦测用户通过鼠标操作输入的鼠标手势,例如,用户通过鼠标右键在终端上当前页面上进行的拖曳轨迹,侦测模块60记录鼠标光标经过的轨迹并在用户输入完毕后生成包含该轨迹的图形,即鼠标手势图像。所述鼠标手势图像即为后续需要进行识别的待识别图像。

可以理解的是,当前鼠标手势已经涵盖了许多的常用英文字母和数字,在本实施例中,待识别的鼠标手势默认为0到9的10个数字字符。

处理模块70,用于对所述待识别图像进行预处理以得到所述待识别图像的特征向量;

具体的,在识别鼠标手势图像之前,都需要对该待识别图像进行一系列的变换处理以得到符合要求的特征向量,所述变换处理包括但不限于灰度化处理、二值化处理、去离散噪声、归一化调整等预处理,最终,处理模块70可以将待识别图像转换为归一化的M*N的像素点阵图,并由此得到待识别图像的特征向量A,并且,特征向量A为数值类型为双精度类型的(N*M)*1的列矩阵。其中,M,N的取值可以依据需要设定,在本实施例中,可以取M为20,N为36。

进一步的,请参考图6,所示是处理模块70的细化功能模块示意图,在本实施例中,处理模块70具体包括:

灰度化单元71,用于对所述待识别图像进行灰度化处理;

二值化单元72,用于对灰度化处理后的所述待识别图像进行二值化处理并进行去离散噪声处理;

归一化单元73,用于对去离散噪声处理后的所述待识别图像进行归一化处理以得到待识别的图像的归一化像素点阵图;

提取单元74,用于从所述归一化像素点阵图的像素矩阵中提取所述待识别图像的特征向量。

具体的,灰度化单元71先对待识别图像进行灰度化处理,在本实施例中,对于具体的处理方式不作限制,例如可以采用最大值法,平均值法或是加权平均法,本实施例中优选采用加权平均法,例如可以通过MATLAB中的rgb2gray函数直接实现图像的灰度化。得到灰度化的待识别图像后,二值化单元72进一步对灰度化的待识别图像进行二值化处理以及去噪处理。本实施例中仍旧通过MATLAB软件实现如下:假设灰度化的待识别图像为fig_gray,则首先通过graythresh函数使用最大类间方差法得到fig_gray的全局阈值,再通过im2bw函数调用该全局阈值将fig_gray转化为二值图像fig_bool。实现过程如下:

Threshold=graythresh(fig_gray);

Fig_bool=im2bw(fig_gray,threshold);

其中,其中fig_gray和fig_boo1分别为灰度图像的存储矩阵和二值化图像的存储矩阵。

因为二值化后的图像一般存在字体模糊现象,因此,在去除离散噪声之前一般还需要进行梯度锐化,同时也可以对噪声起到一定的去除作用,本实施例中可以采用Roberts算子、Sobel算子、Prewitt算子或是Laplacian算子等处理方式对二值化后的待识别图像进行锐化使凸显边缘变清楚,同时选用合适的阈值可以减弱和消除细小的噪声,去离散噪声的仍可以通过MATLAB软件实现,现有的去离散噪声方式已经非常成熟,故此处不作详细描述,仅列举一方式作为例子:扫描整个图像,当发现一个黑色像素时就考察和它直接或间接相连的黑色像素的数量,如果该数量大于一定值(具体数值根据图像情况而定),则可以判定它为非离散点,反之,则认为它为离散点,将其从图像中去除。

因为用户通过鼠标输入鼠标手势后,其覆盖的范围存在不同,因此,侦测模块60获取到的鼠标手势图像大小也存在差异,因此,归一化单元73需要对输入的鼠标手势图像即待识别图像进行归一化调整。将去离散噪声后的待识别图像统一归一化为M*N即20×36的像素点阵图后,提取单元74从该像素点阵图中即可提取待识别图像的特征向量。

进一步的,请参考图7,在本实施例中,提取单元74具体包括:

矩阵子单元741,用于从所述归一化图像点阵图中提取各像素值以得到所述待识别图像对应的像素矩阵;

转换子单元742,用于将所述像素矩阵转化为列矩阵以得到所述待识别图像的特征向量。

经过上述一系列处理后,此时,待识别图像为归一化的二值化图像,每一个像素点对应一个像素值,提取之后即可得到一个对应的36*20的布尔矩阵,此时,将该36*20的布尔矩阵转换为720*1的双精度列矩阵,该列矩阵即为待识别图像的特征向量。

识别模块80,用于将所述特征向量输入预先训练的BP神经网络中以得到识别字符。

具体的,对于BP神经网络而言,隐含层数越多,神经网络学习速度就越慢,根据Kosmogorov定理,在合理的结构和恰当的权值条件下,3层网络可以逼近任意的连续函数,因此,在本实施例中,选取结构相对简单的3层网络为例进行说明。其中,输入层的神经元个数等于特征向量的位数,即M*N=20*36的720个输入神经元,输出层神经元则等于本实施例中默认可识别的鼠标手势的数量,即0到9的10个数字字符,因此输出层神经元个数为10。而隐含层神经元个数是根据网络收敛性能的好坏来确定的,在总结大量网络结构的基础上,得出经验公式:

s=sqr(0.43nm+0.12m+2.54n+0.77m+0.35+0.51);

其中n为输入层神经元个数,m为输出层神经元个数,根据以上公式,可以得出隐含层神经元个数为70。

当数字字符0—9对应的特征向量输入BP神经网络后在输出神经元对应的位置上为1,其他的位置为0。例如输入数字0,则第1个输出神经元为1,其他为0;输入数字1,则第2个输出神经元为1,其他为0,以此类推。在本实施例中,对于已经预先训练好的BP神经网络,当识别模块80将待识别图像的特征向量即该720*1的列矩阵输入时,则BP神经网络会对应输出相应的字符。

进一步的,在本实施例中,鼠标手势的识别装置100还包括:

训练模块90,用于通过预设的手势模板图像对预设的BP神经网络进行训练以得到所述预先训练的BP神经网络。

具体的,对于BP神经网络而言,都要通过大量的训练调整隐含层各神经元的权值,使BP神经网络的输入趋近于期望输出。本实施例中,在初始化阶段可以构造预设的BP神经网络,训练模块90通过将大量预设的手势模板图像输入至预设的BP神经网络中,根据期望输出对该预设的BP神经网络进行训练,直至实际输出与期望输出的误差小于目标值为止。

进一步的,请参考图8,在本实施例中,训练模块90具体包括:

预处理单元91,用于对预设的各手势模板图像进行预处理以得到各手势模板图像的特征向量;

设定单元92,用于设定预先设计的BP神经网络的期望输出为所述各手势模板图像对应的手势;

输入单元93,用于将所述各手势模板图像的特征向量输入所述BP神经网络,根据期望输出对所述BP神经网络进行训练;

判断单元94,用于当所述BP神经网络的训练次数达到预设次数或误差值小于期望值时,停止训练并保存此时的BP神经网络的各参数以得到预先训练的BP神经网络。

本实施例中,在预先确定了待识别图像归一化后的大小后,即确定了M*N的值后,即可以确定BP神经网络的结构,此时,可以通过newff函数建立一个前向神经网络即预先设计的BP神经网络,如下:

net=newff(minmax(P),[720,70,10],{‘logsig’,‘logsig’,‘logsig’},‘traincgb’);

其中minmax(P)为BP神经网络对它的720个输入元素的最大值和最小值的限制。P为训练样本集合。[720,70,10]为该神经网络的层结构。{‘logsig’,‘logsig’,‘logsig’}为神经网络的各层的转移/传递函数,均设置为对数S型激活函数。训练函数采用traincgb,即采用Powel1-Beale共轭梯度法训练。

一个手势模板图像即为一个数字字符,其对应一个期望输出。对于训练样本集合而言,本发明中0—9共10类数据,每个数字字符经过上述相同的一系列处理后归一化后的图像为36×20的布尔矩阵,用此36×20=720个元素组成一个数字字符的720*1的列矩阵即数字字符的特征向量,由0~9这10个数字的特征向量组成一个720×10的输入矢量,记为:sample_group=[0,1,2,…,9];式中的0,1,…,9代表数字字符的特征向量。与该输入矢量对应的目标矢量是希望每一个数字输入BP神经网络后在输出神经元对应的位置上为1,其他的位置为0。为此取目标矢量为对角线上为1的10×10的单位矩阵,用matlab命令实现为:targets=eye(10)。

0—9共l0类数据,每类取20个做训练样本,即20组输入矢量构成训练样本集合,训练样本集合如下:P=[samples_groupl,samples_group2,…,group20];因为数字字符的特征向量由布尔元素组成,所以训练样本集合为布尔类型,而BP神经网络不能够对布尔值进行训练,所以需要将训练样本集合转化为双精度类型,可通过直接通过P=double(P)实现。

与训练样本集合相对应的目标值集合由20组目标矢量构成,目标值集合如下:T=[targets1,targets2,…,targets19,targets20]。

本实施例中BP神经网络的训练采用的目标性能函数为SSE,误差性能目标值设置为0.01,当BP神经网络训练次数达到预设最大值(取1000)或者BP神经网络的误差平方和SSE(误差值)降到0.01(期望值)以下,则认为训练目标达到,终止训练。可通过MATLAB软件实现,其实现部分程序代码如下:

net.trainParam.epochs=1000;%最大训练次数

net.trainParam.show=20;%显示的间隔次数

net.trainParam.min_grad=le-10;%最小执行梯度

net.peformFcn:‘sse’;%设置目标性能函数

net.trainParam.goal=0.01;%性能期望值

net.1ayers{1}.initFcn=‘initwb’;%网络层的初始化函数选为‘initwb’,使下面的输入层初始化语句randnr’有效

net.inputWeights{1,1}.initFcn=‘randnr’;%输入层权值向量初始化

net.1ayerWeights{2,1}.initFcn=‘randnr’;%第1网络层到第2网络层的权值向量初始化

net=init(net);%初始化网络

[net,tr]=train(net,P,T);%网络训练

其中[net,tr]中的net为更新了权值的BP神经网络,tr为训练记录(记录次数和每次训练的误差)。

请同时参考图9,所示是训练过程中BP神经网络的学习误差曲线图一示意图,但达到图9所示的程度时,此时,神经网络的误差平方和SSE为0.0088,小于性能期望值0.01,可结束训练,得到预先训练的BP神经网络。

以上实施例提供的鼠标手势的识别装置,通过侦测用户通过鼠标操作输入的鼠标手势,获取鼠标手势图像以得到待识别图像;对所述待识别图像进行预处理以得到所述待识别图像的特征向量;将所述特征向量输入预先训练的BP神经网络中以得到识别字符。利用BP神经网络的人工智能,将经过预处理后的鼠标手势图像的特征向量输入训练好的BP神经网络即可得到识别结果。由此,BP神经网络的分布式存储信息,并行处理信息,自组织,自学习信息等优点,让用户输入的鼠标手势能够及时的处理,并且大量的训练也保证了识别精度,同时,还可应用于各种类型的应用程序,大大的提高了用户体验。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1