本發明涉及通信技術領域,尤其涉及一種鼠標手勢的識別方法和裝置。
背景技術:
在現有的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神經網絡的分布式存儲信息,并行處理信息,自組織,自學習信息等優點,讓用戶輸入的鼠標手勢能夠及時的處理,并且大量的訓練也保證了識別精度,同時,還可應用于各種類型的應用程序,大大的提高了用戶體驗。
以上僅為本發明的優選實施例,并非因此限制本發明的專利范圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護范圍內。