欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于lap算子的抵抗重放攻擊的安卓手機終端檢測方法

文檔序號:10553326閱讀:537來源:國知局
基于lap算子的抵抗重放攻擊的安卓手機終端檢測方法
【專利摘要】本發(fā)明提供了一種基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法,包括步驟1:根據(jù)不同的用戶命令獲取手機中的圖像;步驟2:檢測從手機中選中的圖像,當(dāng)檢測到人臉時,對圖像進行縮放;步驟3:從含有人臉的圖像中截取指定大小的臉部圖片;步驟4:對臉部圖片進行像素點抽取;步驟5:對抽取的像素點進行LAP特征提取;步驟6:將提取的LAP特征與支持向量機從含有多個特征的文檔中獲得的學(xué)習(xí)結(jié)果進行比較,判斷是否為重復(fù)攻擊;步驟7:將步驟1中獲取的圖像顯示在界面上,并提示判斷結(jié)果。本發(fā)明能夠有效判斷出一定時間范圍內(nèi)的重放攻擊,確保獲取到圖像并顯示于用戶界面;且具有較快的運行速率。
【專利說明】
基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及人臉識別技術(shù)領(lǐng)域,具體地,涉及一種基于LAP算子的抵抗重放攻擊的 安卓手機終端檢測方法。
【背景技術(shù)】
[0002] 隨著智能手機的普及和其功能的完善,手機中的隱私和重要信息保護亦逐漸展現(xiàn) 出其重要性。由于其使用簡便和不易竊取的特點,人臉識別這一生物識別技術(shù)愈發(fā)被人們 喜愛,甚至應(yīng)用于手機上。
[0003] 然而就目前來說,人臉識別技術(shù)的廣泛應(yīng)用仍然是伴隨著風(fēng)險的。簡單的重放攻 擊可以輕易破解人臉識別程序。2002年,Lisa Thalheim等人對FaceVACS-Logon人臉識別系 統(tǒng)進行測試時發(fā)現(xiàn),合法用戶的照片和視頻剪輯可以騙過該系統(tǒng)并通過身份認證。
[0004] 特征處理和機器學(xué)習(xí)是圖像分析的基礎(chǔ)。特征提取的目的在于壓縮和提取圖像中 的有用信息便于計算機處理和學(xué)習(xí),而機器學(xué)習(xí)則是指計算機獲取新知識和新技能,并識 別現(xiàn)有知識的能力。
[0005] 經(jīng)探索
[0006]專利公開號:CN105138981A,名稱為"活體檢測系統(tǒng)和方法",該方法利用了溫度傳 感設(shè)備。在檢測出人臉區(qū)域后,溫度傳感設(shè)備檢測人臉區(qū)域和周圍環(huán)境區(qū)域的溫度差異,可 抵抗照片攻擊和視頻攻擊。但是該方法需要額外的溫度傳感器,并不適用于移動應(yīng)用,因為 為手機增加高精度的傳感器將是對手機的設(shè)計成本以及耗電效率的巨大考驗。
[0007] 專利公開號:CN101908140A,名稱為"一種在人臉識別中應(yīng)用的活體檢測方法",該 方法提出了一種利用光流場計算眼部運動的方法。其設(shè)計的系統(tǒng)會提示用戶正面面對攝像 頭,在用戶姿態(tài)調(diào)整的時候利用Adaboost級聯(lián)分類器精確定位眼框區(qū)域,然后選定相鄰兩 幀計算光流,真實人臉將產(chǎn)生較大光流,而照片無論如何旋轉(zhuǎn)至多產(chǎn)生微量光流。這種方法 在活體檢測中也取得了較好的效果。但是這種方法要求用戶進行特殊配合,如果用戶沒有 完成該動作或者動作不標(biāo)準(zhǔn),有可能造成無法判決的情況。
[0008] 專利公開號:CN105354554A,名稱為"基于顏色和奇異值特征的人臉活體檢測方 法"的活體檢測方法中提出了一種可以通過顏色和奇異值檢測活體的辦法。他們對圖像分 塊后提取顏色和奇異值特征,利用支持向量機模型進行訓(xùn)練,取得了較好的分類效果。但是 這種方法限定在處理器能力較高的計算機上,而且準(zhǔn)確度僅有75%,很有可能造成誤判。
[0009] 本發(fā)明與上述技術(shù)方案的不同在于,本發(fā)明很大程度上縮短了 LAP特征提取所用 時間,且較少損失識別活體成功率,在數(shù)據(jù)庫中測試的準(zhǔn)確率高達86%,即提高了處理器處 理每張照片的時間,使其能夠在快速高效地應(yīng)對重放攻擊和活體檢測。因而可以在手機處 理器上進行照片重放攻擊的識別。這個算法被移植到android平臺上,并在各機型下測試成 功可行。

