陳振爍,陳炯希
(江蘇大學,江蘇 鎮江 212013)
近年來,現場可編程邏輯門陣列(Field Programmable Gate Array,FPGA)從電子設計外圍逐漸成為電子設計的核心,應用范圍涵蓋通信、汽車、航空和國防、消費市場、工業和醫療等。2010年,可編程市場規模已超過40億美元。排除可編程器件供應商很難觸及的手機和PC相關的特定消費類的480億美元ASIC/ASSP市場,可編程業者可進軍并贏取約280億美元市場規模中的一些機遇,發展空間極其廣闊。在此大背景下,本團隊用FPGA去完成一個手勢識別投影系統的設計。
FPGA是在可編程陣列邏輯(Programmable Array Logic,PAL)、通用陣列邏輯(Generic Array Logic,GAL)等可編程器件的基礎上進一步發展的產物,作為專用集成電路(Application Specific Integrated Circuit,ASIC)領域的一種半定制電路而出現,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點[1]。FPGA具有眾多的優點,內部擁有非常豐富的邏輯單元和I/O引腳接口,而且ASIC電路使用FPGA來進行開發和設計,相較于其他芯片,其開發周期縮減、金錢投入更低,而且不用承擔很大的風險,非常穩定。FPGA采用的CMOS工藝的功耗相比單片機更加低。近年來FPGA在通信領域的應用已經趨于成熟,眾多FPGA廠商都在自己的芯片上增加了通信接口,以契合當今科技和社會的發展。比如,Altera公司cyclone V系列芯片已經提供了GTP/GTX接口,可以達到相當高速的傳輸數據。由于FPGA與單片機所采用的串行數據處理不同,FPGA的并行處理能夠到達更高的速度,故常常將FPGA運用到現如今的大數據算法的處理上。
手勢識別是計算機科學和語言技術中的一個主題,目的是通過數學算法來識別人類手勢。現如今,在機器人、數碼產品、手語識別系統、遙控裝置、虛擬現實技術上都用到了手勢識別。手勢可以源自任何身體運動或狀態,但通常源自面部或手,當前焦點包括來自面部和手勢識別的情感識別。用戶可以使用簡單的手勢來控制或與設備交互,而無需接觸,姿勢、步態和人類行為的識別也是手勢識別技術的主題。手勢識別可以被視為計算機理解人體語言的方式,在機器和人之間搭建比原始文本用戶界面或甚至圖形用戶界面(Graphical User Interface,GUI)等更豐富的橋梁[2]。
本項目采用FPGA主控板為硬件平臺,配合攝像頭OV7725對手勢進行實時采集,并通過基于膚色聚類的算法,將圖像轉換為二值圖像,再進行濾波、膨脹和邊緣檢測,對產生的數據進行手指識別和參考點提取,最后通過顯示繪圖陣列(Video Graphic Array,VGA)顯示器或投影儀對處理后的手勢圖像進行實時顯示,亦可對顯示器或投影儀的界面進行一定的操作,起到人機交互的作用[3]。圖像采集上,最開始用的是OV5640攝像頭,但因為其2 592×1 944的分辨率數據太大,使后續數據采集和分析速度過慢,于是最終選擇使用輸出數據更小且較適用的OV7725攝像頭,其640×480的分辨率與顯示設備更加切合。在OV7725的多種圖像輸出格式中,選擇了YCbCr422格式(表示每4個像素有4個亮度分量,4個色度分量(YYYYCbCrCbCr))。考慮到通常使用的RGB格式的數據亮度和色度不可分割,而YCbCr是可以將亮度和色度分開,可以在圖像信息處理上占有很大的優勢,且YCbCr格式輸出的圖像數據只有RGB格式輸出數據大小的一半,故選擇YCbCr格式輸出。同時,OV7725攝像頭的輸出協議是SCCB 跟IIC協議相差無幾,就不再贅述。系統框架如圖1所示。
圖像采集的攝像頭本團隊采用市面上常見的COMS OV7725模塊,該攝像頭有30 W像素,且其640×480的分辨率也能與終端顯示器的分辨率相匹配。該COMS OV7725攝像頭模塊采用SCCB——IIC通信方式,此種協議與IIC協議的差異僅僅只有SCCB只能單次讀、SCCB讀操作中間有stop,而其他皆與IIC都相同。數據傳輸速率為25 MHz,可以達到實驗作品的要求,圖像輸出大小為640×480,而本設計是采用向下1/2采集的方式存儲圖像信息[4]。圖像采集處理模塊如圖2所示。

圖1 系統框架

圖2 圖像采集處理模塊
RGB(紅綠藍)是依據人眼識別的顏色定義出的空間,可表示大部分顏色,但在科學研究一般不采用RGB顏色空間,因為它的細節難以進行數字化的調整。它將色調、亮度、飽和度3個量放在一起表示,很難分開。YCbCr是在世界數字組織視頻標準研制過程中作為ITU - R BT1601建議的一部分,其中Y為亮度,Cb,Cr都指色彩。考慮到RGB色彩空間在處理圖像亮度與色度的不易分割的缺點,而YCbCr色彩空間的亮度和色度是分開的,圖像信息在處理上有很大的優勢,因此,本設計先將RGB轉YCbCr色彩,再對亮度和色度分別進行處理,實現在色彩上的高速識別功能,同時也簡化了識別算法的復雜性。膚色識別設計思想如圖3所示。

圖3 膚色識別設計思想
在物體識別上,對圖像的濾波是必不可少的關鍵,圖像濾波有二值化、灰度化、邊緣檢測、角點檢測等多種方式。由于本項目背景比較簡單,且受到開發板RAM資源的限制,故采用基于膚色分割的原理,實現對視頻數據流的二值化,從而將背景與目標物體(手指)分割,使待識別物突顯出來,通過對高亮像素點的采樣來實現對手指的識別。
采用向下1/2的數據采集方式,因此在還原實際圖像大小時,需要將顯示的圖像坐標換算到實際圖像的坐標。本設計將采集實際物體的幾個點作為參考點,并以此建立投影儀平面坐標系,實現對目標物體的坐標校準,如圖4所示,進而得到目標在投影儀上的位置。

圖4 坐標采集與校準設計思想
(1)顯示模塊中,本設計采用了一個深度為320 000的雙口RAM,實現對手指移動過痕跡的存儲,并通過一個膨脹算法實現對“筆記”的加粗,后面經過RS232協議將“膨脹”后的手指軌跡的圖像數據傳輸給640×480的顯示器上,起到人機交互的作用。
(2)時鐘管理模塊中,本設計為跨時鐘域設計,外部輸入時鐘為100 MHz,通過時鐘管理模塊(pll)將100 MHz的系統時鐘頻率分為25 MHz,50 MHz,75 MHz,250 MHz四路時鐘信號,實現對整個工程的時序約束。
FPGA主控板通過處理攝像頭識別人的手,在對人的手勢進行分析,并通過VGA將手勢數據傳輸到顯示器或者投影儀,讓顯示器或投影儀將手勢的信息進行反饋,亦可對顯示器或投影儀的界面進行一定的操作,如通過手勢讓繪畫顏色進行改變,讓開發板上的LED燈呈流水狀運行,起到人機交互的作用。

圖5 實驗現象