人眼疲勞檢測之opencv人眼檢測xml說明

無名_四葉草發表於2020-04-05

最近老總讓我整個疲勞檢測的demo。


查資料發現下面好文章。必須得轉。


轉自:http://blog.csdn.net/u011100984/article/details/38364857


人臉識別非常容易受到光線條件變化,人臉方向,面部表情等等的影響,所以就需要儘可能的減少這些差異。否則人臉識別演算法會經常認為相同條件下的兩張不同人臉之間具有非常大的相似性,而不是認為一個人的兩張臉。

        最簡單的人臉預處理的方式就是直方圖均衡equalizeHist(),在人臉檢測中用過,這對於光線和位置變化不是很明顯的情況足夠,但是在現實世界條件下為了保證可靠性,我們需要很多複雜的技術,包括面部特徵檢測(檢測眼,鼻,嘴,眉毛等)。為了簡單我們僅僅使用眼檢測並且忽略其他面部特徵例如嘴和鼻,它們相比於眼睛來說不太重要。

眼睛檢測

        眼睛檢測對於人臉預處理來說非常有用,因為對於正臉,我們總是假設人的眼睛應該是水平的並且在人臉的對立位置,並且不管面部表情,光線變化,相機屬性,相機距離等的影響,眼睛都應該是人臉上具有相當標準的位置以及尺寸。當人臉檢測器檢測到一個人臉實際是別的東西的時候,忽略錯誤位置是非常有用的。很少出現人臉檢測器和雙眼檢測器同時出錯的情況,所以如果使用檢測到的人臉和雙眼來處理影像,那麼不會檢測出很多錯誤位置(但是不會給出很多人臉供處理,因為人眼檢測器不像人臉檢測器那麼有效)。

       opencv2.4中一些預訓練的人眼檢測器可以檢測睜開或者閉合的眼睛,而有一些只能檢測睜開的眼睛。

       能夠檢測人眼睜開或者閉合的檢測器如下:

•  haarcascade_mcs_lefteye.xml(and haarcascade_mcs_righteye.xml)
•  haarcascade_lefteye_2splits.xml(and haarcascade_righteye_2splits.xml)

       只能檢測睜開的眼睛的檢測器:

•  haarcascade_eye.xml
•  haarcascade_eye_tree_eyeglasses.xml

       【注意】睜開或者閉合人眼檢測器會指定訓練的是哪隻眼睛,所以需要使用不同的檢測器來對應左眼和右眼,然而只檢測睜開眼睛的檢測器可以使用同一個檢測器來表示左眼或者右眼。haarcascade_eye_tree_eyeglasses.xml對於人帶著眼鏡的情況能夠檢測出來人眼,但是如果不戴眼鏡的情況就不太可靠了。

        XML帶有“left eye”的名字意味著人的實際的左眼,所以對於相機影像來說就是右邊的眼睛。

        上面四個人眼檢測器是按照最可靠到最低可靠度來排列的,所以如果你不需要檢測帶著眼睛的情況,那麼第一個檢測器會是最好的選擇。

人眼搜尋區域

        人眼檢測中,裁剪影像只顯示大概眼睛區域是非常重要的,就像人臉檢測的情況,然後繼續裁剪一個小的矩形表示左眼的大概區域(如果使用左眼檢測器)右眼同理。如果你在整個人臉或者是整幅圖上檢測,會非常慢以及低的可靠度。不同人眼檢測器適合不同的人臉區域,例如如果在實際人眼的最接近區域檢測使用haarcascade_eye.xml是效果最好的,而haarcascade_mcs_lefteye.xml和haarcascade_lefteye_2splits.xml是對於人眼所在區域的大區域進行檢測的效果最好。

        下面列出了不同人眼檢測器的優質的人臉搜尋區域(使用LBP)使用檢測到的人臉矩陣的相對座標。


相關文章