• 沒有找到結果。

高速眼動儀演算法流程

本章將介紹本文所提出的高速眼動儀系統中的四個流程與其所包含的各模 組細節說明與實作方式。

4. 1 定位眼睛區域

本節將對高速錄製的影像進行處理,首先透過色調重現技術[34]-[38]增強影 像對比(4.1.1 節),再將增強後的影像進行初步的眼睛定位,概略性地找到一包含 眼睛的區域(4.1.2 節),並針對該區域內的影像進行分析,分離出眼睛與非眼睛特 徵(4.1.3 節),最後透過上述特徵,設計一套演算法,繪出恰包含眼睛的最小矩形 (4.1.4 節)。

4. 1. 1

影像對比增強

當錄製影片的取樣率越來越高,相同光圈(最大光圈)的設定下,進光量將愈 來愈少,影像的亮度也越來越低,因此我們對影像進行對比增強處理,以提高影 像的動態範圍[37],本文所採用的方法為色彩色調重現技術,參考[38]實現,該演 算法包含四個步驟,a. 影像頻率分割,b. 色調映射,c. 影像頻率合併,d. 多重 色調映射,圖 4-1 為該模組之流程圖。

27

i. 參數計算(Parameter Estimation)

本步驟目的在預先計算 ii. 與 iii. 所用到的參數。於 ii. ,將利用色調映 射演算法[41],所設計的參數α做一調整,其意義代表將原始影像調整至人

Low Pass Filter Y1In

-Tone Mapping YL

YH

+

Tone Mapping In Out

First LUTs

In Out Second LUTs

Y1Out

Scaling with Middle Gray

Scaling with

White Value Normalization

Y YS YT YN

28 一半,用來對應到真實場景的中間灰階值,式(4-2)中的 1.5 為[40]作者 Reinhard 計算 YSW的經驗數字。

ii. 中間灰階映射(Scaling with Middle Gray)

本階段類似數位相機控制曝光量的動作。由於人眼對亮度的反應曲線在

29

iii. 白點映射(Scaling with White Value)

本階段利用一數學模型進行局部的對比調整,類似區域曝光技術,可能

30

iv. 正規化(Normalization)

將資料重新調整至輸出資料格式的範圍。由於經過色調映射後的亮度範 圍並不在 0 到 255 之間,我們必須將影像正規化至 0 到 255 之間,如式(4-6)。

min

max min

( , ) ( ( , ) ) 256

31

d. 多重色調映射

合併高頻影像後,部分像素值仍有一些動態範圍可壓縮,由 c. 得知,有 些合併後的亮度值將大於 255,這些便是有用的資訊,因此將該影像進行第 二次色調映射,便可得到較佳的品質。

由於色調映射的處理時間較久,我們僅於第一個畫面跑完全部流程,讓 影片中的其他畫面共享同一個映射曲線,避免發生閃爍現象。由於本文所提 出的系統支援高速,當取樣率提升至 120 fps 的整數倍時,將自動增加映射曲 線數目,以 240 fps 的取樣率為例,將建立 2 條映射曲線,如果取樣率為 480 fps,將產生 4 條映射曲線。圖 4-3-(a)為 240fps 取樣率下,未經處理的原始影 像,圖 4-3-(b),為對圖 4-3-(a)進行一次映射的結果,圖 4-3-(c)為對圖 4-3-(a) 進行二次映射的結果,比較圖 4-3-(b)與圖 4-3-(c),可以發現進行二次映射的 結果明顯優於一次映射的結果。

(a) (b) (c)

圖4-3 對比增強比較圖

圖 4-3-(a) 原始影像,圖 4-3-(b) 一次映射結果,圖 4-3-(c) 二次映射結果

32

4. 1. 2

定位眼睛可能範圍

為了提高整體影像處理效率,我們希望縮小搜尋範圍,先行決定有用的搜尋 區域,即找出影像中的 ROI (Region of Interest),此區域即為可能存在眼睛的部分,

定位出該區域後所有影像處理皆可針對該區域進行,將大幅降低處理時間。在使 用者頭部固定的情況下,我們只需要在第一張影像中定位出眼睛位置,之後的影 像直接沿用第一張定位的結果即可,不需重新辨識與計算,以節省大量的運算時 間。

此模組採用 OpenCV[57]提供的分類器,該分類器利用 Haar 矩形特徵,如圖 4-4 作為特徵抽取的方法,運用積分影像的觀念,加速運算,並使用 AdaBoost 演算法[58]進行訓練,最後使用,Cascade Classifier 的概念,製作出穩定辨識能力 的樣本資料,圖 4-5 為使用 Haar 偵測到之眼睛範圍。Haar 特徵的計算是使用深 色部分區域與淺色部分區域的灰階差值,因此使用 Haar 特徵進行比對僅需要進 行加減法運算,其處理相當迅速。本文使用 OpenCV 所提供的分類器與比對函式,

