眼動跟蹤中基于CamShift算法的FPGA實現方法
【技術領域】
[0001] 本發明涉及醫學領域,尤其涉及一種眼動跟蹤中基于CamShift算法的FPGA實現 方法。
【背景技術】
[0002] 眼動追蹤,英文eyetracking,是指通過測量眼睛的注視點的位置或者眼球相對 頭部的運動而實現對眼球運動的追蹤。眼動儀是一種能夠跟蹤測量眼球位置及眼球運動信 息的一種設備,在視覺系統、心理學、認知語言學的研宄中有廣泛的應用。目前眼動追蹤有 多種方法,其中最常用的無創手段是通過視頻拍攝設備來獲取眼睛的位置。有創的手段包 括在眼睛中埋置眼動測定線圈或者使用微電極描記眼動電圖。
【發明內容】
[0003] 本發明旨在提供一種眼動跟蹤中基于CamShift算法的FPGA實現方法,能夠獲取 到瞳孔的移動軌跡坐標,實現眼動跟蹤。
[0004] 為達到上述目的,本發明是采用以下技術方案實現的:
[0005] 本發明公開的眼動跟蹤中基于CamShift算法的FPGA實現方法,包括以下步驟:
[0006] a、圖像采集:采用圖像傳感器實時采集眼動圖像,并將眼動圖像實時傳送、存儲;
[0007]b、提取眼球瞳孔的移動軌跡:將步驟a中采集的眼動圖像采用CamShift算法提取 出眼球瞳孔的移動軌跡,所述CamShift算法采用FPGA實現;
[0008] C、圖像數據傳輸:通過以太網接口將圖像數據及移動軌跡坐標實時傳輸到計算 機;
[0009]d、圖像顯示和存儲:計算機將接收的圖像數據和移動軌跡處理后進行顯示和存 儲。
[0010] 優選的,在步驟b中,采用FPGA實現CamAShift算法的具體方法包括以下子步驟: [0011]b. 1、使用地址譯碼計數器,按照行列偏移量讀取幀緩存中的像素數據;
[0012]b. 2、對所有行內的像素數據求算數和,緩存到行累加和寄存器LnSUM;
[0013]b. 3、所有列內的像素數據求算數和,緩存到列累加和寄存器CnSUM;
[0014]b. 4、運用依次比較的方法,找出行累加和寄存器中最小的值所在的行號,作為中 心點Y坐標;
[0015]b. 5、運用依次比較的方法,找出列累加和寄存器中最小的值所在的列號,作為中 心點X坐標;
[0016] b. 6、傳輸中心點X、Y坐標,并重復上述步驟,進行下一幀運算;
[0017]b. 7、將連續幀的中心點X、Y坐標形成軌跡曲線,得到人眼瞳孔的運動軌跡。
[0018] 進一步的,在步驟a中,所述眼動圖像采用數據流方式傳送并存儲在外部存儲器 中;
[0019] 在步驟b中,外部存儲器的存儲空間分為奇數頁及偶數頁,當奇數頁正在寫入數 據時,偶數頁進行CamShift運算;當偶數頁開始寫入數據時,奇數頁開始進行CamShift運 算。
[0020] 進一步的,所述FPGA中固化有CamShift算法邏輯模塊,所述圖像傳感器傳送的圖 像數據流通過CamShift算法邏輯模塊計算后傳送到以太網接口。
[0021] 進一步的,所述FPGA中固化有千兆數據鏈路模塊,所述圖像傳感器傳送的圖像數 據流通過千兆數據鏈路模塊傳送到以太網接口。
[0022] 優選的,所述圖像傳感器為CMOS圖像傳感器,所述外部存儲器采用SRAM。
[0023] 進一步優選,所述CMOS圖像傳感器為LUPA300,所述SRAM為IS61LV25616。
[0024] 進一步的,在步驟a中,FPGA首先完成對COMOS圖像傳感器的初始化配置,初始化 的參數包括分辨率、采集幀率、灰度值、亮度值,并控制COMOS圖像傳感器進入設定的工作 模式,COMOS圖像傳感器進入工作模式后,在FPGA給出的系統時鐘控制下,開始連續獲取視 頻數據。
[0025] 優選的,所述分辨率不小于320*240,所述采集幀率不小于500幀/秒,所述灰度值 采用8位二進制數表征。
[0026] 本發明公開的眼動跟蹤中基于CamShift算法的FPGA實現方法,采用無創手段來 獲取被測者眼睛的眼動信息,通過圖像傳感器采用眼部,再對采集的視頻使用算法進行數 據提取,獲取到瞳孔的移動軌跡坐標,實現眼動跟蹤。這種在視覺刺激跟蹤場合具有非常寬 廣的意義,可用于在如心理測試領域,因為很多心理受訪者往往處于某種閉塞的心理保護, 但如果施加某種視覺刺激或語言告知,往往會引起其眼部發生某種變化,即某種不安情緒 會通過眼球的移動反映出來,從而對其進行下一步誘導。CamShift整體算法實現流程簡單、 明了,能有效解決目標變形和遮擋的問題,對系統資源要求不高,時間復雜度低,在簡單背 景下能夠取得良好的跟蹤效果。但當背景較為復雜,或者有許多與目標顏色相似像素干擾 的情況下,會導致跟蹤失敗。因為它單純的考慮顏色直方圖,忽略了目標的空間分布特性, 所以這種情況下需加入對跟蹤目標的預測算法。
[0027] 由于人眼的及瞳孔的構成較為簡單,不存在過多顏色相似像素干擾,瞳孔像素分 布規律性非常好,因此識別準確率很高。實際測試及分析也表明了這種方法的實現效果較 為理想,尤其在使用FPGA進行眼動跟蹤識別時,可操作性好、實現簡單、識別準確率高,為 眼動跟蹤提供了一種行之有效的現實依據。
【附圖說明】
[0028] 圖1為本發明的原理框圖;
[0029] 圖2為對一幀圖像數據進行CamShift運算的流程圖;
[0030] 圖3為行、列累加和在X、Y軸上的投影曲線;
[0031] 圖4為計算一個行累加和的邏輯構成圖。
【具體實施方式】
[0032] 為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖,對本發明進 行進一步詳細說明。
[0033] 如圖1所示,本發明公開的眼動跟蹤中基于CamShift算法的FPGA實現方法,采用 FPGA作為主控核心處理及采集CPU,使用LUPA300作為高速圖像傳感單元,其最高圖像采集 幀率可達500fps/324*240。采集的視頻數據需要通過FPGA使用CamAShift算法提取出眼 球瞳孔的移動軌跡,千兆以太網接口將圖像數據及移動軌跡坐標實時傳輸到PC計算機上 進行存儲。
[0034]FPGA首先完成對LUPA300高速圖像傳感器的初始化配置,如分辨率、采集幀率、灰 度值、亮度值等,使其進入設定的工作模式。LUPA300進入工作模式后,在FPGA給出的系統 時鐘控制下,開始連續獲取視頻數據,FPGA硬件邏輯的并行高速特性為視頻數據的連續不 間斷采集及CamShift算法實現提供了有力保證。
[0035] 通過LUPA300采集到的8位數據代表了當前像素的灰度值,在數據流傳輸的過程 中,數據的吞吐量是非常大的,在320*240分辨率時,可達320*240*500*8 = 307. 2Mb/s。 FPGA內置的M4K存儲器塊無法緩存,這里使用千兆數據鏈路邏輯,將視頻圖像數據流通過 千兆以太網接口實時傳輸到計算機端進行存儲。灰度像素數據傳輸到計算機端后,再使用 接口軟件轉換成黑白的視頻圖像進行顯示,并保存為特定的數據格式。
[0036] 在進行千兆數據鏈路傳輸的同時,FPGA將視頻數據流按幀同步存入外部的SRAM 存儲器,本設計中使用了IS61LV25616高速型SRAM,具有16位數據位寬,存儲容量可達 256KB,足夠為單幅圖像提供幀緩存。由于幀數據流的傳輸是不間斷的,并且CamShift運算 需要完整的數據幀才能進行,為了保證存入和運算的不間斷進行,將IS61LV25616SRAM的 存儲空間分為奇數頁及偶數頁,當奇數頁正在寫入數據時,偶數頁進行CamShift運算;當 偶數頁開始寫入數據時,奇數頁開始進行CamShift運算,即常說的乒乓操作。由于FPGA的 運行邏輯是并行的,乒乓操作可以保證連續幀的CamShift運算不間斷進行,從而也可以最 高效地利用數據存儲器資源
[0037] 一幀圖像的像素行列分布,在對分辨率為320*240的圖像幀進行CamShift運算 時,行累加和寄存器LnSUM的取值范圍為0~239,對8位數據而言,行累加和的最大數值為 3 20* (28-1) = 8 1 9 1 9。列累加和寄存器的取值范圍為0~319,最大數值為240* (28-1)= 61199。因此行累加和寄存器及列累加和寄存器的數據位寬需定義為17位,最大可存儲的 數據值為2 17= 131072。定義L1SUMa2SUM'……、L239SUM共240個17位行累加寄存器,定 義(^通、(^通、……X319SUM共320個17位列累加寄存器。為了便于后續CamShift數據 運算,將行累加和寄存器及列累加和寄存器共560個均定義在FPGA中。
[0038]IS61LV25616SRAM存儲芯片共有18根地址線,即Atl~A17。A17用作奇、偶幀乒乓操 作切換,A17= 0時,寫入奇數幀像素數據,偶數幀讀取數據作運算處理;A17= 1時,奇數幀 讀取數據作運算處理,寫入偶數幀像素數據。一幀圖像共需320*240 = 76800個數據存儲 空間,劃分的像素地址空間分配如表1所示:
[0039] 表1,像素地址空間分配
[0040]
[0041] 對一幀圖像進行CamShift算法處理的流程如圖2所示;包括以下子步驟:
[0042] b. 1、使用地址