第三章 高速眼動儀系統架構
3.2.2 Starburst Algorithm 介紹與存在問題
Starburst 演算法[33] 為在紅外光眼動儀上被大量使用的演算法,其核心 技術包含 Feature-based 與 Model-based 兩個部分 :
Feature-based 的方法在於利用影像中的一些重要資訊,例如紅外光拍攝 的眼睛影像,能夠得到清楚的瞳孔區域,再選取一個適當的門檻值,便能夠 將瞳孔與其他部分分離,此時僅需要計算幾何中心便能得到瞳孔中心座標,
也就是眼球的中心位置。
Model-based 的方法為利用瞳孔可能的形狀,如圓形或橢圓形,並在影 像中找尋適當的瞳孔或虹膜輪廓特徵,再將這些特徵代入適當的方程式(圓或 橢圓方程式),經過不斷篩選這些特徵點,直到所有特徵代入方程式後,得到 的誤差達到容忍範圍內才停止,此時計算得到的圓形中心(橢圓中心)即為瞳 孔的中心位置,Starburst 演算法虛擬程式碼如表 3-1。
20
Starburst 演算法的流程共分為 2 個步驟:
步驟 I :
從眼球中的任一起始點 Pstart出發,選定使用 N 條射線由 Pstart向外延 展,每一條射線在向外延伸的同時,記錄連續 2 個像素亮度的絕對值,如果 絕對值大於門檻值,便停止向外延伸,並決定該點為特徵點 Pfeature,直到每 一條射線都停止前進。(如果超過搜尋範圍,也停止前進)
步驟 II :
從步驟 I 找到的各個特徵點為中心,重新對每一點 Pfeature再使用 N 條射線向外延展,但是延展的方向是朝著步驟 I 的起始點 Pstart方向延伸,並 同時記錄連續 2 個像素亮度的絕對值,如果絕對值大於門檻值便停止向外延 伸,並決定該點為特徵點,直到每一條射線都停止前進(如果超過搜尋範圍,
也停止前進),最後將所找到的特徵點取幾何中心,令其為新的起始點 P’start
,
再重複步驟 I,直到 P’start,收斂為止。21
表 3-1 Starburst 演算法虛擬碼 Iterate
Stage 1:
Follow rays extending from the starting point Calculate intensity derivative at each point If derivative > threshold then
Place feature point Halt marching along ray
Stage 2:
For each feature point detected in Stage 1
March along rays returning towards the start point Calculate intensity derivative at each point
If derivative > threshold then Place feature point Halt marching along ray
Starting point = geometric center of feature points Until starting point converges
透過以上步驟,經過多次迭代,便能夠定位出瞳孔中心,發明 Starburst 演算法的作者提到,這個演算法不僅適用於紅外光下的眼睛影像,一般光源 下的眼睛影像也可適用,但經過我們的測試之後,一般光源環境下使用 Starburst 演算法,將造成中心點無法收斂的狀況,或收斂的結果非常糟糕。
以下是二個最主要的原因:
22
1.
黑眼球形狀不完整:一般光源下我們無法得到如紅外光影像清楚的瞳孔邊緣,僅能得到黑眼 球(虹膜)與眼白(鞏膜)間的邊緣影像(異色邊緣),而瞳孔無論在那種情況下,
幾乎都不會被遮擋,因此形狀完整,邊緣對比度高,曲線平滑完整,而黑眼 球的形狀較容易受到外在因素(環境中的其他光源造成的反光點)影響,導致 破碎或不完整,因此在可見光的環境下使用 Starburst 演算法所找到的特徵點 錯誤率將會提高不少,導致計算得到的圓有所偏差,如果一般光源下的影像 邊緣完整,而且沒有反光點,那 Starburst 演算法將會是個強健的演算法。
2.
反光點不固定:紅外光眼動儀在紅外光不足的情況下,會提供額外的紅外光源進行補償,
雖然這些額外光源同樣在紅外光影像上產生反光點,但是額外光源的位置是 已知的,而且這些反光點不會出現在瞳孔上,因此是相對容易捕捉及去除的,
然而在一般光源下,儘管是單純的室內環境,光源的數量、位置以及大小皆 為無法預知的,因此處理更加困難,依照 Starburst 演算法只利用門檻值比較 延伸線上連續 2 個像素亮度的絕對值,影像中的反光點邊緣也有可能被選定 為特徵點,因此其穩定度是令人擔憂的。
23