詳細作法請參見[57]。

圖4-4 Haar 矩形特徵

圖4-5

Haar 特徵偵測眼睛範圍

圖4-6 理想的眼睛範圍

33 0.23 0.68

H

133 173

Cb

136 156

Cb Cr

< <

 < <

0.36 0.465 0.28 0.363

0 50 0.20 0.68

0.35 1.0 YCbCr 的各種組合與變化,找出人眼、嘴唇與皮膚,因此我們進行實驗,將[43][44]

34

找出膚色範圍的方法進行修正,而得到 0.44< Cb/Cr < 0.95 的範圍,最大的精神在 於將原本絕對的限制範圍改為相對地比較,因此將膚色的範圍更加提升。

我們請同一位受試者,在相同的環境下,錄製 240fps 的影像,與 30fps 的影 像,因為在 240fps 的環境下,影像亮度非常不足,因此將影像先行經過對比增強 處理,表 4-2 中左上圖與左下圖分別為使用 240 fps 與 30fps 所錄製的影像,並皆 使用 Haar 特徵偵測方式所擷取的眼睛範圍,其餘影像為將上述二影像經過 [42]-[45]的演算法後的結果,如表 4-2。

表 4-2 240 fps 與 30 fps 錄製圖像之各種膚色偵測比較

240 fps [42] [43] [44] [45] 提出方法

30 fps [42] [43] [44] [45] 提出方法

表 4-2 中包含各種膚色偵測的結果,其中黑色部分表示「非膚色」,白色部 分為「膚色」,藉由我們提出的方法,能夠抓取到更多的膚色資訊,眼睛的部分 也更加完整。

考量到取樣率的不同,我們必須針對各種取樣率動態決定使用幾張膚色資訊,

以 240fps 錄製的影像為例,必須將連續 2 張膚色區域重疊,得到更加準確的膚色 部分,表 4-3 為 240fps 取樣率下,膚色重疊的示意圖。

35

表 4-3 240 fps 取樣率下,重疊膚色示意圖

原始影像 對比增強 定位眼睛 檢查膚色 重疊膚色

畫面 1

畫面 2

膚色區域重疊後,可以得到一張白色區域為膚色,黑色區域為非膚色的重疊 膚色影像,藉由這張影像,我們希望能夠繼續縮小搜尋範圍,得到如圖 4-6 的紅 色矩形大小。

4. 1. 4

重建眼睛範圍

透過表 4-3 處理後,得到一張重疊膚色影像,我們希望找到一個最小的矩形,

能夠包含眼睛(非膚色區域),透過肉眼觀察,能夠明確辨識出非膚色區域有一個 眼睛(黑色部分為非膚色區域),但也有雜訊,一般影像處理是透過侵蝕或膨脹處 理,去除一些雜訊,再透過影像連通法,將這些非膚色區域做標記,找出最大標 記區塊並繪出矩形,該做法必須針對每張影像的雜訊程度,手動調整影像侵蝕/

膨脹的遮罩大小,因此較不方便,雖然在一般情況下,加上手動調整的遮罩大小 能夠達到不錯的效果,但是一旦影像中的眼鏡邊框或頭髮的區域過大,將會發生 錯誤,如表 4-4。

OR

36 Box Size

Rebuild Box Move 4 Lines of Box

Check non-skin of each 4 Lines

No Yes

Output Box

checkLine for Line1 ~ Line4 Iterate

Stage 1:

clear skinflag

check non-skin pixel on the Line

if non-skin pixel numbers > tolerance range set skinflag

Stage 2:

if skinflag is set {

if Line is on the Boundary set skinflag

else

shiftCnt = shiftCnt + 1 clear skinflag = 0 }

else set skinflag Until skinflag is set Return shiftCnt

37

a. 矩形範圍初始化

首先,選取一個初始的 Box,其大小為整體影像的 1/9,起始點為 P(xStart,

yStart),其中 xStart = 1/3 Width,yStart = 1/3 Height,寬度為 1/3 Width,高度

為 1/3 Height,如圖 4-8 。

圖4-8 初始矩形範圍

b. 移動並檢查矩形四邊

對每一條 Line 上的像素進行檢查。以 Line 1 為例,如圖 4-9,首先在重 疊膚色影像上(圖 4-10 ),檢察 Line 1 上的每一個像素是否為非膚色,如果發 現非膚色像素,便讓 Conuter + 1,並檢查累記的 Counter 是否大於容忍範圍 (tolerance range),如果 Counter 的值大於容忍範圍,便停止檢查,並令 skinflag

= 1,如步驟 1 (Stage I)。

38

步驟 1 檢查 Line 上是否有非膚色像素

Stage 1:

clear skinflag

check non-skin pixel on the Line

