陳振爍,陳炯希
(江蘇大學(xué),江蘇 鎮(zhèn)江 212013)
近年來,現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)從電子設(shè)計外圍逐漸成為電子設(shè)計的核心,應(yīng)用范圍涵蓋通信、汽車、航空和國防、消費市場、工業(yè)和醫(yī)療等。2010年,可編程市場規(guī)模已超過40億美元。排除可編程器件供應(yīng)商很難觸及的手機和PC相關(guān)的特定消費類的480億美元ASIC/ASSP市場,可編程業(yè)者可進軍并贏取約280億美元市場規(guī)模中的一些機遇,發(fā)展空間極其廣闊。在此大背景下,本團隊用FPGA去完成一個手勢識別投影系統(tǒng)的設(shè)計。
FPGA是在可編程陣列邏輯(Programmable Array Logic,PAL)、通用陣列邏輯(Generic Array Logic,GAL)等可編程器件的基礎(chǔ)上進一步發(fā)展的產(chǎn)物,作為專用集成電路(Application Specific Integrated Circuit,ASIC)領(lǐng)域的一種半定制電路而出現(xiàn),既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點[1]。FPGA具有眾多的優(yōu)點,內(nèi)部擁有非常豐富的邏輯單元和I/O引腳接口,而且ASIC電路使用FPGA來進行開發(fā)和設(shè)計,相較于其他芯片,其開發(fā)周期縮減、金錢投入更低,而且不用承擔(dān)很大的風(fēng)險,非常穩(wěn)定。FPGA采用的CMOS工藝的功耗相比單片機更加低。近年來FPGA在通信領(lǐng)域的應(yīng)用已經(jīng)趨于成熟,眾多FPGA廠商都在自己的芯片上增加了通信接口,以契合當(dāng)今科技和社會的發(fā)展。比如,Altera公司cyclone V系列芯片已經(jīng)提供了GTP/GTX接口,可以達到相當(dāng)高速的傳輸數(shù)據(jù)。由于FPGA與單片機所采用的串行數(shù)據(jù)處理不同,F(xiàn)PGA的并行處理能夠到達更高的速度,故常常將FPGA運用到現(xiàn)如今的大數(shù)據(jù)算法的處理上。
手勢識別是計算機科學(xué)和語言技術(shù)中的一個主題,目的是通過數(shù)學(xué)算法來識別人類手勢。現(xiàn)如今,在機器人、數(shù)碼產(chǎn)品、手語識別系統(tǒng)、遙控裝置、虛擬現(xiàn)實技術(shù)上都用到了手勢識別。手勢可以源自任何身體運動或狀態(tài),但通常源自面部或手,當(dāng)前焦點包括來自面部和手勢識別的情感識別。用戶可以使用簡單的手勢來控制或與設(shè)備交互,而無需接觸,姿勢、步態(tài)和人類行為的識別也是手勢識別技術(shù)的主題。手勢識別可以被視為計算機理解人體語言的方式,在機器和人之間搭建比原始文本用戶界面或甚至圖形用戶界面(Graphical User Interface,GUI)等更豐富的橋梁[2]。
本項目采用FPGA主控板為硬件平臺,配合攝像頭OV7725對手勢進行實時采集,并通過基于膚色聚類的算法,將圖像轉(zhuǎn)換為二值圖像,再進行濾波、膨脹和邊緣檢測,對產(chǎn)生的數(shù)據(jù)進行手指識別和參考點提取,最后通過顯示繪圖陣列(Video Graphic Array,VGA)顯示器或投影儀對處理后的手勢圖像進行實時顯示,亦可對顯示器或投影儀的界面進行一定的操作,起到人機交互的作用[3]。圖像采集上,最開始用的是OV5640攝像頭,但因為其2 592×1 944的分辨率數(shù)據(jù)太大,使后續(xù)數(shù)據(jù)采集和分析速度過慢,于是最終選擇使用輸出數(shù)據(jù)更小且較適用的OV7725攝像頭,其640×480的分辨率與顯示設(shè)備更加切合。在OV7725的多種圖像輸出格式中,選擇了YCbCr422格式(表示每4個像素有4個亮度分量,4個色度分量(YYYYCbCrCbCr))??紤]到通常使用的RGB格式的數(shù)據(jù)亮度和色度不可分割,而YCbCr是可以將亮度和色度分開,可以在圖像信息處理上占有很大的優(yōu)勢,且YCbCr格式輸出的圖像數(shù)據(jù)只有RGB格式輸出數(shù)據(jù)大小的一半,故選擇YCbCr格式輸出。同時,OV7725攝像頭的輸出協(xié)議是SCCB 跟IIC協(xié)議相差無幾,就不再贅述。系統(tǒng)框架如圖1所示。
圖像采集的攝像頭本團隊采用市面上常見的COMS OV7725模塊,該攝像頭有30 W像素,且其640×480的分辨率也能與終端顯示器的分辨率相匹配。該COMS OV7725攝像頭模塊采用SCCB——IIC通信方式,此種協(xié)議與IIC協(xié)議的差異僅僅只有SCCB只能單次讀、SCCB讀操作中間有stop,而其他皆與IIC都相同。數(shù)據(jù)傳輸速率為25 MHz,可以達到實驗作品的要求,圖像輸出大小為640×480,而本設(shè)計是采用向下1/2采集的方式存儲圖像信息[4]。圖像采集處理模塊如圖2所示。
圖1 系統(tǒng)框架
圖2 圖像采集處理模塊
RGB(紅綠藍)是依據(jù)人眼識別的顏色定義出的空間,可表示大部分顏色,但在科學(xué)研究一般不采用RGB顏色空間,因為它的細(xì)節(jié)難以進行數(shù)字化的調(diào)整。它將色調(diào)、亮度、飽和度3個量放在一起表示,很難分開。YCbCr是在世界數(shù)字組織視頻標(biāo)準(zhǔn)研制過程中作為ITU - R BT1601建議的一部分,其中Y為亮度,Cb,Cr都指色彩。考慮到RGB色彩空間在處理圖像亮度與色度的不易分割的缺點,而YCbCr色彩空間的亮度和色度是分開的,圖像信息在處理上有很大的優(yōu)勢,因此,本設(shè)計先將RGB轉(zhuǎn)YCbCr色彩,再對亮度和色度分別進行處理,實現(xiàn)在色彩上的高速識別功能,同時也簡化了識別算法的復(fù)雜性。膚色識別設(shè)計思想如圖3所示。
圖3 膚色識別設(shè)計思想
在物體識別上,對圖像的濾波是必不可少的關(guān)鍵,圖像濾波有二值化、灰度化、邊緣檢測、角點檢測等多種方式。由于本項目背景比較簡單,且受到開發(fā)板RAM資源的限制,故采用基于膚色分割的原理,實現(xiàn)對視頻數(shù)據(jù)流的二值化,從而將背景與目標(biāo)物體(手指)分割,使待識別物突顯出來,通過對高亮像素點的采樣來實現(xiàn)對手指的識別。
采用向下1/2的數(shù)據(jù)采集方式,因此在還原實際圖像大小時,需要將顯示的圖像坐標(biāo)換算到實際圖像的坐標(biāo)。本設(shè)計將采集實際物體的幾個點作為參考點,并以此建立投影儀平面坐標(biāo)系,實現(xiàn)對目標(biāo)物體的坐標(biāo)校準(zhǔn),如圖4所示,進而得到目標(biāo)在投影儀上的位置。
圖4 坐標(biāo)采集與校準(zhǔn)設(shè)計思想
(1)顯示模塊中,本設(shè)計采用了一個深度為320 000的雙口RAM,實現(xiàn)對手指移動過痕跡的存儲,并通過一個膨脹算法實現(xiàn)對“筆記”的加粗,后面經(jīng)過RS232協(xié)議將“膨脹”后的手指軌跡的圖像數(shù)據(jù)傳輸給640×480的顯示器上,起到人機交互的作用。
(2)時鐘管理模塊中,本設(shè)計為跨時鐘域設(shè)計,外部輸入時鐘為100 MHz,通過時鐘管理模塊(pll)將100 MHz的系統(tǒng)時鐘頻率分為25 MHz,50 MHz,75 MHz,250 MHz四路時鐘信號,實現(xiàn)對整個工程的時序約束。
FPGA主控板通過處理攝像頭識別人的手,在對人的手勢進行分析,并通過VGA將手勢數(shù)據(jù)傳輸?shù)斤@示器或者投影儀,讓顯示器或投影儀將手勢的信息進行反饋,亦可對顯示器或投影儀的界面進行一定的操作,如通過手勢讓繪畫顏色進行改變,讓開發(fā)板上的LED燈呈流水狀運行,起到人機交互的作用。
圖5 實驗現(xiàn)象