『壹』 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個樣本與平均臉之間的歐氏距離。
莫士特科技有限公司提供模式識別主板及解決方案。
希望採納
『貳』 《漫畫演算法》—— 【3】樹
在樹的結構中,樹的定義如下。
樹(tree)是n(n>=0)個節點的有限集,當n=0時,稱為空樹。在任意一個非空樹中,有如下特點:
1、有且僅有一個特定的稱為根的節點。
2、當n>1時,其餘節點可分為m(m>0)個互不相交的有限集,每一個集合本身又是一個樹,並稱為根的子樹。
【相關節點】
樹的最大層級樹,被稱為樹的高度或深度。
樹的每個節點最多有2個孩子節點。
樹的一種特殊形式。樹的每個節點 最多有2個孩子節點 。
二叉樹的兩個孩子節點,一個被稱為 左孩子 ,一個被稱為 右孩子 。這兩個孩子節點的順序是固定的。
二叉樹有兩種特殊形式:滿二叉樹、完全二叉樹。
滿二叉樹 :一個二叉樹的所有非葉子節點都存在左右孩子,並且所有葉子節點都在同一層接上。簡言之,滿二叉樹的每一個分支都是滿的。
完全二叉樹 :對一個有n個節點的二叉樹,按層級順序編號,則所有節點的編號為從1到n。如果這個樹所有節點和同樣深度的滿二叉樹的編號為從1到n的節點位置相同,則這個二叉樹為完全二叉樹。
一棵樹,若為滿二叉樹,那麼一定是完全二叉樹。反之,不一定。
在內存中存儲 :
為什麼這么設計?可以更方便的定位孩子節點、父節點。
若父節點的下標是parent,那麼左孩子節點下標是2 parent+1,右孩子節點下標是2 parent+2。
反之,若左孩子節點下標是leftChild,那麼父節點下標是(leftChild - 1)/2。
稀疏二叉樹,用數組表示會很浪費空間。
二叉樹的應用:查找操作、維持相對順序。
1、查找
二叉查找樹在二叉樹的基礎上增加了以下幾個條件:
如果左子樹不為空,則左子樹上所有節點的值均小於根節點的值;
如果右子樹不為空,則右子樹上所有節點的值均大於根節點的值;
左、右子樹也都是二叉查找樹。
對於一個節點分布相對均衡的二叉查找樹來說,如果節點總數是n,那麼搜索節點的 時間復鬧液雜度都是O(logn) ,和樹的深度是一樣的。
2、維液模物持相對順序(插入)
二叉查找樹的特性保證了二叉樹的有序碼爛性,因此還有另外一個名字:二叉排序樹。
插入的過程中,可能會出現需要二叉樹進行自平衡,例如下圖的情況:
如圖所示,不只是樹的外觀看起來怪異,查詢節點的時間復雜度也退化成了O(n)。
二叉樹的自平衡的方式有很多種,如紅黑樹、AVL樹、樹堆等。
二叉樹的遍歷:
從節點之間位置關系的角度:
* 前序遍歷:輸出順序:根節點、左子樹、右子樹
* 中序遍歷:輸出順序:左子樹、根節點、右子樹
* 後序遍歷:輸出順序:左子樹、右子樹、根節點
* 層序遍歷:按照從根節點到葉子節點的層級關系,一層一層橫向遍歷各個節點。
從更宏觀的角度:
* 深度優先遍歷(前、中、後序遍歷,前中後是相對根節點)
* 廣度優先遍歷(層序遍歷)
二叉堆:本質上是一種完全二叉樹。
二叉堆本質上是一種完全二叉樹,分為2個類型:
最大堆 :任何一個父節點的值,都大於或等於它左、右孩子節點的值;
最小堆 :任何一個父節點的值,都小於或等於它左、右孩子節點的值。
二叉堆的根節點,叫作 堆頂 。最大堆的堆頂是整個堆中最大元素,最小堆的堆頂是整個堆中最小元素。
二叉堆雖然是一個完全二叉樹,但它的存儲方式並不是鏈式存儲,而是順序存儲,如下圖所示:
假設父節點的下標是parent,那麼它的左孩子的下標就是 2 * parent + 1 ,右孩子的下標就是 2 * parent + 2 。
二叉堆的3種操作(假設是最小堆):
1、插入節點:時間復雜度O(logn)
插入節點是通過「上浮」操作完成的:當二叉堆插入節點時,插入位置是完全二叉樹的最後一個位置,將該節點與它的父節點進行比較,如果該節點小於它的父節點,那麼該與它的父節點交換位置,直到比較到堆頂位置。
2、刪除節點:時間復雜度O(logn)
刪除節點是通過「下沉」操作完成的:將要刪除的節點看作是堆頂,只看該節點及它下面的部分。因為堆頂元素要進行刪除,將最後一個節點元素替換堆頂元素,將替換後的元素與它的左、右子樹進行比較,如果左、右孩子節點中最小的一個比該節點小,那麼該節點「下沉」,直到葉子節點。
3、構建二叉堆:時間復雜度O(n)
構建二叉堆,也就是把一個無序的完全二叉樹調整為二叉堆,本質就是讓所有非葉子節點一次「下沉」。
優先隊列不再遵循先入先出的原則,而是分為兩種情況:
最大優先隊列 ,無論入隊順序如何,都是當前最大的元素優先出隊;
最小優先隊列 ,無論入隊順序如何,都是當前最小的元素優先出隊。
二叉堆節點的「上浮」和「下沉」的時間復雜度都是O(logn),所以優先隊列入隊和出隊的時間復雜度也是O(logn)。
https://blog.csdn.net/qq_28958301/article/details/91590545