freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于androi面部識(shí)別技術(shù)研究最終上傳版-資料下載頁(yè)

2025-06-19 13:15本頁(yè)面
  

【正文】 mStorage* storage, double scale_factor=, int min_neighbors=3, int flags=0, CvSize min_size=cvSize(0,0) )。195 PCA 算法及實(shí)現(xiàn) Android NDK 簡(jiǎn)介Android NDK 的全稱(chēng)是 Android Native Development Kit,是一系列開(kāi)發(fā)工具。允許程序開(kāi)發(fā)人員在 Android 應(yīng)用程序中嵌入 C/C++語(yǔ)言編寫(xiě)的非托管代碼(unmanaged code) 在公共語(yǔ)言運(yùn)行庫(kù)的環(huán)境的外部由操作系統(tǒng)直接執(zhí)行的代碼,稱(chēng)之為非托管代碼。非 托 管 代 碼 必 須 提 供 自 己 的 垃 圾 回 收 、 類(lèi) 型 檢 查 、 安 全 支持 等 服 務(wù) 。Android NDK 版 本 集 成 了 交 叉 編 譯 , 支 持 ARMv5TE 處 理 器 指 令 集 ,JNI 接 口 和 一 些 穩(wěn) 定 的 庫(kù) 文 件 。 它 提 供 了 一 系 列 的 說(shuō) 明 文 檔 、 示 例 代 碼 和 開(kāi) 發(fā)工 具 , 指 導(dǎo) 程 序 員 使 用 C/C++語(yǔ) 言 進(jìn) 行 開(kāi) 發(fā) , 并 提 供 便 捷 工 具 將 庫(kù) 文 件 打 包 到 .apk 文 件 中 。 更 重 要 的 是 Android 虛 擬 機(jī) 允 許 應(yīng) 用 程 序 源 代 碼 通 過(guò) JNI 調(diào) 用 在本 地 實(shí) 現(xiàn) 的 方 法 。 這 樣 極 大 的 提 高 了 Android 應(yīng) 用 程 序 開(kāi) 發(fā) 的 靈 活 性 。在 Windows 下 Android NDK 編 譯 環(huán) 境 的 配 置 方 法 主 要 分 為 以 下 四 步 :(1)下 載 Android NDK 的 安 裝 包(2)下 載 并 安 裝 Cygwin(3)配置 Cygwin 的 NDK 開(kāi)發(fā)環(huán)境(4)測(cè)試開(kāi)發(fā)環(huán)境是否可以正常工作 PCA 算法原理分析PCA 將圖像看作具有一定分布的隨機(jī)向量。由于人臉總體構(gòu)型的相似性,人臉圖像在其中的分布不是隨機(jī)的,PCA 可以獲得人臉圖像分布的主成分方向,從而使用人臉圖像的主成分來(lái)表達(dá)人臉。它使得圖像數(shù)據(jù)在一個(gè)低維的空間進(jìn)行處理,在保持了原有大部分信息量的基礎(chǔ)上,大大的減少了運(yùn)算量,這樣有利于在移動(dòng)設(shè)備上的開(kāi)發(fā)使用。從本質(zhì)上而言,這是一種基于統(tǒng)計(jì)分析的信息壓縮算法。PCA 算法運(yùn)用于人臉識(shí)別主要分為連個(gè)階段:訓(xùn)練階段和識(shí)別階段。20 訓(xùn)練階段設(shè)人臉圖像 用 N=width*height 維向量,人臉圖像訓(xùn)練集可以看作是(,)fxy維的隨機(jī)向量 ,其中 m 是訓(xùn)練樣本圖像數(shù)目。則這MN???123,XX??m 幅圖像的平均圖像的向量表示為: (51)1mii??每個(gè)人臉 與平均人臉圖像 的差值定義為 :i i? (52)(,23,)iiX???這樣訓(xùn)練圖像的協(xié)方差矩陣表示為: (53)1 1()()mmTTii ii i?? ?式中 是 N 維向量,則 就是 維向量。XN?設(shè) 和 分別是協(xié)方差矩陣 的特征值和特征向量,其中 ,將特i?iV ,23,im?征值按從小到大順序排列: 。這樣就很容易計(jì)算出協(xié)方差矩123m????陣 的正交歸一特征向量 為:?i? (54)1,iiVi????進(jìn)一步我們獲得特征臉 ??123,m???為了進(jìn)一步減少計(jì)算量,我們提出特征值的貢獻(xiàn)率(選取的特征值在總的特征值的和比) ,選取前 P 個(gè)最大特征值以及對(duì)應(yīng)的特征向量 [7]。 (55)190%ipimia???????這樣每一幅人臉圖像都可以投影到由 組成的子空間中,因此每一幅人臉圖iV像對(duì)應(yīng)于子空間中的一個(gè)點(diǎn)。同樣子空間中的一個(gè)點(diǎn)也代表著一個(gè)人臉圖像,由于這些點(diǎn)很想人臉圖像,所以我們稱(chēng)之為“特征臉” 。這樣對(duì)于任意一個(gè)樣本 ,X它的主成分特征為: (56)12(,)TmyX??? 識(shí)別階段識(shí)別階段本文采用三階鄰近算法,對(duì)待測(cè)樣本的主成分和每一訓(xùn)練樣本的主21成分求距離,將待測(cè)樣本歸類(lèi)于最小距離的訓(xùn)練樣本類(lèi)別。具體算法過(guò)程如下:(1)將每幅人臉圖像與平均臉的差值臉矢量投影到“特征臉”空間,即: (57)()(1,23,)TiiXim??????(2)將待識(shí)別的人臉圖像 與平均臉的差值臉投影到特征臉空間,得到其特征向量 x (58)()xT(3)定義識(shí)別閾值 ? (59),1,12,32maijij ijm?????(4)采用歐氏距離來(lái)計(jì)算 與每個(gè)人臉的距離x i? (510)22 ,xii??為了能區(qū)分人臉與非人臉,我們還需要計(jì)算待識(shí)別圖像 與由特征臉空間重X建的圖像之間的距離 (511)f xfXT???????其 中 最后根據(jù)以下規(guī)則進(jìn)行判斷:若:(1) ,則輸入圖像不是人臉圖像???(2) , 1)且對(duì) , ,則輸入圖像包含未知人臉?i?i???2)且對(duì) , ,則輸入人臉圖像為人臉庫(kù)中第 i 個(gè)人臉? Open CV 實(shí)現(xiàn) PCA 算法 Open CV 簡(jiǎn)介Open CV 于 1999 年 由 Intel 建 立 , 現(xiàn) 在 由 Willow Garage 提 供 支 持 。Open CV 是 一 個(gè) 基 于 BSD 許 可 證 授 權(quán) ( 開(kāi) 源 ) 發(fā) 行 的 跨 平 臺(tái) 計(jì) 算 機(jī) 視 覺(jué) 庫(kù) ,可 以 運(yùn) 行 在 Linux、 Windows 和 Mac OS 操 作 系 統(tǒng) 上 。 它 輕 量 級(jí) 而 且 高 效 ——由 一 系 列 C 函 數(shù) 和 少 量 C++ 類(lèi) 構(gòu) 成 , 同 時(shí) 提 供 了Python、 Ruby、 MATLAB 等 語(yǔ) 言 的 接 口 , 實(shí) 現(xiàn) 了 圖 像 處 理 和 計(jì) 算 機(jī) 視 覺(jué) 方 面的 很 多 通 用 算 法 。 它具有三個(gè)重要的特性:(1)Open CV 擁有包括 300 多個(gè) C 函數(shù)的跨平臺(tái)的中、高層 API。它不依賴(lài)22于其它的外部庫(kù)——盡管也可以使用某些外部庫(kù)。(2)Open CV 對(duì)非商業(yè)應(yīng)用和商業(yè)應(yīng)用都是免費(fèi)( FREE)的。(3)Open CV 為 Intel174。 Integrated Performance Primitives (IPP) 提供了透明接口。這意味著如果有為特定處理器優(yōu)化的的 IPP 庫(kù),Open CV 將在運(yùn)行時(shí)自動(dòng)加載這些庫(kù) [4]。Open CV 可以應(yīng)用于人機(jī)交互、物體識(shí)別、圖像分割、人臉識(shí)別、動(dòng)作識(shí)別、運(yùn)動(dòng)跟蹤和機(jī)器人 7 大鄰域。 PCA 算法實(shí)現(xiàn)由上文對(duì) PCA 算法原理的闡述,幾個(gè)重要的因素:待訓(xùn)練圖像數(shù)據(jù)、平均圖像、訓(xùn)練圖像協(xié)方差矩陣、協(xié)方差矩陣的特征值特征向量、特征向量子空間、待識(shí)別圖像的子空間投影。以下為 PCA 算法實(shí)現(xiàn)的過(guò)程圖,如圖 51:PCA 算法實(shí)現(xiàn)過(guò)程。識(shí)別訓(xùn)練讀取待訓(xùn)練的圖像平均圖像的求取將圖像數(shù)據(jù)讀入指定的矩陣協(xié)方差矩陣的求解協(xié)方差矩陣特征值特征向量的求解主成分求解獲得特征臉空間待識(shí)別圖像投影歐氏距離的求解鄰近圖像尋找識(shí)別結(jié)果圖 51 PCA 算法實(shí)現(xiàn)過(guò)程 .SO 庫(kù)文件編譯 JNI 規(guī)則Java Native Interface 簡(jiǎn)稱(chēng) JNI,中文為 JAVA 本地調(diào)用。從 開(kāi)始,Java Native Interface (JNI) 標(biāo)準(zhǔn)成為 Java 平臺(tái)的一部分,它允許 Java 代碼和其他23語(yǔ)言寫(xiě)的代碼進(jìn)行交互。JNI 一開(kāi)始是為了本地已編譯語(yǔ)言,尤其是 C 和 C++而設(shè)計(jì)的,但是它并不妨礙你使用其他語(yǔ)言,只要調(diào)用約定受支持就可以了。設(shè) 計(jì) 的 主 要 目 的 在 于 標(biāo) 準(zhǔn) 的 Java 類(lèi) 庫(kù) 可 能 不 支 持 你 的 程 序 所 需 的 特 性 ?;?許 你 已 經(jīng) 有 了 一 個(gè) 用 其 他 語(yǔ) 言 寫(xiě) 成 的 庫(kù) 或 程 序 , 而 你 希 望 在 Java 程 序 中 使用 它 。 簡(jiǎn) 而 言 之 就 是 在 C/C++與 Java 搭 建 一 個(gè) 接 口 平 臺(tái) 。 如 圖 52: JNI 接口 圖 。 C side Java side J N I FunctionsLibraries ExceptionsVMClasses圖 52 JNI 接 口 圖JNI 最重要的好處是它沒(méi)有對(duì)底層 Java 虛擬機(jī)的實(shí)現(xiàn)施加任何限制。因此,Java 虛擬機(jī)廠商可以在不影響虛擬機(jī)其它部分的情況下添加對(duì) JNI 的支持。由于 Android 的應(yīng)用層的類(lèi)都是以 Java 寫(xiě)的,這些 Java 類(lèi)編譯為 Dex 形式的Bytecode 之后,必須靠 Dalvik 虛擬機(jī)(VM: Virtual Machine)來(lái)執(zhí)行。所以 VM在 Android 平臺(tái)里扮演著很重要的角色。此外,在執(zhí)行 Java 類(lèi)的過(guò)程中,如果Java 類(lèi)需要與 C 組件溝通時(shí), VM 就會(huì)載入 C 組件,然后讓 Java 的函數(shù)順利的調(diào)用到 C 組建的函數(shù)。此時(shí) VM 就成了 Java 與 C/C++連接的紐帶,讓 Java 與 C組件能通過(guò)標(biāo)準(zhǔn)的 JNI 界面而相互溝通。Java 的程式將通過(guò) (*.so 的檔案名 )這一指令要求 VM 去載入 所 指 定 的 C 組 件 。 如 程 序 實(shí) 現(xiàn) :public class LibImgFun {static { (ImgFun)。 }}這 就 要 求 VM 去 載 入 Android 的 檔 案 , 載 入 后 Java 與 檔 案 就 組 合 起 來(lái) , 一 起 執(zhí) 行 。 當(dāng) Android 的 VM 執(zhí) 行 到24()時(shí)首先會(huì)調(diào)用 JNI_OnLoad()函數(shù),這個(gè)函數(shù)將告訴 VM 此 C組件使用的是哪一個(gè) JNI 版本,所有 C 組件內(nèi)的初期值皆由此函數(shù)進(jìn)行初始化。而當(dāng) VM 釋放 C 組件的時(shí)候就會(huì)調(diào)用 JNI_UnLoad()來(lái)進(jìn)行善后的清除動(dòng)作。 庫(kù)文件編譯在工程文件夾下建立 jni 文件夾,然后新建 和 。內(nèi)容如下:(1) 文件: Build both ARMv5TE and ARMv7A machine code.APP_OPTIM := debugAPP_STL:=gnustl_staticAPP_CPPFLAGS:=frtti –fexceptionsAPP_ABI:=armeabiv7a armeabi(2):NDK_USE_CYGPATH=1LOCAL_PATH:=$(call mydir)include $(CLEAR_VARS)include ../ifeq ($(wildcard $(OPENCV_MK_PATH)),)try to load from default install locationinclude $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/elseinclude $(OPENCV_MK_PATH)endifLOCAL_LDLIBS := llogLOCAL_MODULE:=ImgFunLOCAL_SRC_FILES:=include $(BUILD_SHARED_LIBRARY)(3)建立接口文件函數(shù)如下例子:JNIEXPORT jint JNICALL Java__FaceIdentify_LibImgFun_Recognize(JNIEnv *env,jobject obj,jstring filename)25(4)利用Cygwin編譯工具編譯,鍵入$NDK/ndkbuild命令開(kāi)始編譯,結(jié)果如圖53所示圖53 生成庫(kù)文件6 研究結(jié)果及分析組成人臉庫(kù):將攝像頭拍攝下來(lái)的人臉圖像進(jìn)行大小統(tǒng)一、圖像預(yù)處理、人臉提取和邊緣檢測(cè),再將預(yù)處理后的圖片進(jìn)行保存在人臉庫(kù)中。在程序中可以實(shí)現(xiàn)多對(duì)一的識(shí)別。當(dāng)然,也可以實(shí)現(xiàn)一對(duì)一識(shí)別(將人臉庫(kù)里面的人臉圖像全部存儲(chǔ)為一個(gè)人的人臉圖像)。程序中設(shè)置的是3個(gè)人,每人5張圖片。讀取待訓(xùn)練的圖片:將人臉庫(kù)里面的圖片數(shù)據(jù)讀入圖像矩陣,為了減少計(jì)算量,統(tǒng)一將圖片的大小定為50x60。如圖61:部分待訓(xùn)練圖像 圖61 部分待訓(xùn)練圖像人臉圖像的訓(xùn)練階段:根據(jù)上述PCA算法,將待訓(xùn)練的人臉圖像數(shù)據(jù)讀入人臉數(shù)據(jù)矩陣中,求解訓(xùn)練圖像的協(xié)方差矩陣、平均圖像等。從而獲取訓(xùn)練圖像的主成分。由于訓(xùn)練樣本對(duì)應(yīng)的協(xié)方差矩陣的維數(shù)是50x60的平方,直接計(jì)算特征值和特征向量的計(jì)算量太大,不可實(shí)現(xiàn)。一次根據(jù)SVD理論求解特征值和特征向量。取總信息量的95%以上作為主要特征值。通過(guò)計(jì)算,主要特征值個(gè)數(shù)為14個(gè),經(jīng)過(guò)線性反變換,獲得特征臉。獲取待識(shí)別人臉圖像:利用程序拍照功能獲取當(dāng)前待識(shí)別人臉圖像,進(jìn)過(guò)相應(yīng)處理獲得待識(shí)別的人臉圖像。人臉?lè)诸?lèi):利用最鄰近算法求解待識(shí)別人臉圖像與訓(xùn)練圖像的距離,將待識(shí)別人臉圖像歸類(lèi)于距離最短的人臉類(lèi)別,顯示識(shí)別結(jié)果。正是對(duì)圖像的預(yù)處理,才能為后期算法奠定基礎(chǔ)、提高識(shí)別率。也正是PCA算法減少了計(jì)算量,降低了應(yīng)用程序?qū)τ布囊螅瑥亩鴾p少了識(shí)別所用的時(shí)間。26通過(guò)研究結(jié)果表明:該應(yīng)用程序能對(duì)人臉進(jìn)行正確的識(shí)別。具體識(shí)別過(guò)程請(qǐng)參看附
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1