李秀圣,郭偉峻
(1.濰坊學院,山東 濰坊 261061;2.中興通訊股份有限公司,陜西 西安 710065)
人眼檢測系統在疲勞駕駛、人臉識別、人機交互、視頻監控等方面具有廣泛的應用[1]。目前,用于人眼檢測的方法主要包括積分投影、模板匹配和統計的方法[2]。其中,積分投影法實現的系統對人臉的姿態非常敏感,特別是在人眼處的波峰和波谷位置,導致檢測準確率低;而基于模板匹配和統計的方法難以在硬件上實現。在實現平臺上,大部分人眼檢測系統基于PC機實現,存在體積大、功耗高的缺點;小部分系統基于DSP平臺實現[3],但指令的執行以串行方式進行,難以滿足系統實時檢測的要求。
FPGA具有數據并行處理的特點,指令執行速度快,易于滿足實時性檢測的要求。并且可以通過硬件描述語言結合FPGA內部資源進行邏輯電路設計,而不需要附加專用芯片,利于實現系統的小型化[4],基于以上考慮,本系統選取FPGA作為硬件實現平臺。在系統實現方法上,根據人眼對不同波長的紅外光具有不同反射率的原理,對分別在850nm和940nm兩種波長的紅外光照射下獲得的人臉圖像進行差分,然后通過圖像處理,結合改進的復雜度算法最終獲得人眼位置。
系統的硬件結構主要由CMOS圖像傳感器、紅外光源、FPGA、視頻編碼芯片、VGA接口及若干存儲器等組成,其中紅外光源由內外兩圈環形的LED燈產生,外圈是波長為940nm的紅外LED燈,內圈是波長為850nm的紅外LED燈。
系統工作流程如圖1所示,CMOS圖像傳感器經12C配置電路初始化后輸出行有效信號、幀有效信號、像素時鐘信號及數據信號。人眼瞳孔對波長為940nm紅外光的反射率為40%,對波長為850nm紅外光的反射率是90%[5],通過控制兩圈不同波長的LED燈隨圖像幀頻率而交替閃爍即可獲得相鄰的兩幀亮、暗圖像;然后利用圖像差分法對上述兩幀圖像進行差分,即可獲得具有亮瞳孔效應、人臉突出、幾乎沒有背景影響的紅外圖像;再通過對差分圖像進行分割、積分投影等處理即能準確定位人臉;最后對定位的人臉區域利用改進的復雜度算法進行人眼定位。
幀緩沖模塊由SDRAM控制器和3個FIFO組成,其中SDRAM控制器負責外部SDRAM的度讀、寫操作,Write_FIFO用于數據輸入、Read_FIFO1和Read_FIFO2用于輸出兩幀相鄰的圖像數據,系統檢測后的圖像利用VGA控制器顯示在顯示器上。

圖1 系統工作流程圖
用于人臉檢測的算法流程如圖2所示。

圖2 人臉檢測算法處理流程

圖3 差分后的圖像與灰度拉伸后的圖像對比
進行灰度拉伸的目的是提高目標圖像與背景之間的對比度,以便于圖像進行分割處理[6]。具體實現過稱為:從系統中取出一幀差分后的圖像進行灰度拉伸,將像素灰度值處于[20,255]區間的像素點線性映射到[0,255]區間,灰度值小于20的像素點映射為0。兩者的對比如圖3所示,可見經灰度拉伸后提高了與差分圖像之間的對比度。
圖像分割的關鍵是選取恰當的閾值,這樣才能有效的將目標圖像從背景中分割出來。本設計采用自適應閾值法中的最大類間方差法實現閾值選?。?]。設一副圖像的灰度值為0~(l-1),灰度值為i的像素個數為ni,總像素個數為N,則各像素值的概率Pi=ni/N。設以灰度值t將圖像中的像素按灰度值分為兩個區域,則最大類間方差的表達式為:

使得σ2最大的值即為圖像分割的最佳閾值。最大類間方差算法是一種全局性的算法,計算出的閾值會在處理的兩幀圖像期間出現,通過實現測得系統的處理速度可達30幀/秒,故可將當前幀的分割閾值用于下一幀,而不必設計專門的當前幀存儲電路,從而降低硬件實現的復雜度,分割后的圖像如圖4所示。
通過圖像分割處理,可以將人臉區域從背景中進行分離,這樣就可以利用積分投影的方法得到人臉的邊界。在區間[x1,x2]和[y1,y2]內的水平積分投影函數和垂直積分投影函數分別表示為[9]:

通過實驗發現,人臉左右邊界的積分投影值為人臉垂直方向積分投影值最大值的0.1~0.2倍,上邊界的積分投影值為人臉水平方向積分投影值最大值的0.2~0.3倍,人臉的下邊界可以通過上邊界和左右邊界之間的距離確定,本設計中人臉的下邊界為上邊界加左右邊界的距離,其定位結果如圖5所示。

圖4 閾值分割后的圖像

圖5 人臉區域定位結果圖像
通過觀察差分后的紅外圖像,可知瞳孔周圍的灰度值變化最為頻繁,故人眼的檢測采用復雜度算法來實現。同時,對定位出的人臉區域進行人眼檢測,不僅縮小了檢測范圍,加快檢測速度,而且還排除了人臉區域外的干擾,提高了人眼檢測的精度。
圖像復雜度的數學定義為:設圖像塊的大小為行列,灰度值為I(x,y),?I/?x為I(x,y)沿x方向的梯度,可以用差分Δx=I(x+1,y)-I(x,y)近似,則圖像塊的復雜度為[10]:

本設計選取的圖像塊大小為3*3,如圖6所示。經實驗發現,相鄰兩點間進行復雜度的計算沒有取得理想效果,通過對復雜度算法進行改進,在3*3的圖像塊中選取4個像素點,使用公式Com=|x11-x33|+|x13-x31|進行復雜度計算,能夠得到較好的效果。

圖6 實驗選取的3*3圖像塊

圖7 人眼定位結果及在VGA上的圖像顯示
在FPGA中采用行緩沖和流水線處理方式,3*3圖像窗口的構造通過調用移位寄存器的IP核Shift register實現,輸入和輸出的數據位寬為8位,3個taps,每個taps的寬度為752。3*3的圖像窗口在時鐘上升沿到來時在圖像上滑動,直至掃描完整幀圖像。人眼定位結果圖像及在VGA上的顯示如圖7所示。
利用人眼對不同波長的紅外光具有不同反射率的原理,結合圖像差分方法在FPGA平臺上實現了人眼檢測系統。利用FPGA處理速度快、資源豐富的特點使設計的系統具備小型化、功耗低、成本低、高速化等優點,處理速度達到30幀/秒,檢測的精度在90%以上,滿足實時性檢測的要求。
[1]葛如海,陳彥博,劉志強.基于計算機視覺的駕駛疲勞識別方法的研究[J].中國安全科學學報,2006,16(9):134-138.
[2]唐琎,許海柱,王立.圖像中人眼檢測技術綜述[J].計算機應用研究,2008,25(4):961-965.
[3]張希坤.視線跟蹤關鍵技術研究及其在TI-DSP DM642上的實現與優化[D].西安:西北工業大學,2005.
[4]Amir A,Zimet L,Sangiovanni-Vincentelli A,et al.An embedded system for an eye-detection sensor[J].Computer Vision and Image Understanding,2005,98(1):104-123.
[5]田娥,莫易敏,廖張華,等.基于紅外光源的駕駛員實時檢測[J].計算機工程,2007,33(7):255-257.
[6]陳芳,姚建剛,楊迎建,等.灰度拉伸及邊緣掃描在紅外圖像分割中的應用[J].計算機工程與應用,2009,45(14):167-169.
[7]胡斌,宮寧生.一種改進的 Otsu閾值分割算法[J].微電子學與計算機,2009,26(12):153-155.
[8]Huang D Y,Wang C H.Optimal multi-level thresholding using a two-stage Otsu optimization approach[J].Pattern Recognition Letters,2009,30(3):275-284.
[9]Zhou Z H,Geng X.Projection functions for eye detection[J].Pattern Recognition,2004,37(5):1049-1056.
[10]崔連延,徐林,顧樹生.基于復雜度和最佳閾值的人眼定位方法[J].控制工程,2008,15(1):11-14.