導航:首頁 > 源碼編譯 > 人臉識別演算法代碼java

人臉識別演算法代碼java

發布時間:2023-03-03 11:40:33

Ⅰ 人臉識別系統使用java的開發

現在主流的還是用的網路,千搜等公司的在線API,就是傳圖片過去,等接收結果就行,seetaface這個東西太復雜了。

Ⅱ 人臉識別的識別演算法

人臉識別的基本方法

人臉識別的方法很多,以下介紹一些主要的人臉識別方法。

(1)幾何特徵的人臉識別方法

幾何特徵可以是眼、鼻、嘴等的形狀和它們之間的幾何關系(如相互之間的距離)。這些演算法識別速度快,需要的內存小,但識別率較低。

(2)基於特徵臉(PCA)的人臉識別方法

特徵臉方法是基於KL變換的人臉識別方法,KL變換是圖像壓縮的一種最優正交變換。高維的圖像空間經過KL變換後得到一組新的正交基,保留其中重要的正交基,由這些基可以張成低維線性空間。如果假設人臉在這些低維線性空間的投影具有可分性,就可以將這些投影用作識別的特徵矢量,這就是特徵臉方法的基本思想。這些方法需要較多的訓練樣本,而且完全是基於圖像灰度的統計特性的。目前有一些改進型的特徵臉方法。

(3)神經網路的人臉識別方法

神經網路的輸入可以是降低解析度的人臉圖像、局部區域的自相關函數、局部紋理的二階矩等。這類方法同樣需要較多的樣本進行訓練,而在許多應用中,樣本數量是很有限的。

(4)彈性圖匹配的人臉識別方法

彈性圖匹配法在二維的空間中定義了一種對於通常的人臉變形具有一定的不變性的距離,並採用屬性拓撲圖來代表人臉,拓撲圖的任一頂點均包含一特徵向量,用來記錄人臉在該頂點位置附近的信息。該方法結合了灰度特性和幾何因素,在比對時可以允許圖像存在彈性形變,在克服表情變化對識別的影響方面收到了較好的效果,同時對於單個人也不再需要多個樣本進行訓練。

(5)線段Hausdorff 距離(LHD) 的人臉識別方法

心理學的研究表明,人類在識別輪廓圖(比如漫畫)的速度和准確度上絲毫不比識別灰度圖差。LHD是基於從人臉灰度圖像中提取出來的線段圖的,它定義的是兩個線段集之間的距離,與眾不同的是,LHD並不建立不同線段集之間線段的一一對應關系,因此它更能適應線段圖之間的微小變化。實驗結果表明,LHD在不同光照條件下和不同姿態情況下都有非常出色的表現,但是它在大表情的情況下識別效果不好。

(6)支持向量機(SVM) 的人臉識別方法

近年來,支持向量機是統計模式識別領域的一個新的熱點,它試圖使得學習機在經驗風險和泛化能力上達到一種妥協,從而提高學習機的性能。支持向量機主要解決的是一個2分類問題,它的基本思想是試圖把一個低維的線性不可分的問題轉化成一個高維的線性可分的問題。通常的實驗結果表明SVM有較好的識別率,但是它需要大量的訓練樣本(每類300個),這在實際應用中往往是不現實的。而且支持向量機訓練時間長,方法實現復雜,該函數的取法沒有統一的理論。

人臉識別的方法很多,當前的一個研究方向是多方法的融合,以提高識別率。

在人臉識別中,第一類的變化是應該放大而作為區分個體的標準的,而第二類的變化應該消除,因為它們可以代表同一個個體。通常稱第一類變化為類間變化,而稱第二類變化為類內變化。對於人臉,類內變化往往大於類間變化,從而使在受類內變化干擾的情況下利用類間變化區分個體變得異常困難。正是基於上述原因,一直到21 世紀初,國外才開始出現人臉識別的商用,但由於人臉識別演算法非常復雜,只能採用龐大的伺服器,基於強大的計算機平台。



如果可以的話,可以Te一下colorreco,更好的技術解答。

Ⅲ 如何開發Java動態人臉識別

1.環境搭建
整個項目的結構圖

2.編寫DetectFaceDemo.java,代碼如下:
[java] view plain
package com.njupt.zhb.test;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;

//
// Detects faces in an image, draws boxes around them, and writes the results
// to "faceDetection.png".
//
public class DetectFaceDemo {
public void run() {
System.out.println("\nRunning DetectFaceDemo");
System.out.println(getClass().getResource("lbpcascade_frontalface.xml").getPath());
// Create a face detector from the cascade file in the resources
// directory.
//CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml").getPath());
//Mat image = Highgui.imread(getClass().getResource("lena.png").getPath());
//注意:源程序的路徑會多列印一個『/』,因此總是出現如下錯誤
/*
* Detected 0 faces Writing faceDetection.png libpng warning: Image
* width is zero in IHDR libpng warning: Image height is zero in IHDR
* libpng error: Invalid IHDR data
*/
//因此,我們將第一個字元去掉
String xmlfilePath=getClass().getResource("lbpcascade_frontalface.xml").getPath().substring(1);
CascadeClassifier faceDetector = new CascadeClassifier(xmlfilePath);
Mat image = Highgui.imread(getClass().getResource("we.jpg").getPath().substring(1));
// Detect faces in the image.
// MatOfRect is a special container class for Rect.
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);

System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

// Draw a bounding box around each face.
for (Rect rect : faceDetections.toArray()) {
Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
}

// Save the visualized detection.
String filename = "faceDetection.png";
System.out.println(String.format("Writing %s", filename));
Highgui.imwrite(filename, image);
}
}