【發(fā)明內(nèi)容】

[0010] 針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種基于LAP算子的抵抗重放攻擊 的安卓手機終端檢測方法。
[0011] 根據(jù)本發(fā)明提供的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法,包括 如下步驟:
[0012] 步驟1:根據(jù)不同的用戶命令獲取手機中的圖像;
[0013] 步驟2:檢測從手機中選中的圖像,當(dāng)檢測到人臉時,對圖像進行縮放;
[0014]步驟3:從含有人臉的圖像中截取指定大小的臉部圖片;
[0015] 步驟4:對臉部圖片進行像素點抽??;
[0016] 步驟5:對步驟4中抽取的像素點進行LAP特征提?。?br>[0017]步驟6:將提取的LAP特征與支持向量機從含有多個特征的文檔中獲得的學(xué)習(xí)結(jié)果 進行比較,判斷是否為重復(fù)攻擊;
[0018] 步驟7:將步驟1中獲取的圖像顯示在界面上,并提示判斷結(jié)果。
[0019] 優(yōu)選地,步驟1中的用戶命令包括:
[0020] 命令A(yù):當(dāng)用戶命令為:拍照時,開啟手機的攝像機,待用戶拍攝照片后,獲取圖像 并將圖像存至SD卡內(nèi),當(dāng)存在圖像uri的返還值為空時,貝lj獲取到相機圖片的bitmap數(shù)據(jù), 將bitmap的uri返還回;
[0021]命令B:當(dāng)用戶命令為:相冊時,打開SD卡并讀入所有圖片,讓用戶進行選取;當(dāng)存 在無法獲得圖片路徑僅給出索引值時,則根據(jù)該索引值獲得正確的圖片路徑。
[0022]優(yōu)選地,所述步驟2包括:
[0023]步驟2.1:加載哈爾級聯(lián)分類器作為人臉檢測的判據(jù);
[0024]步驟2.2:檢測從手機中選中的圖像,當(dāng)檢測到人臉時,利用OpenCV的人臉識別函 數(shù)detectMultiScale與分類器識別圖片中的人臉,得到一個包含該人臉的矩形,并獲得矩 形的寬與高,其中,該人臉識別函數(shù)限定識別到的矩形的長寬比為1;
[0025]步驟2.3:從支持向量機的訓(xùn)練庫中抽取十張樣本圖片,用OpenCV的人臉識別函數(shù) detectMultiScale分別檢測出圖片中的人臉大小,然后計算出人臉大小的平均值為645像 素,再由人臉大小的平均值算出縮放系數(shù),并利用OpenCV的縮放函數(shù)cvResize將手機中的 圖片放大或縮小,使圖片中的人臉大小達到訓(xùn)練庫的平均水平。
[0026]優(yōu)選地,所述步驟3包括:
[0027]步驟3.1:根據(jù)步驟2.2中人臉的矩形,利用矩形左上角坐標(biāo)和長寬算出矩形的中 心,也即人臉的中心;
[0028]步驟3.2:以人臉的中心劃出指定的720X1280像素區(qū)域,并截取作為臉部圖片;當(dāng) 選中的圖像本身小于指定的720X1280像素,則報錯,并結(jié)束檢測過程;當(dāng)人臉中心靠近邊 界而導(dǎo)致指定的區(qū)域中某一邊界超出了選中的圖像的邊界,則將邊界向越界方向的反方向 平移,保證截取的臉部圖片的大小為720X1280像素。
[0029] 優(yōu)選地,所述步驟4包括:對臉部圖片按照行列抽取像素點,即每5行抽取一行,每5 列抽取一列。
[0030] 優(yōu)選地,所述步驟5包括:
[0031] 步驟5.1:將臉部壓縮圖片中的待測像素點為極點,建立極坐標(biāo),取半徑為1的像素 的圓周;
[0032] 步驟5.2:將所述像素的圓周進行九等分后,利用雙線性插值法計算出從極軸上起 始點開始的九點像素值;
[0033] 步驟5.3:將9個像素值按照公式(1)九點作離散傅立葉變換,得到對應(yīng)的離散復(fù)數(shù) 序列,依次標(biāo)號〇、1、3......8;
V ]
[0035] 式中:Pk表示離散傅立葉變化后得到的第k個復(fù)數(shù)序列,p(n)表示步驟5.2中計算 得到的第n個像素值序列,N表示表變換后的序列的長度,即N=9;
[0036] 步驟5.4:將Pk實部與虛部分離并按照公式(2)組成長度為8的離散序列C;
[0037] C= {Re(P4) Jm(P4) ,Re(P3), Im(P3) ,Re(P2), Im(P2) ,Re(Pi), Im(Pi)} (2)
[0038]式中:P4、P3、P2、Pi*別表示離散傅立葉變化后得到的第4、3、2、1個復(fù)數(shù)序列,Re (?)表示取實部運算符,Im( ?)表示取虛部運算符;
[0039] 步驟5.5:按照公式(3)根據(jù)&的符號將實數(shù)序列轉(zhuǎn)化為八位二進制序列b(k),Ck表 示離散序列C中的第k個序列; \\JfC, >0
[0040] n)
[otherwise
[0041]步驟5.6:根據(jù)公式(4)將八位二進制序列轉(zhuǎn)化為十進制數(shù),即為該點的LAP值
[0042] LAP = ^\b(k)2k 1 f4J. k-0
[0043] 本發(fā)明提供的方法與現(xiàn)有技術(shù)相比,具有如下的有益效果:
[0044] 1、本發(fā)明提供的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法使手機處 理器能夠在可接受的時間范圍內(nèi)有效地判斷重放攻擊;并同時對圖片人臉識別、截取以及 放縮預(yù)處理,確保獲取特征與機器學(xué)習(xí)原始特征相符。
[0045] 2、本發(fā)明提供的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法能夠適用 于不同類型的手機,確保獲取到圖像并顯示于用戶界面;經(jīng)驗證本發(fā)明在簡單場景中能較 好地判斷出人臉重放攻擊,并有較快的運行速率。
【附圖說明】
[0046]通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、 目的和優(yōu)點將會變得更明顯:
[0047] 圖1為本發(fā)明提供的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法的流 程圖;
[0048] 圖2為本發(fā)明的訓(xùn)練庫建立流程圖。
【具體實施方式】
[0049]下面結(jié)合具體實施例對本發(fā)明進行詳細說明。以下實施例將有助于本領(lǐng)域的技術(shù) 人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對本領(lǐng)域的普通技術(shù) 人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變化和改進。這些都屬于本發(fā)明 的保護范圍。
[0050] 根據(jù)本發(fā)明提供的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法,使用 LAP算子作為圖像特征,SVM作為分類器,包括對視頻圖像中的至少一幀圖像執(zhí)行如下步驟:
[0051] 步驟S1:根據(jù)用戶命令獲取圖像,適用于各手機機型;
[0052]步驟S2:檢測人臉并放縮圖片,使得人臉大小在放縮后為645 X 645;
[0053]步驟S3:在包含人臉的區(qū)域內(nèi)截取720X1280大小的圖片;
[0054]步驟S4:按照行列抽取像素點,每5行抽取一行,每5列抽取一列,將原圖壓縮為原 來的1/25;
[0055]步驟S5:對壓縮后的圖像進行LAP特征提取;
[0056]步驟S6:對提取的特征與支持向量機從含有40個特征的文檔中獲得的學(xué)習(xí)結(jié)果進 行比較,判斷是否為重復(fù)攻擊。
[0057]步驟S7:將獲取的圖像按照主流手機的800X480分辨率進行壓縮,以防止內(nèi)存溢 出。將壓縮后的圖像顯示在用戶界面上,并提示判斷結(jié)果。
[0058]所述根據(jù)用戶命令獲取圖像的不同判斷:
[0059] 命令A(yù):當(dāng)用戶命令為"拍照"時,開啟攝像機。待用戶拍攝照片后,獲取圖像并將將 圖像存至SD卡內(nèi)。如若有些機型圖像uri的返還值為空,則需進一步獲取到相機圖片的 b i tmap數(shù)據(jù),將b i tmap的ur i返還。
[0060] 命令B:當(dāng)用戶命令為"相冊"時,打開SD卡并讀入所有圖片,讓用戶選取。如若有些 機型無法直接獲得圖片路徑而僅僅給出索引值,則根據(jù)此索引值獲得正確的圖片路徑。
[0061] 所述檢測人臉的算法如下:
[0062] 步驟S2.1:加載哈爾級聯(lián)分類器作為人臉檢測的判據(jù);
[0063 ] 步驟S2.2 :利用OpenCV的人臉識別函數(shù)de te c tMu ItiScale與分類器識別圖片中的 人臉,得到一個包含該人臉的矩形,并獲得其寬與高,該函數(shù)限定識別到的矩形的長寬比為 1;
[0064]步驟S2.3:由目標(biāo)臉的大小645像素算出縮放系數(shù),再利用OpenCV的縮放函數(shù) cvResize將圖片放大或縮小。
[0065]所述放縮圖片的算法如下:
[0066]步驟S3.1:再次檢測人臉。這次獲得人臉矩形后,利用矩形左上角坐標(biāo)和長寬算出 矩形的中心,也即人臉的中心;
[0067]步驟S3.2:以人臉的中心所截圖片的中心,計算720X1280的區(qū)域。如果圖片本身 小于該大小,則報錯,不再進行后續(xù)的步驟。如果人臉中心較靠近邊界而導(dǎo)致該區(qū)域某一邊 界超出了原圖的邊界,則將邊界向越界方向的反方向平移,保證圖片的大小為720X1280。 [0068] 所述步驟S4,包括如下步驟:
[0069] 步驟S4.1:對圖像的待測像素點周圍3X3的像素點建立框架;
[0070] 步驟S4.2:LAP提取的僅僅是局部紋理信息,與整體無關(guān),所以對每張圖片進行按 行按列抽樣,即每5行抽取一行,每5列抽取一列,這樣就將運算時間縮短為原始LAP的1/25。
[0071] 所述步驟S5,包括如下步驟:
[0072] 步驟S5.1:以待測像素點為極點建極坐標(biāo),取半徑為1像素的圓周;
[0073] 步驟S5.2:九等分后利用雙線性插值法計算出從極軸上起始點開始的九點像素 值;
[0074]步驟S5.3:將9個像素值按照公式(1)作離散傅立葉變換,得到對應(yīng)的離散復(fù)數(shù)序 列,依次標(biāo)號〇、1、3......8;

[0076] 步驟S5.4:將其實部與虛部分離并按照公式(2)組成長度為8的離散序列;
[0077] C= {Re(P4),Im(P4),Re(P3),Im(P3),Re(P2),Im(P 2)) .Re^),加沾)} (2)
[0078]步驟S5.5:按照公式(3)根據(jù)每個實數(shù)是否為正將實數(shù)序列轉(zhuǎn)化為八位二進制數(shù)。
[],//(:;? >0
[0079] h(k) = \ \ oiherwise ( 3 )
[0080] 步驟S5.6:根據(jù)公式(4)將八位二進制序列轉(zhuǎn)化為十進制數(shù),即為該點的LAP值。
[0081 ] LAP^'rW" ' (4) k=0
[0082] 采用LAP作為紋理描述算子,使用支持向量機作為分類器;本發(fā)明建立的訓(xùn)練庫以 中國科學(xué)院自動化研究所創(chuàng)建的視頻攻擊人臉庫(CASIA-FASD)為基礎(chǔ),對其中特定的圖片 進行處理,建立了自己的訓(xùn)練庫,提取LAP特征后進行訓(xùn)練。對于待檢測的照片,我們提取 LAP紋理特征,與訓(xùn)練好的支持向量機模型進行比對,得出檢測結(jié)果。
[0083] 本發(fā)明設(shè)計的基于應(yīng)用于安卓手機的抵抗重放攻擊的檢測算法,是通過以下方法 實現(xiàn)的:
[0084] 在建立訓(xùn)練庫時,數(shù)據(jù)庫里的視頻有幾種不同的規(guī)模,本發(fā)明選取的是每一幀大 小為720 X 1280像素的視頻,首先使用OpenCV庫的cvCaptureFromAVI ()函數(shù)將視頻中的全 部幀都讀取出來,然后使用c vQu ery Frame ()函數(shù)讀取幀序列中的一幀。因為有些視頻經(jīng)過 壓縮,第一幀沒有圖像,所以所有視頻均連續(xù)讀取五幀,將第五幀作為采樣結(jié)果。將數(shù)據(jù)庫 中test_release中的所有單幀大小為720X1280像素視頻都做如上處理,則建立了相應(yīng)的 數(shù)據(jù)庫。
[0085] 在檢測人臉與放縮圖片時,首先讀入人臉檢測的分類器,哈爾級聯(lián)分類器,它存在 haar_cascade_alt ? xml 中,通過調(diào)用OpenCV中已有的CascadeClassifier類中的 load()方 法即可將圖片讀入。為了使圖片特征更加清晰,采用cvtColorO函數(shù)將圖片轉(zhuǎn)化為灰度圖, 并用69皿1丨26把81:()函數(shù)將灰度值歸一化。隨后就可憐調(diào)用OpenCV中的detectMultiScale ()方法檢測出圖中所有的人臉,每個人臉由包含該臉的一個矩形表示,并存在一個vector 中。如果檢測不到臉,則返回錯誤值2。為了使檢測到的臉惟一,在該函數(shù)中加入了閾值Size (200,200),表示小于該尺寸(像素)的臉都忽略,實際上可以過濾掉絕大多數(shù)環(huán)境背景的干 擾。
[0086] 然后對圖片進行縮放。從上一步提取出的臉中得到其尺寸,同時用同樣的方法可 以算出標(biāo)準(zhǔn)訓(xùn)練庫中人臉的平均尺寸是645像素,因此利用cvResizeO函數(shù)將人臉按比例 放縮到645像素。
[0087]由于標(biāo)準(zhǔn)訓(xùn)練庫中圖的尺寸為720X 1280像素,所以再下一步從放縮后的圖片中 截取一個包含人臉的大小為720X1280的圖片。
[0088]首先,判斷放縮后的圖片尺寸,如果寬小于720或高小于1280,那么這樣的圖無法 截取,返回錯誤值4。產(chǎn)生這種情況的原因是臉在圖中占比過大,這樣將臉縮小后整個圖也 被縮小過多而無法截取。
[0089]其次,要截取的各邊界的坐標(biāo)(左上角為原點向右向下為x,y軸正方向),再次檢測 放縮后的圖的人臉,然后可以得到人臉的中心。中心橫坐標(biāo)減去360像素為左邊界,加上360 像素為右邊界。由于已經(jīng)判斷過寬大于等于720像素,那么只剩下一種例外情況就是有一邊 的邊界超出了原圖的邊界而另一邊在原圖內(nèi)。這時將左右邊界同步向越界一側(cè)的反方向平 移,直至兩側(cè)都不越界。在調(diào)整好x方向后,用同樣的方法調(diào)整y方向。在得到新圖邊界后就 可以用setlmageROK)設(shè)定這個邊界,再用cvCopyO函數(shù)將該區(qū)域拷貝到新圖。然后返回新 圖用于計算LAP特征值。
[0090] 在計算LAP特征值時,首先將圖像轉(zhuǎn)化為灰度圖并存儲在一個Ipllmage對象中,然 后使用imagedata屬性讀取出圖片的灰度值。我們?yōu)榱藴p少運算時間,將40°,80°,120°, 160°,200°,240°,280°,320°,0°的sin和cos值都作為常量數(shù)組預(yù)先保存起來,然后利用雙 線性插值法計算出像素點九點周圍的像素值,接著使用我們自己編寫的基于complex模版 類離散傅立葉變換函數(shù)dft(),對這9點作離散傅立葉變換,然后根據(jù)前文公式(3),將其轉(zhuǎn) 化為8位二進制序列,然后根據(jù)公式(4)將其轉(zhuǎn)化為十進制數(shù)字,作為該點的LAP值。
[0091] 為了使運算時間變成用戶可以接受的范圍,按照行列對圖片進行抽樣,每5行抽取 一個像素點,每5列抽取一個像素點,然后僅計算被抽中的像素點的LAP值,并統(tǒng)計入這張圖 的LAP直方圖中。對所有圖片都采取這個操作,在經(jīng)過之前的人臉識別定位和圖片放縮后, 所有圖片都擁有同一尺寸,這樣就免去了均一化處理。
[0092] 在訓(xùn)練庫中的圖像都被處理完后,開始對支持向量機模型進行訓(xùn)練。建立CvMat類 型的變量labelsMat和trainingDataMat,分別存儲訓(xùn)練庫中圖像的類別和LAP直方圖,其 中,真實人臉為正樣本,標(biāo)記為1,欺騙人臉為負樣本,標(biāo)記為-1。然后設(shè)置SVM參數(shù),核函數(shù) 選擇線性,最大迭代次數(shù)選擇1400次。最后建立CvSVM的對象SVM,調(diào)用trainO函數(shù)對其進 行訓(xùn)練。對于待檢測的照片,我們將其特征讀入CvMa t類型的samp 1 eDataMa t,然后調(diào)用 pr ed i c t ()函數(shù)輸出對該照片的檢測結(jié)果。
[0093] 在完成人臉檢測、截取和放縮,并通過優(yōu)化的LAP算法與支持向量機判斷出人臉 后,進行核心算法的移植,使用的工具是Native Development Kit(NDK) Android上層的 Application和Application Framework都是使用JAVA編寫,底層包括系統(tǒng)和使用眾多的 Libraries都是C/C++編寫的,內(nèi)核是Linux。所以上層JAVA要調(diào)用底層的C/C++函數(shù)庫必須 通過JAVA的JNI來實現(xiàn)。NDK的作用是將C/C++代碼編譯封裝成.so動態(tài)鏈接庫。
[0094] Android應(yīng)用項目目錄的app-src-main下。在此文件夾下建立一個jni文件夾用于 存放所有所需的C/C++的原生代碼。在cpp文件內(nèi)寫入接口函數(shù)。extern"C"{}表明調(diào)用C語 言。JNIEXP0RT后寫輸出變量類型,JNICALL后寫]\^:1仙(31:;[¥;^7中六(3;[1:;[¥;^7的代€6代1106和 輸入函數(shù)名稱,用短線?連接。括號中JNIEnv*,jcla SS是必須保留的,","之后是輸入變量 類型和變量名稱。所有的輸入變量類型都要加上"j",代表JAVA。
[0095] JAVA和C/C++的字符串并不是完全一樣。GetStringUTFChars的作用是將傳進來的 prompt (j string類型)轉(zhuǎn)換成為UTF-8的格式,使之能夠在本地方法中使用。使用完轉(zhuǎn)換之 后的對象后,需要顯示調(diào)用1^1688651:1';[1^17^0^18方法,讓]711釋放轉(zhuǎn)換成17^-8的81:1';[1^ 的對象的空間,如果不顯示的調(diào)用的話,JVM中會一直保存該對象,導(dǎo)致內(nèi)存溢出。
[0096] JAVA要調(diào)用底層的C/C++函數(shù)庫,必須通過.so動態(tài)庫,即由NDK將C++自動打包封 裝生成的1 inux宏文件,可以被JAVA層直接調(diào)用。為了生成.so動態(tài)庫,先使用javah自動生 成jni方法對應(yīng)的頭文件。在AS提供的Teminal或者cmd.exe命令行程序中輸入javah-d%輸 出.h文件的路徑%-classpath %編譯的文件路徑名% %文件名%。
[0097] make文件用于保存編譯的配置信息,即指導(dǎo)編譯器如何來編譯程序,并決定編譯 的結(jié)果是什么。對jni文件夾下2個make文件,Android, mk和Application, mk,進行編譯。只 需注意:Include后寫入OpenCV for Android中make文件的路徑,只有這樣才能調(diào)用OpenCV 的庫函數(shù);L0CAL_M0DULE的等號右邊寫庫的名詞,與在JAVA文件中申明的一樣;L0CAL_SRC_ FILES的等號右邊列出jni文件夾中待編譯的所有C/C++文件,無需添加后綴。在編譯 八口口1;[031:;[011.1]^時,注意默認情況下,冊1(的編譯系統(tǒng)會為〃31'1116313;[ /1131生成機器代碼。而 為了在ARMv7的設(shè)備上支持硬件FPU指令,可以使用了APP_ABI: = armeabi-v7a。
[0098] 在jni文件目錄下,在Teminal或者cmd. exe命令行程序中輸入ndk-build命令,這 樣就由NDK自動生成了 .so動態(tài)庫。最后,在JAVA層調(diào)用這個動態(tài)庫:在主方法中用 loadLibrary ()方法調(diào)用ImgFun. so動態(tài)庫,并申明接口函數(shù)。當(dāng)用戶命令為"拍照"時,開啟 攝像機。
[0099] 程序功能上分為兩種:拍照后判斷并存儲,從相冊取出圖像并判斷。具體流程可以 參照圖1。
[0100] 當(dāng)用戶命令為拍照時:待用戶拍攝照片后,獲取圖像并將將圖像存至SD卡內(nèi)。如若 有些機型圖像ur i的返還值為空,貝lj需進一步獲取到相機圖片的b i tmap數(shù)據(jù),將b i tmap的 uri返還;當(dāng)用戶命令為"相冊"時,打開SD卡并讀入所有圖片,讓用戶選取。如若有些機型無 法直接獲得圖片路徑而僅僅給出索引值,則根據(jù)此索引值獲得正確的圖片路徑。
[0101] 將界面優(yōu)化,建立一個較為完善成熟的應(yīng)用程序:
[0102] 重新排布元素:將按鈕移至最上端,并通過android: orientation = "horizontal" 命令使其成為一行,設(shè)置判斷結(jié)果線性布局于button下方,避免圖片大小不一而導(dǎo)致的 TextVi ew輸出框位置變化。
[0103] 設(shè)計背景和app圖標(biāo):將背景主色調(diào)設(shè)為藍色后,對應(yīng)地改變button的顏色,十六 進制顏色碼為#B0E0E6;使用Easy Paint Tool SAI程序與數(shù)位板完成app圖標(biāo)設(shè)計并替換 默認啟動圖標(biāo)i c_launcher。
[0104] 將顯不欄設(shè)為半透明:在主方法中通過getBackground() .setAlpha(lOO)方法設(shè) 置設(shè)置顯示欄半透明;待判斷得出最終結(jié)果后,調(diào)用setTextColor(Color .rgb(0,0,0))方 法設(shè)置字體黑色并通過bold命令加粗。
[0105] 改變button形狀、給button加上陰影層:在drawable資源文件夾下編寫 "shape ? xml",用corners android: radius = 〃50dip〃設(shè)置弧度以定制button形狀;利用〈/ layer-list〉偏移和疊加造成的陰影效果增加 button質(zhì)感。
[0106]重寫了拍照界面:基于谷歌的二維碼掃描開源項目zxing。已經(jīng)有前人將該項目中 有關(guān)二維碼掃描的部分單獨提取出來建立了另一個開源項目ZXing-lib。我們在該項目的 基礎(chǔ)上對CaptureActivity改進。首先注釋掉原有的二維碼掃描功能。只需在 CaptureActivityHandler 中將 activity .handleDecode()-句注釋掉就不會再調(diào)用相關(guān)的 類,這時可憐將不需要的類都從該項目移除。然后我們在負責(zé)layout的xml中加入一個 13111:1:011,在〇3口1:1^64(31:;[¥;^7中加入對該按鈕的監(jiān)聽(011(]1;[^18七61161'),如果按下按鈕,就 調(diào)用cameraManager類中的takePicture ()方法。該方法也是自己定義的一個方法,他放在 用于初始化及處理各種相機操作的cameraManager類中,該方法調(diào)用系統(tǒng)相機的 七81^?;[(31:1^6()函數(shù),并設(shè)置一個回調(diào)函數(shù)111辦68?;[(31:1^6031]^3〇1^,用于處理拍照得到的相 片。該回調(diào)函數(shù)新建一個bund 1 e,并用putBy t eArray類方法將圖片的字節(jié)數(shù)組存入bund 1 e, 最后調(diào)用主〇8口1:11代六(31:;[¥;^7中的1^11(116131111(116方法將數(shù)組傳回前一級Activity。而在 handleBundle()中,我們新建一個intent,并將回調(diào)函數(shù)傳回的bundle用putExtras方法存 入intent,最后用this. setRe suit就可以將值傳回。最后是調(diào)用f ini sh()方法結(jié)束 CaptureActivity0
[0107]以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述 特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變化或修改,這并不影 響本發(fā)明的實質(zhì)內(nèi)容。在不沖突的情況下,本申請的實施例和實施例中的特征可以任意相 互組合。
【主權(quán)項】
1. 一種基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法,其特征在于,包括如下 步驟: 步驟1:根據(jù)不同的用戶命令獲取手機中的圖像; 步驟2:檢測從手機中選中的圖像,當(dāng)檢測到人臉時,對圖像進行縮放; 步驟3:從含有人臉的圖像中截取指定大小的臉部圖片; 步驟4:對臉部圖片進行像素點抽??; 步驟5:對步驟4中抽取的像素點進行LAP特征提?。? 步驟6:將提取的LAP特征與支持向量機從含有多個特征的文檔中獲得的學(xué)習(xí)結(jié)果進行 比較,判斷是否為重復(fù)攻擊; 步驟7:將步驟1中獲取的圖像顯示在界面上,并提示判斷結(jié)果。2. 根據(jù)權(quán)利要求1所述的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法,其特 征在于,步驟1中的用戶命令包括: 命令A(yù):當(dāng)用戶命令為:拍照時,開啟手機的攝像機,待用戶拍攝照片后,獲取圖像并將 圖像存至SD卡內(nèi),當(dāng)存在圖像uri的返還值為空時,貝獲取到相機圖片的bitmap數(shù)據(jù),將 bitmap的uri返還回; 命令B:當(dāng)用戶命令為:相冊時,打開SD卡并讀入所有圖片,讓用戶進行選??;當(dāng)存在無 法獲得圖片路徑僅給出索引值時,則根據(jù)該索引值獲得正確的圖片路徑。3. 根據(jù)權(quán)利要求1所述的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法,其特 征在于,所述步驟2包括: 步驟2.1:加載哈爾級聯(lián)分類器作為人臉檢測的判據(jù); 步驟2.2:檢測從手機中選中的圖像,當(dāng)檢測到人臉時,利用化enCV的人臉識別函數(shù) detectMultiScale與分類器識別圖片中的人臉,得到一個包含該人臉的矩形,并獲得矩形 的寬與高,其中,該人臉識別函數(shù)限定識別到的矩形的長寬比為1; 步驟2.3:從支持向量機的訓(xùn)練庫中抽取十張樣本圖片,用OpenCV的人臉識別函數(shù) detectMultiScale分別檢測出圖片中的人臉大小,然后計算出人臉大小的平均值為645像 素,再由人臉大小的平均值算出縮放系數(shù),并利用化enCV的縮放函數(shù)CVResize將手機中的 圖片放大或縮小,使圖片中的人臉大小達到訓(xùn)練庫的平均水平。4. 根據(jù)權(quán)利要求2所述的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法,其特 征在于,所述步驟3包括: 步驟3.1:根據(jù)步驟2.2中人臉的矩形,利用矩形左上角坐標(biāo)和長寬算出矩形的中屯、,也 即人臉的中屯、; 步驟3.2: W人臉的中屯、劃出指定的720X1280像素區(qū)域,并截取作為臉部圖片;當(dāng)選中 的圖像本身小于指定的720 X 1280像素,則報錯,并結(jié)束檢測過程;當(dāng)人臉中屯、靠近邊界而 導(dǎo)致指定的區(qū)域中某一邊界超出了選中的圖像的邊界,則將邊界向越界方向的反方向平 移,保證截取的臉部圖片的大小為720 X 1280像素。5. 根據(jù)權(quán)利要求1所述的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法,其特 征在于,所述步驟4包括:對臉部圖片按照行列抽取像素點,即每5行抽取一行,每5列抽取一 列。6. 根據(jù)權(quán)利要求1所述的基于LAP算子的抵抗重放攻擊的安卓手機終端檢測方法,其特 征在于,所述步驟5包括: 步驟5.1:將臉部壓縮圖片中的待測像素點為極點,建立極坐標(biāo),取半徑為1的像素的圓 周; 步驟5.2:將所述像素的圓周進行九等分后,利用雙線性插值法計算出從極軸上起始點 開始的九點像素值; 步驟5.3:將9個像素值按照公式(1)九點作離散傅立葉變換,得到對應(yīng)的離散復(fù)數(shù)序 列,依次標(biāo)號〇、1、3......8:(1> 式中:Pk表示離散傅立葉變化后得到的第k個復(fù)數(shù)序列,p(n)表示步驟5.2中計算得到的 第n個像素值序列,N表示表變換后的序列的長度,即N=9; 步驟5.4:將Pk實部與虛部分離并按照公式(2)組成長度為8的離散序列C; C= {Re(P4),Im(P4),Re(P3),Im(P3),Re(P2),Im(P2) ,Re(Pi),Im(Pi)I (2) 式中:P4、P3、P2、Pi分別表示離散傅立葉變化后得到的第4、3、2、I個復(fù)數(shù)序列,Re( ?)表 示取實部運算符,Im( ?)表示取虛部運算符;步驟5.5:按照公式(3)根據(jù)Ck的符號將實數(shù)序列轉(zhuǎn)化為八位二進制序列Mk), Ck表示離 散序列C中的第k個序列; ") 步驟5.6:根據(jù)公; 轉(zhuǎn)化為十進制數(shù),即為該點的LAP值 (4)。
【文檔編號】G06K9/00GK105913024SQ201610224668
【公開日】2016年8月31日
【申請日】2016年4月12日
【發(fā)明人】孫錟鋒, 蔣興浩, 王澤鵬, 李祉菁, 李佳榮
【申請人】上海交通大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
资源县| 新民市| 遵义县| 张家口市| 宜城市| 咸丰县| 华宁县| 舞阳县| 富川| 河曲县| 安陆市| 宁强县| 横峰县| 和林格尔县| 夹江县| 晋中市| 阿巴嘎旗| 太保市| 柳河县| 托克逊县| 樟树市| 乐山市| 芦溪县| 紫云| 信丰县| 隆德县| 横山县| 伽师县| 肇源县| 钟山县| 乌恰县| 通州市| 屯门区| 阿合奇县| 江永县| 丹棱县| 荆州市| 宜兰市| 赤水市| 盐山县| 美姑县|