第三章 眼動儀系統架構
3.3 實景眼動儀
3.3.2 實景眼動儀軟體架構
在軟體方面,我們分成兩個部分,第一部分為 OpenSource 軟體 Gaze
Tracker,利用 OpenCV(Open Source Computer Vision Library)[50],電腦視覺資料 庫,做影像處理。將攝影機所讀取到的影像,做雜訊去除再進行瞳孔偵測,利 用 9 點校正的方式讓使用者觀看螢幕上面的白點,計算眼球在電腦螢幕上各點 的凝視點(Gaze Points)位置,作為之後的參考點位置。第二部分是利用 Microsoft C#作為開發環境進行使用者介面的設計,取得第一部分的 API 及各種眼球的資 訊,如時間與座標,透過實景的 Glyph Code[51]做單點校正,並在我們觀看環境 的周圍貼上不同的 Glyph Code 可以方便定義 ROI 區域,最後錄製實景影像成
A. Gaze Tracker
將攝影機讀取的眼球影像抓取,並透過紅外線的補償,減少雜訊的干擾,
增加影像的清晰度,Gaze Tracker 取得影像後進行影像處理,調整適當的門檻值 抓取瞳孔中心點,再透過九點校正的方式取得眼睛在各個凝視點的座標和凝視 時間,以上方法和過程與螢幕眼動儀相同,在此不再詳細介紹。
B. 啟動實景攝影機和取得 API
實景眼動儀由兩個攝影機所組成,一開始是利用 PS3 攝影機取得眼睛的影 像,在此我們要切換到實景攝影機錄影,X 及 Y 為該點在影片上的座標【圖 3-22】。
圖 3-22. 計算上下左右極限範為方法
同時,計算眼睛的凝視點位置,找出眼睛在影片裡面的上下左右極限範圍
【圖 3-22】,目的是為了能正確從螢幕上面的座標轉換到影片上的座標,由於 我們要求的上下及左右的極限範圍,所以先將 minX 和 minY 先設定為最大值,
maxX 和 maxY 先設定為最小值,接著將凝視點的座標資訊(inputX 和 inputY)做比 較,如果凝視點的座標大於或小於我們設定的值,則將其值存進陣列裡面,方 法如【圖 3-23】:
Set:
C. Glyph Code 單點校正
使用者透過觀看 Glyph Code 右下角的同時,按下校正的動作,由於在使用 的過程中會用到不同的 Glyph Code 做 ROI 定位的動作,為了防止校正時發生不 必要的錯誤,受到其他的 Glyph Code 干擾,我們定義一個校正專用的圖形,在 這邊我們將校正用的 Glyph Code 設定為以下的型式【圖 3-25】,用矩陣的型式 表示 1 代表白色,0 代表黑色【圖 3-26】,校正的情形如【圖 3-27】所示紅色 圓圈的地方為校正點。
利用計算四邊形中,與原點距離最長的點做為校正點,如【圖 3-24】所示:
2 2 max
x y
(3.14)
(0,0)
校正點 x
y
圖 3-24. 校正點計算
圖 3-25.校正 Glyph Code
0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0
圖 3-26. Glyph Code 矩陣的型式
圖 3-27. Glyph Code 校正點
D. 紀錄眼動資料與輸出
在這裡分成兩個部分,第一部分是每秒 30 畫格的影片,格式為 AVI,解析 度為 640*480,影片的目的是將我們看的過程中,將看到的實景影像做紀錄,第
二部分為眼動數據,利用 TXT 文件將每一筆的資料做紀錄,將錄影過程中,眼 睛在影片上的凝視點和凝視時間紀錄下,格式為(ms,x,y),ms 代表眼睛在影片上 座標(x,y)點所凝視的時間,單位是毫秒(millisecond),頻率每秒可達 180Hz。