關於活體檢測的一些理論方法

最近研究活體檢測,主要是針對防止身份證照片攻擊,通過提示用戶完成某些動作進行識別;

想要檢測用戶的動作,最基礎的一個前提,必須將人臉的特徵點提取出來,才能做之後的判斷;opencv自帶的方法貌似只能畫出矩形的人臉框,我們必須要準確檢測出眼睛鼻子和人臉的輪廓,從網上找了兩個人臉特徵提取庫:

  1.IntrafaceDll

  2.libfacedetect

兩個庫的共同點是,都能提取人臉68個關鍵點,這對我們的檢測提供了很有利的條件;

也各有利弊,IntrafaceDll提取相對準確,尤其是針對眨眼,張嘴等動作時,相當靈敏,但是當前網上我只找到了lib庫,沒有找到源碼,其只支持opencv246版本(和我的項目衝突);libfacedetect對於眨眼並不靈敏,張嘴效果還行,主要是引入方便,兼容性好;

好,提取68個點之後,效果大概是這樣:

好,現在我說一下活體檢測的思路把,

第一個張嘴,首先要找出嘴巴上下左右嘴脣的位置,通過上下的絕對距離/左右的絕對距離,得到一個比例,設定一個闕值,大於此值時,爲張嘴,小於則爲閉嘴;

眨眼,和張嘴的邏輯一樣,不過要分左眼和右眼;

搖頭,檢測左右臉的晃動,需要三個點,鼻子,臉最左位置,臉最右位置,鼻子到左絕對距離爲left,到右絕對距離爲right, 總距離記爲w=left+right;  當left<w/3 則判定爲向左晃動,right>w/3則判斷爲向右晃動,其他情況 爲正臉;

以上是我通過實驗總結出來的幾種方法,效果比較理想,代碼這裏就不貼了,畢竟原理最重要

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章