複雜背景彩色人臉檢測

2021-07-13 21:29:49 字數 2675 閱讀 7003

一、概述

本文提出了一種新方法在具有複雜背景的彩色影象中檢測人臉區域。使用 ycrcb 和 hsv 兩種彩色空間進行膚色粗檢測,對檢測到的膚色畫素在 crcb 空間內進行聚類分析,然後使用形態學運算元對屬於同一聚類中心的畫素進行開運算以除去一些小的背景。應用一些規則合併膚色區域以形成候選的人臉;通過多閾值分割確定雙眼的候選位置,並應用bp網路驗證是否是真實的人眼。

二、方法

在大多數情況下,影象資訊是以 rgb 的顏色空間儲存。但是在膚色分析中,由於 rgb 三個顏色分量都包含亮度資訊,存在較強的相關性,不適合進行色度處理。研究表明人類膚色的變化主要是由**顏色的亮度引起的。目前常用的膚色檢測的顏色空間有歸一化的 rgb, hsv (或hsi),yiq及ycrcb等。

2.1、膚色粗分割

ycrcb 顏色空間是一種有效的膚色表示空間。在 ycrcb 顏色空間中,y分量表示顏色的亮度資訊,cr 和cb 分量不包含亮度資訊。而 hsv 顏色空間較之 rgb 顏色空間更適於人對顏色的感知,因此,本文採用上述兩種顏色空間進行膚色的粗檢測。通過對30幅不同光照的彩色人臉影象進行統計, 得到能廣泛包括膚色的 ycrcb 和 hsv 顏色空間的範圍: rcr =[134, 183], rcb=[86, 137], rh= [0, 0.873], rs= [0.15, 0.75] 及 rv= [0.35, 1.0]。圖1是對一幅 rgb彩色影象進行膚色分割的結果, 在圖2-b 中白色區域表示檢測到的膚色。

2.2、直方圖聚類分析

對前面檢測到的膚色點在 crcb 空間內得到它們的直方圖。在我們的應用中,cr和cb被均勻地分成64段,每一段的長度為4個基本顏色單位,即 crcb 空間被分成 64×64 個小區域。圖2-a是圖1-b中檢測到的膚色點的直方圖分布。

在 crcb 空間中,膚色的分布通常呈狹長型,並且從上至下有多個峰值較大的中心,因此我們可以對 crcb 直方圖進行聚類。為了處理方便,我們首先對直方圖進行平滑,以消除一些毛刺的影響。我們採用形態學膨脹運算元來完成這個任務。研究表明:膚色在 cr 和 cb 上分布的標準差分別為3.9和4.3,因此我們在 crcb 空間內選用 3×3 的結構元進行形態學處理。

對直方圖平滑後,直方圖中的聚內中心的分布特點是:中心點主要是從上到下排列的,如圖2-b所示;因此, 直方圖聚類分析的關鍵就是確定聚類中心點之間的上下邊界,這個過程可由圖3所示。假使c1和c2是兩個聚類中心點,以它們為頂點可以構造乙個矩形,然後累加矩形每一行元素的值,找出值為最小的行作為邊界b。通過聚類分析,直方圖產生了兩個新的聚類中心,對屬於每個聚類中心的畫素點用不同深淺的灰度值表示,結果如圖4-a所示。

2.3、形態學濾波

對被檢測為膚色的畫素進行聚類分析後,我們發現:屬於膚色的區域通常是連續的整塊,屬於背景的區域通常是連續的整塊或是孤立的小塊。我們應用形態學開運算元來除去這些孤立的背景區域。在我們的應用中,分別對屬於不同聚類中心的畫素進行開運算元操作,相對於對整個檢測到的膚色進行開運算元操作,這樣操作能更有效地除去孤立的小區域。圖4-b是圖4-a經過開運算元操作後的結果,可以看出大部分孤立的小區域被有效地除去了。

2.4、區域合併

經過前面階段的處理,人臉可能被分割成幾個不相連的區域,如圖5所示;因此有必要對這些區域進行合併。在這個處理之前, 首先除去一些面積小於一給定門限的區域。在我們的應用中,這個門限設定為整個影象大小的0.1%。考慮到臉部區域膚色的分布具有一致性,因此只對屬於同一聚類中心的區域進行合併操作。我們給出兩個規則來進行區域合併。

a. 位置規則:假設區域a 和區域b 的外接矩形分別是ra 和rb, 並且它們的寬和高分別是wa,wb, ha 和hb;另假使兩矩形的中心在水平和垂直方向上的距離分別是dx 和dy,那麼區域a和區域b 要被合併的話,必須有以下條件成立:(這裡t1 和t2 是常數)。

b. 密度規則:假設區域a 和區域b 的面積分別是aa 和ab,區域c是區域a 和區域b 的合併,那麼區域c的主軸和副軸長度由下式計算得到:

其中ui, j 是中心矩,則有主軸的長度a和副軸的長度b:

下面的步驟是計算區域c的密度s:區域c的面積比區域c的最小外接矩形的周長, 即:

如果s大於一門限, 那麼區域a 和區域b 就進行合併。

當給定任意兩個區域, 只要同時滿足上述兩個規則, 那麼這兩個區域就被合併。在應用中, 對屬於同一聚類中心的區域反覆進行合併操作, 直到合併規則不能滿足為止。圖6所示為圖4-b和

圖5-b經過區域合併後的結果。

人臉識別之人臉檢測

人臉識別分為人臉檢測 人臉預處理 蒐集和學習人臉以及人臉識別四個部分,此部分將人臉檢測。本文基於opencv進行的。在opencv中常用的人臉檢測器有基於lbp的特徵檢測 基於haar的特徵檢測,兩者的區別 前者比後者快好幾倍且不需要許可協議,但很多haar檢測器需要許可協議。基於haar的臉部檢測...

OpenCV人臉檢測 眼睛檢測之在人臉以外找眼睛

今天在學習opencv人臉檢測時,發現眼睛檢測是在人臉以外尋找眼睛的,源 如下 import cv2 def detect face cascade cv2.cascadeclassifier cascades haarcascade frontalface default.xml eye casc...

人臉檢測2

下面的 是講具體如何訓練 當時我想研究車牌識別的,用此方法對車牌進行訓練沒有成功,呵呵。下面是成功的例子,注意是 opencv中的traincascade.exe不是 另外那個 opencv traincascade.exe data data vec a.vec bg e lch train im...