3.編寫測試類:
[java] view plain
package com.njupt.zhb.test;
public class TestMain {
public static void main(String[] args) {
System.out.println("Hello, OpenCV");
// Load the native library.
System.loadLibrary("opencv_java246");
new DetectFaceDemo().run();
}
}
//運行結果:
//Hello, OpenCV
//
//Running DetectFaceDemo
///E:/eclipse_Jee/workspace/JavaOpenCV246/bin/com/njupt/zhb/test/lbpcascade_frontalface.xml
//Detected 8 faces
//Writing faceDetection.png

Ⅳ 人臉識別門禁系統Java源代碼

基於彈性模板匹配的人臉表情識別程序。首先針對靜態表情圖像進行表情圖像的灰度、尺寸歸一化,然後利用Gabor小波變換提取人臉表情特徵以構造表情彈性圖,最後提出基於彈性模板匹配及K-近鄰的分類演算法實現人臉表情的識別。

Ⅳ 求java+opencv的人臉識別系統源碼,要編寫android版的人臉識別系統,求源碼一枚

我不會java。我常用的是c/c++和matlab語言,平台是vs和opencv,這問題還真幫不了你。

Ⅵ java 人臉識別 問題!

no jniopencv_objdetect in java.library.path

opencv的相應的dll,沒有放到環境變數PATH 所指的目錄

Ⅶ java怎麼實現人臉識別

應該可以通過java調用別人的人臉識別的介面,主要是利用圖像處理的技術,識別關鍵點

Ⅷ java 實現人臉的動漫化 照片用數組存還是image對象提取人臉的什麼特徵人臉處理常用哪些特徵

YOGUAI為保險櫃,自動門,考勤等行業提供人臉識別方案。

隨著計算機網路和通信技術的發展,信息安全、知識產權保護和身份認證等問題成了一個重要而緊迫的研究課題。身份認證是保證系統安全的必要前提,在多種不同的安全領域都需要准確的身份認證。傳統的身份證、智能卡、密碼等身份認證方法存在攜帶不便、容易遺失、不可讀或密碼易被破解等諸多問題。基於人臉識別技術的身份認證方法與傳統的方法相比,具有更好的安全性、可靠性和有效性,因此正越來越受到人們的重視,並逐漸進入社會生活的各個領域。

人臉識別技術具有廣泛的應用前景,可以應用到多種不同的安全領域,因其識別特徵的獨特性、惟一性和相對穩定性,逐漸成為一非常熱門的研究課題。許多典型的人臉識別演算法和應用系統都是針對標准或特定的人臉資料庫,利用庫內人臉進行訓練,並在相同的庫中實現人臉識別。但在軟體保護、計算機安全等特殊應用中,身份認證僅針對單個對象進行人臉識別,現有的人臉識別方法並不能勝任這樣的識別任務。為此,本文針對單對象人臉識別的特點,討論了單對象人臉檢測和識別的關鍵技術,在此基礎上提出了一種單對象人臉識別演算法,實驗結果證明了該方法的有效性。

2單對象人臉識別的特點

與典型的人臉識別相比,單對象人臉識別有以下4個方面的特點:

應用領域人臉識別的應用領域很廣,如刑偵破案、證件核對、保安監控等,而單對象人臉識別主要應用在軟體保護、計算機安全鎖、特定對象追蹤等領域。

識別系統的目標單對象人臉識別的最終目標是系統必須具有高度的安全性和可靠性,即識別錯誤率趨於0。雖然降低識別錯誤率的同時識別率也會降低,但可以通過提示用戶調整姿態(如注視攝像頭等)加以改善。

膚色模型由於單對象人臉識別僅針對特定的對象,所以人臉檢測的膚色模型可採用自適應的方法調整膚色范圍。

分類方法單對象人臉識別不存在人臉資料庫,常用的最小距離分類法不能夠正確識別特定的對象,只能用閾值作為判據。因此,閾值的選取十分重要,閾值過大則容易出現錯判,存在安全隱患;而閾值過小又會影響識別效率。

3人臉的檢測和歸一化

人臉檢測是人臉識別的前提。對於給定的圖像,人臉檢測的目的在於判斷圖像中是否存在人臉,如果存在,則返回其位置和空間分布。利用人臉膚色和面部特徵,將人臉檢測分為兩個階段:外臉檢測和內臉定位。外臉檢測主要利用人臉膚色進行初步的臉區檢測,分割出膚色區域;內臉檢測是在外臉區域中利用面部幾何特徵進行驗證和定位。

