本發(fā)明涉及身份識別
技術領域:
,具體涉及一種基于隨機樹的心電信號快速身份識別方法。
背景技術:
:傳統(tǒng)的身份識別方法,比如秘鑰、口令等方法,需要用戶對秘鑰進行記錄,上述的身份識別方法需要記錄秘鑰、口令信息,不僅操作繁瑣,而且還會存在秘鑰、口令遺忘或者丟失的可能性。而常用生物身份識別方法,比如虹膜識別、指紋識別等,雖然無需用戶記憶秘鑰且識別率很高,但是有著許多破解的方法。比如通過佩戴特制的隱形眼鏡可以騙過虹膜識別;通過特制的乳膠手指可以騙過指紋識別等。傳統(tǒng)的生物身份識別逐漸轉向心電信號等生物特征的識別。心電信號作為普世性的生物特征信號,且因人的身體、心臟狀況不同,因人而異,且在靜息狀態(tài)具有長期穩(wěn)定性,非常適合用于身份識別。目前,心電識別方法處于發(fā)展階段。復雜度低的算法,往往識別率不夠高;而精度高的方法往往計算量很大,無法很好的用在各種平臺上。因此,本文提出一種精度高、識別率高且計算復雜度低的心電身份識別方法。技術實現(xiàn)要素:本發(fā)明的目的是:提供一種基于隨機樹的心電信號快速身份識別方法,方法精度高、識別率高且計算復雜度低。為實現(xiàn)上述目的,本方法發(fā)明采用的技術方案是:基于隨機樹的心電信號快速身份識別方法,包括如下步驟:S100、心電信號預處理步驟,對采集的心電信號進行濾波、去噪處理,提取心電信號的瞬時頻率,在瞬時頻率上尋找極大值點,再在極大值附近尋找尖峰狀波的波峰。截取出每次尖峰狀波的波峰間期的波形,調整每個波形的長度,將每個波形變?yōu)楣潭ㄩL度;S101、識別模型的計算步驟,把截取好的心跳數(shù)據(jù)分為屬于用戶的一類及不屬于用戶的一類,使用固定長度后的單次尖峰狀波的波峰間期波形數(shù)據(jù),以及該次心跳的時間長度作為特征來分類;S102、構建二叉樹狀分類器對心跳數(shù)據(jù)進行分類,樹的根節(jié)點對應所有的數(shù)據(jù),以根節(jié)點為例,隨機選取特征維度和閾值,把該節(jié)點對應的數(shù)據(jù)分為兩類,用分裂后信息熵最小的一次作為實際分裂閾值;S103、從根節(jié)點開始,對數(shù)據(jù)進行分裂,當節(jié)點的深度到達預設值16層時,或者當節(jié)點對應的數(shù)據(jù)量小于10個時,或者當節(jié)點對應的數(shù)據(jù)全屬于用戶或全不屬于用戶時,停止分裂;S104、識別模型的使用,對于需要判斷身份的心電信號,先對其進行預處理操作,然后將提取到的一次心跳數(shù)據(jù)輸入到建立好的二叉樹狀模型中,從根節(jié)點開始,利用根節(jié)點記錄的特征維度與閾值,查找到葉子節(jié)點為止,判斷心跳數(shù)據(jù)位于子節(jié)點的位置,若該葉子節(jié)點屬于該用戶,則認為輸入的心跳數(shù)據(jù)屬于該用戶,反之則不屬于。本方法發(fā)明還存在以下附加特征:所述步驟S100中,對采集的心電信號采用FIR帶通濾波器濾波,使用Fstop1=1Hz,F(xiàn)pass1=2Hz,F(xiàn)pass2=99Hz,F(xiàn)stop2=100Hz的帶通Equiripple濾波器對原始心電信號進行濾波,將濾波后信號的幅值調整到[1,2]區(qū)間,將該信號進行希爾波特變換,提取瞬時頻率,將調整后的信號與進行卷積,得到對應的對偶信號,以對偶信號為虛部,調整后的信號為實部,計算該信號對應的瞬時相位,對相位求導,得到瞬時頻率。取瞬時頻率信號最大值的二分之一作為閾值,尋找所有幅值大于閾值的極大值點,方法如下:對瞬時頻率信號進行差分,若差分信號某個點幅值其大于零,后一個采樣點幅值小于零,且其差分前信號的幅值大于閾值,則其為所需的極大值點,在檢測到極致點的時間位置的附近,尋找經(jīng)過濾波后的原始波形的極值點,找到了尖峰狀波的波峰。對尖峰狀波的波峰間期時間長度進行提取,該提取方法為:設采樣率為Fs,則一個尖峰狀波的波峰間期的采樣間隔數(shù)量除以采樣率即為尖峰狀波的波峰間期時間長度;對于尖峰狀波的波峰波形數(shù)據(jù)的長度放縮,其方法為:設尖峰狀波的波峰間期的波形數(shù)據(jù)為yi,其長度為N,構造以1/(N-1)為步長,從0到1的數(shù)組xi,設波形固定的長度為M,構造從0到1,步長為1/(M-1)的數(shù)組xii,xi與yi一一對應,以xi、yi為標準,尋找xii對應的yii,M的值為20,計算yii每個元素的詳細步驟如下:對于xii里每個元素,尋找其在xi的區(qū)間,設xii的元素為x,其對應帶求的yii的元素為y,x所在區(qū)間為[x1,x2],x1與x2相鄰,且屬于xi,x1與yi里的元素y1對應,x2與yi里的元素y2對應,則y=y(tǒng)1+(x-x1)*(y1-y2)/(x1-x2)對xii里的所有元素執(zhí)行上述操作,即可計算出yii,yii即為固定長度后的尖峰狀波的波峰間期波形數(shù)據(jù),其長度為20。所述步驟S101中,識別模型為二值分類器,在預處理中得到了固定長度后的尖峰狀波的波峰間期數(shù)據(jù),和該尖峰狀波的波峰間期的時間長度,固定長度的波形數(shù)據(jù)為20維,時間長度為1維,以21維作為特征,構建樹狀模型;記錄一名用戶的5分鐘靜息狀態(tài)下的心電數(shù)據(jù),得到該名用戶的每次尖峰狀波的波峰間期波形和每次尖峰狀波的波峰間期波形對應的時間長度,再記錄多名用戶的心電數(shù)據(jù),并做同樣處理,記屬于用戶的數(shù)據(jù)的類別為1,不屬于的類別為0,設一個尖峰狀波的波峰間期波形數(shù)據(jù)、以及對應的尖峰狀波的波峰時間長度,和該尖峰狀波的波峰間期的類別構成一個樣本。構建二叉樹狀分類模型中,包括:用于記錄節(jié)點編號字段Node_ID,節(jié)點深度的字段Depth,用于記錄左子節(jié)點編號的字段L_child,用于記錄右子節(jié)點編號的字段R_child,選取維度的字段Dim,閾值的字段Thrs,節(jié)點類別的字段Label,和節(jié)點屬性的字段Is_leaf。所述步驟c中,信息熵計算方法如下:統(tǒng)計一個數(shù)據(jù)集里,每類數(shù)據(jù)出現(xiàn)的概率pi,i為類別標號,信息熵=Σ-pilog2(pi)屬于用戶類數(shù)據(jù)的概率為p,則信息熵計算公式變?yōu)椋盒畔㈧兀絧·log2(p)+(1-p)log2(1-p)在計算識別模型前,先計算出當p為0,0.1,0.2,0.3...,1時對應的信息熵,將其存儲在計算機內存里,之后在計算識別模型時,使用預先計算好的信息熵做二次樣條插值。所述步驟S104中,對于待識別身份的心電數(shù)據(jù),先對其進行預處理,取出1次尖峰狀波的波峰間期固定后的波形數(shù)據(jù),以及對應的尖峰狀波的波峰間期時間長度,組成21維的特征樣本。與現(xiàn)有技術相比,本發(fā)明具備的技術效果為:該方法在計算識別模型時,更加快捷有效,且不損失識別精度;另外,在建立識別模型后,相比于其他方法,僅需一次心跳的數(shù)據(jù),就可判斷身份,簡單,快速,方便。另外,該方法計算量低,有較好的可實施性,結果也更為精確。除了上面所描述的目的、特征和優(yōu)點之外,本發(fā)明還有其它的目的、特征和優(yōu)點。下面將參照圖,對本發(fā)明作進一步詳細的說明。附圖說明構成本申請的一部分的說明書附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中:圖1是基于隨機樹的心電信號快速身份識別方法的邏輯框圖;圖2是基于隨機樹的心電信號快速身份識別方法的流程圖;圖3是基于隨機樹的心電信號快速身份識別方法中的原始的心電信號圖;圖4是基于隨機樹的心電信號快速身份識別方法中的原始的心電信號圖濾波處理后的示意圖;圖5是基于隨機樹的心電信號快速身份識別方法中的經(jīng)過濾波處理后的瞬時頻率提取到的瞬時相位圖;圖6是基于隨機樹的心電信號快速身份識別方法中提取到的極大值點的示意圖;圖7是基于隨機樹的心電信號快速身份識別方法中,在檢測到極致點的時間位置的附近,尋找經(jīng)過濾波后的原始波形的極值點,找到的尖峰狀波的波峰圖。具體實施方式結合圖1至圖7,對本發(fā)明作進一步地說明:基于隨機樹的心電信號快速身份識別方法,包括如下步驟:S100、心電信號預處理步驟,對采集的心電信號進行濾波、去噪處理,提取心電信號的瞬時頻率,在瞬時頻率上尋找極大值點,再在極大值附近尋找尖峰狀波的波峰。截取出每次尖峰狀波的波峰間期的波形,調整每個波形的長度,將每個波形變?yōu)楣潭ㄩL度;S101、識別模型的計算步驟,把截取好的心跳數(shù)據(jù)分為屬于用戶的一類及不屬于用戶的一類,使用固定長度后的單次尖峰狀波的波峰間期波形數(shù)據(jù),以及該次心跳的時間長度作為特征來分類;S102、構建二叉樹狀分類器對心跳數(shù)據(jù)進行分類,樹的根節(jié)點對應所有的數(shù)據(jù),以根節(jié)點為例,隨機選取特征維度和閾值,把該節(jié)點對應的數(shù)據(jù)分為兩類,用分裂后信息熵最小的一次作為實際分裂閾值;S103、從根節(jié)點開始,對數(shù)據(jù)進行分裂,當節(jié)點的深度到達預設值16層時,或者當節(jié)點對應的數(shù)據(jù)量小于10個時,或者當節(jié)點對應的數(shù)據(jù)全屬于用戶或全不屬于用戶時,停止分裂;S104、識別模型的使用,對于需要判斷身份的心電信號,先對其進行預處理操作,然后將提取到的一次心跳數(shù)據(jù)輸入到建立好的二叉樹狀模型中,從根節(jié)點開始,利用根節(jié)點記錄的特征維度與閾值,查找到葉子節(jié)點為止,判斷心跳數(shù)據(jù)位于子節(jié)點的位置,若該葉子節(jié)點屬于該用戶,則認為輸入的心跳數(shù)據(jù)屬于該用戶,反之則不屬于。所述步驟S100中,通常情況下,原始的心電信號如圖3所示,對采集的心電信號采用FIR帶通濾波器濾波,使用Fstop1=1Hz,F(xiàn)pass1=2Hz,F(xiàn)pass2=99Hz,F(xiàn)stop2=100Hz的帶通Equiripple濾波器對原始心電信號進行濾波,結合圖4,雖然這種方法會去除一些心電的有效信號,但是其去除絕大多數(shù)其它與心電混合在一起的信號的干擾,能有效提高后續(xù)識別的精度;將濾波后信號的幅值調整到[1,2]區(qū)間,將該信號進行希爾波特變換,提取瞬時頻率,將調整后的信號與進行卷積,得到對應的對偶信號,以對偶信號為虛部,調整后的信號為實部,計算該信號對應的瞬時相位,對相位求導,得到瞬時頻率。提取到的瞬時相位如圖5所示;取瞬時頻率信號最大值的二分之一作為閾值,尋找所有幅值大于閾值的極大值點,提取到的極大值點如圖6所示,方法如下:對瞬時頻率信號進行差分,若差分信號某個點幅值其大于零,后一個采樣點幅值小于零,且其差分前信號的幅值大于閾值,則其為所需的極大值點,在檢測到極致點的時間位置的附近,尋找經(jīng)過濾波后的原始波形的極值點,找到了尖峰狀波的波峰。結合圖7所示;對尖峰狀波的波峰間期時間長度進行提取,該提取方法為:設采樣率為Fs,則一個尖峰狀波的波峰間期的采樣間隔數(shù)量除以采樣率即為尖峰狀波的波峰間期時間長度;對于尖峰狀波的波峰波形數(shù)據(jù)的長度放縮,其方法為:設尖峰狀波的波峰間期的波形數(shù)據(jù)為yi,其長度為N,構造以1/(N-1)為步長,從0到1的數(shù)組xi,設波形固定的長度為M,構造從0到1,步長為1/(M-1)的數(shù)組xii,xi與yi一一對應,以xi、yi為標準,尋找xii對應的yii,M的值為20,計算yii每個元素的詳細步驟如下:對于xii里每個元素,尋找其在xi的區(qū)間,設xii的元素為x,其對應帶求的yii的元素為y,x所在區(qū)間為[x1,x2],x1與x2相鄰,且屬于xi,x1與yi里的元素y1對應,x2與yi里的元素y2對應,則y=y(tǒng)1+(x-x1)*(y1-y2)/(x1-x2)對xii里的所有元素執(zhí)行上述操作,即可計算出yii,yii即為固定長度后的尖峰狀波的波峰間期波形數(shù)據(jù),其長度為20。所述步驟S101中,識別模型為二值分類器,其可分辨輸入的數(shù)據(jù)是否屬于某用戶,利用機器學習的方法,建立以樹狀的識別模型,在預處理中得到了固定長度后的尖峰狀波的波峰間期數(shù)據(jù),和該尖峰狀波的波峰間期的時間長度。固定長度的波形數(shù)據(jù)為20維,時間長度為1維,以這21維作為特征,構建樹狀模型。記錄一名用戶的5分鐘靜息狀態(tài)下的心電數(shù)據(jù),利用前面預處理的方法,得到該名用戶的每次尖峰狀波的波峰間期波形(長度固定后的)和每次尖峰狀波的波峰間期波形對應的時間長度,再記錄多名用戶的心電數(shù)據(jù),并做同樣處理,記屬于用戶的數(shù)據(jù)的類別為1,不屬于的類別為0,設一個尖峰狀波的波峰間期波形數(shù)據(jù)、以及對應的尖峰狀波的波峰時間長度,和該尖峰狀波的波峰間期的類別構成一個樣本。構建二叉樹狀分類模型中,包括:用于記錄節(jié)點編號字段Node_ID,節(jié)點深度的字段Depth,用于記錄左子節(jié)點編號的字段L_child,用于記錄右子節(jié)點編號的字段R_child,選取維度的字段Dim,閾值的字段Thrs,節(jié)點類別的字段Label,和節(jié)點屬性的字段Is_leaf;樣本的屬性如下表所示:Wave與Time構成一個樣本的特征,特征為21維。設所有的樣本存儲于線性的存儲結構中,構建該結構的存儲索引。索引為一整型數(shù)據(jù)。樹狀結構由節(jié)點構成,為二叉樹。節(jié)點的所有屬性如下:構建二叉樹狀分類模型的步驟如下:a、設置模型訓練參數(shù):最大深度值為16、節(jié)點數(shù)據(jù)最少量值為10、隨機次數(shù)N=10;b、構建存儲樹的空鏈表,鏈表里的元素均為節(jié)點,鏈表下表從1開始;構建整形變量Point,用以標記當前處理節(jié)點的下表;構建整形變量Count,用以標記鏈表的長度;c、構建根節(jié)點,將所有的數(shù)據(jù)分配給該節(jié)點,將其深度設置為0;將所有數(shù)據(jù)配置給該節(jié)點:令節(jié)點對應樣本的索引的開始下標Data_start=1,節(jié)點對應樣本的數(shù)量Data_length=所有樣本數(shù)量,節(jié)點的屬性Is_leaf=0;提取該節(jié)點對應的所有樣本的Type,計算信息熵;令該節(jié)點的數(shù)據(jù)的類別Label,為其對應樣本的Type的眾數(shù);d、將根節(jié)點插入鏈表的后部,令Point=1,Count=1;e、當Point>Count時,識別模型構建完成;f、檢驗下標為Point的節(jié)點深度是否大于最大深度,且節(jié)點數(shù)據(jù)量小于節(jié)點數(shù)據(jù)最少量,如果是,則認為該節(jié)點為葉子節(jié)點,把節(jié)點的屬性Is_leaf配置為1,Point=Point+1;并跳轉到步驟d;g、取出Point對應節(jié)點的對應的樣本下標,再取出下標對應的樣本;在這些樣本上隨機N次維數(shù),每次選取維度時,在該維度上隨機取N次閾值,閾值在該維度數(shù)據(jù)的最大值與最小值之間;嘗試以每組維度與特征對樣本,進行分割,分為兩份,分別計算兩類的信息熵,把兩類信息熵按照數(shù)據(jù)量大小加權起來,在這N2次嘗試中,取出加權信息熵最小時對應的閾值與維度,如果最小的加權信息熵比分裂前信息熵小,就對該節(jié)點分裂,把Point對應節(jié)點所選用于分裂數(shù)據(jù)的維度Dim配置為選取的維度,把選取維度對應的閾值Thrs配置為選取的閾值;否則,認為該節(jié)點為葉子節(jié)點,把節(jié)點的屬性Is_leaf配置為1,Point=Point+1;并跳轉到步驟d;h、把Point對應的樣本,按照前面提取的維度與閾值分裂為兩份,第一份為小于閾值的樣本,第二份與大于等于閾值的樣本,建立新的兩個節(jié)點,把這兩個節(jié)點插入到存儲樹的鏈表的后面。對于第一個插入的節(jié)點、也就是下標為Count+1的節(jié)點,將其Depth配置為Point節(jié)點的深度Depth的值加1,檢驗下標為Count+1節(jié)點深度是否大于最大深度,且節(jié)點數(shù)據(jù)量是否小于節(jié)點數(shù)據(jù)最少量,如果是,就將其節(jié)點的屬性Is_leaf屬性配置為1,否則配置為0;將該節(jié)點對應樣本的索引的開始下標Data_start屬性配置為Point節(jié)點對應樣本的索引的開始下標Data_start值,并將該節(jié)點對應樣本的數(shù)量Data_length屬性配置為分裂后第一份數(shù)據(jù)的長度,將節(jié)點數(shù)據(jù)的類別Label屬性配置為第一份數(shù)據(jù)Tpye的眾數(shù);對于Count+1的節(jié)點,將節(jié)點的深度Depth配置為Point對應節(jié)點的深度Depth的值加1,檢驗其深度是否大于最大深度,且節(jié)點數(shù)據(jù)量是否小于節(jié)點數(shù)據(jù)最少量,如果是,就將節(jié)點的屬性Is_leaf屬性配置為1,否則配置為0;將節(jié)點對應樣本的索引的開始下標Data_start屬性配置為Point對應節(jié)點對應樣本的索引的開始下標Data_start值加第一份數(shù)據(jù)的長度,并將該節(jié)點對應樣本的數(shù)量Data_length屬性配置為分裂后第二份數(shù)據(jù)的長度,將節(jié)點數(shù)據(jù)的類別Label屬性配置為第二份數(shù)據(jù)Tpye的眾數(shù),將下標為Point的節(jié)點的記錄左子節(jié)點編號L_child配置為Count+1;記錄右子節(jié)點編號R_child配置為Count+2,將取出樣本在下標數(shù)據(jù)里對應位置的下標進行重排序;將第一份數(shù)據(jù)的下標排在前面,第二份數(shù)據(jù)的下標排在后面,令Count=Count+2;令Point=Point+1;并跳轉到步驟d。所述步驟c中,信息熵計算方法如下:統(tǒng)計一個數(shù)據(jù)集里,每類數(shù)據(jù)出現(xiàn)的概率pi,i為類別標號,信息熵=Σ-pilog2(pi)屬于用戶類數(shù)據(jù)的概率為p,則信息熵計算公式變?yōu)椋盒畔㈧兀絧·log2(p)+(1-p)log2(1-p)在計算識別模型前,先計算出當p為0,0.1,0.2,0.3...,1時對應的信息熵,將其存儲在計算機內存里,之后在計算識別模型時,使用預先計算好的信息熵做二次樣條插值。所述步驟S104中,對于待識別身份的心電數(shù)據(jù),先對其進行預處理,取出1次尖峰狀波的波峰間期固定后的波形數(shù)據(jù),以及對應的尖峰狀波的波峰間期時間長度,組成21維的特征樣本。構建Point,令Point=1;按照下標為Point的節(jié)點里的屬性用于分裂數(shù)據(jù)的維度Dim,選取21維數(shù)據(jù)中用于分裂數(shù)據(jù)的維度Dim維的數(shù)據(jù),并將其與節(jié)點的屬性選取維度對應的閾值Thrs比較,如果小于選取維度對應的閾值Thrs,則令Point等于節(jié)點用于記錄左子節(jié)點編號L_child屬性,否則令其等于用于記錄右子節(jié)點編號R_child屬性,重復這一過程,直到下標為Point的節(jié)點是葉子節(jié)點位置;提取下標為Point的節(jié)點數(shù)據(jù)的類別Label屬性,如果節(jié)點數(shù)據(jù)的類別Label等于1,則認為這一次心跳的數(shù)據(jù)屬于該模型對應的用戶,否則不屬于,以此判定識別結果。現(xiàn)有的尖峰狀波的波峰,就是R波的檢測方法多種多樣,包括小波變換法、差分閾值法、神經(jīng)網(wǎng)絡法、線性自適應白噪聲濾波及帶通濾波器法等,采用本發(fā)明的R波的檢測方法的識別率更高,R波檢測方法識別率對:現(xiàn)有的心電身份之別方法較多,包括奇異度相似度法、DTW模板匹配法、FFT-匹配算法、BP神經(jīng)網(wǎng)絡法及距離判別法等,采用本發(fā)明的心電身份識別方法識別率更高,而且識別時間更短,心電身份識別方法對比:方法識別率識別時間本文方法99.9%1.8s奇異度相似度法97.82%8sDTW模板匹配法97.3%4.4sFFT-匹配算法97.1%10sBP神經(jīng)網(wǎng)絡法96.3%未提及距離判別法95%未提及當前第1頁1 2 3