if non-skin pixel number > tolerance range set skinflag

圖4-9 矩形上的各條 Line 示意圖 圖4-10 重疊膚色影像

步驟 2,首先判斷 skinflag 是否為 1,如果 skinflag 為 1,表示在檢查的 過程中,發現過多的非膚色像素,此時先判斷該 Line 是否到達影像邊界,如 果已經到達邊界,則將 skinflag 設為 1;如果 Line 還沒有到達影像的邊界,

便將 Line 向外移動同時 shiftCnt + 1,以 Line 1 為例,檢查 Line 1 後,發現仍 未到達邊界,便將 Line 1 向上移動,(同理,Line 2 向右移動,Line 3 向下移 動,Line 4 向左移動,如步驟 II 所示)得到新的搜尋 Line 1’ ,並將步驟 I 計 數的 Counter 清除為 0,skinflag 也設為 0。

如果跳出步驟 1 迴圈時的 skinflag 為 0,表示該 Line 上已經沒有非膚色 像素,即可讓 skinflag = 1,最後檢查 skinflag 的狀態,如果 skinflag = 1,表 示 Line 上已經沒有非膚色像素,或 Line 已經達到邊界,此時將會跳出迴圈,

並回傳 shiftCnt,而 shiftCnt 表示輸入的 Line 在檢查過程中向外移動的次數。

Line 1 Line 2

Line 3

Line 4

39

步驟 2 檢查 Line 是否到達邊界,並決定是否繼續檢查

Stage 2

if skiniflag is set {

if Line is no the Boundary set skinflag

else

shiftCnt = shiftCnt + 1 clear skinflag

} else

set skinflag

c. 重建矩形

經過移動後的 4 條 Line 應如圖 4-11 ,因此必須將各條 Line 相連接,透 過 Rebuild Box 步驟,便可得到圖 4-12 ,即重建後的 Box。

P

Start

: ( xStart + checkLine( Line 4 ), yStart + checkLine( Line 1) )

P

End

: ( xEnd + checkLine( Line 3), yEnd + checkLine( Line 2 ) )

重建矩形作法

圖4-11 檢查與移動後的矩形四邊 圖4-12 重建後的矩形 I

Line 1 Line 2

Line 3

Line 4

40

d. 檢查矩形

最後檢查重建後的矩形上的 4 條 Line 是否有過多的非膚色像素,如果所 有的 Line 上含有太多的非膚色像素,則回到步驟 b. 並繼續向外移動,如果 非膚色像素在容忍範圍內,則輸出 Box。以圖 4-12 為例,新矩形上的 Line 1 仍含有過多的非膚色像素,因此僅需要對 Line 1 進行移動,如圖 4-13 ,移 動後再重建的矩形如圖 4-14 ,便可輸出矩形範圍(Box)。

圖4-13 檢查與移動矩形的邊 圖4-14 重建後的矩形 II

在某些情況下,縮小的程度會太大,因此我們多加上一判斷,當縮小後 的寬度小於原本影像寬度的一半,我們僅更新縮小後的高度,寬度保持與原 本相同,即可避免掉範圍縮至太小的狀況發生,圖 4-15 ,為矩形範圍縮小 太多的狀況,圖 4-16 ,為重新調整矩形大小後的影像。

圖4-15 矩形範圍太小 圖4-16 僅更新矩形高度,保持寬度

41

4. 2 估計眼睛位置

經過 4.1 節的處理,能夠得到一個僅包含眼睛的矩形範圍,本節希望透過 SVM(Support Vector Machine)[48]分類器的處理,將眼睛影像分為四大類,如圖 4-17 至圖 4-20 :

圖4-17 雙邊可用特徵 圖4-18 左邊可用特徵

圖4-19 右邊可用特徵 圖4-20 無可用特徵

首先判斷影像是否為閉眼影像,若非閉眼影像,則將影像的局部特徵增強,

再使用離散餘弦轉換(DCT,Discrete Cosine Transform)抽取特徵,再將特徵資訊 分類,最後使用 SVM,進行訓練與預測,以上步驟將依序於 4.2.1 - 4.2.4 節介紹。

4. 2. 1

閉眼影像偵測

我們利用二項資訊,判別是眼睛是否為閉上的狀態,首先使用 4.1.3 節所得 到的膚色資訊做為判斷依據,如果整張影像中的膚色區域占了整張影像的 75%以 上,便認定為閉眼。第二項資訊為找出整個影片中,最暗像素出現的最高次數,

並以該次數的 60%做為門檻值,當任一畫面的最暗像素出現的數量小於該門檻值,

便認定為閉眼,為了讓計算較為迅速,門檻值使用即時更新,當任一張影像的最

便認定為閉眼,為了讓計算較為迅速,門檻值使用即時更新,當任一張影像的最

相關文件