3.1外臉檢測

外臉檢測的任務是將待檢圖像中可能的人臉區域找出來並加以標記,其步驟如下:

(1)根據人類膚色在色彩空間中存在區域性的特點,將可能為人臉的像素檢測出來。為更好地利用膚色特徵,同時選用HSI和YcbCr兩種色彩空間對圖像進行二值化處理,膚色范圍限定在H∈[0,46],S∈[0.10,0.72],Cb∈[98,130],Cr∈[128,170]內。將滿足條件的像素標記為膚色像素,其餘的均為非膚色像素。

(2)去噪處理。在以每一個膚色點為中心的5×5鄰域內統計膚色像素的個數,超過半數時中心點保留為膚色,否則認為是非膚色。

(3)將二值圖像中的膚色塊作區域歸並,並對目標區域進行比例、結構分析,過濾掉不可能的人臉區域。目標區域的高度/寬度比例限定在0.8~2.0。

3.2內臉檢測和定位

將包含眼、眉、鼻和嘴的區域稱為內臉區域。內臉區域能夠很好地表達人臉特徵,且不易受背景、頭發等因素的干擾,因此內臉區域的檢測和定位對後續的特徵提取和識別至關重要。

在外臉區域的上半部,對二值圖像進行水平方向和垂直方向的投影,確定兩個包含黑點的矩形區域作為雙眼的大致區域。在確定的兩個區域中,對黑點進行區域膨脹,可以得到眼睛的基本輪廓和左石眼角,黑點坐標的平均值作為瞳孔的位置。

設左右瞳孔的坐標分別為(Lx,Ly)和(Rx,Ry),兩個瞳孔之間的距離為d,根據人臉的幾何特徵,我們將內臉區域定義為:寬度=-d×1.6,高度=-d×1.8,左上角坐標為(Lx-d×0.3,(Ly Ry)/2-(-d)×0.3)。實驗表明,該區域能夠很好地表達人臉特徵。

3.3內臉區域的歸一化

由於各待測圖像中的人臉大小具有很大的隨機性,因此,有必要對內臉區域進行歸一化操作。人臉歸一化是指對內臉區域的圖像進行縮放變換,得到統一大小的標准圖像,實驗中,我們規定標准圖像的大小為128×128。歸一化處理,保證了人臉大小的一致性,體現了人臉在圖像平面內的尺寸不變性。

對歸一化的人臉圖像,採用小波變換與DCT相結合的方法提取人臉特徵。首先對人臉圖像進行3層小波分解,取低頻子圖像LL3作為人臉特徵提取的對象,從而獲得每幅訓練樣本或測試樣本的低頻子圖像;然後對低頻子圖像進行離散餘弦變換(DCT),DCT系數個數與子圖像的大小相等(即256),由於圖像DCT變換,能量集中在低頻部分,因此只取其中的136個低頻系數作為特徵向量。

5人臉的識別

完成訓練過程並獲得待測樣本的特徵後,即可進行人臉識別,本文採用歐氏距離進行分類。

5.1計算樣本與平均臉的歐氏距離

用m和x表示平均臉和樣本的特徵向量,則樣本與平均臉的歐氏距離為:

其中mk表示平均臉的第k個特徵向量,xk表示待測樣本的第k個特徵向量。身份認證時,計算待測樣本與平均臉的歐氏距離,並與特定對象的自適應閾值進行比較,將小於閾值的樣本判為該對象的人臉,即認證通過。

5.2自適應閾值的選取

與典型的人臉識別方法不同,單對象人臉認識沒有人臉資料庫,不能用距離最小作為判據,只能用閾值作為判別依據。閾值的選取應兼顧識別率和識別的准確性,實驗中我們取訓練樣本與平均臉的歐氏距離平均值作為分類閾值,即:

其中,N為訓練樣本數,此值不宜太小;di為第i個樣本與平均臉之間的歐氏距離。

莫士特科技有限公司提供模式識別主板及解決方案。
希望採納

閱讀全文

與人臉識別演算法代碼java相關的資料

熱點內容
天津市伺服器供應商雲伺服器 瀏覽:107
數控車床子程序編程 瀏覽:103
floydwarshall演算法 瀏覽:713
丟失微信app怎麼找 瀏覽:248
php能寫前端嗎 瀏覽:5
伺服器如何更改raid模式 瀏覽:90
方舟伺服器怎麼導出來 瀏覽:608
手機顯示伺服器異常什麼鬼 瀏覽:379
新聞伺服器的網址是什麼 瀏覽:669
程序員年底招人 瀏覽:319
廣發app怎麼查房貸 瀏覽:860
安卓手機怎麼下土豆 瀏覽:921
只有一個app顯示網路異常怎麼回事 瀏覽:988
解壓玩具是水寶寶 瀏覽:817
壓縮機保護怎麼解決 瀏覽:944
單片機簡易電子時鍾 瀏覽:402
pdf影印版 瀏覽:689
單片機的中斷技術 瀏覽:626
表格加密才能打開 瀏覽:39
多態可以提高編譯可靠性嗎 瀏覽:599