由于傳統(tǒng)電視機遙控器的按鍵操作比較機械且缺乏娛樂性,設(shè)計了一種以DSP2812為核心的手勢識別算法。通過將用戶手勢運動的信息轉(zhuǎn)換成相應(yīng)的紅外信號,從而實現(xiàn)手勢遙控電視機更換頻道和調(diào)節(jié)音量的目的。該系統(tǒng)主要由雙端口RAM通信的雙DSP并行處理器、CMOS數(shù)字攝像頭、紅外遙控模塊、上位機調(diào)試軟件和以太網(wǎng)通信模塊組成。實驗測試表明,該系統(tǒng)能夠?qū)崿F(xiàn)用戶手勢圖像的采集、手勢動作的識別、紅外遙控及以太網(wǎng)通信功能。
傳統(tǒng)電視機遙控器是一種按鍵操控方式,其操作比較機械且缺乏娛樂性。本文提出一種采用直接判斷使用者手部動作的方法遙控電視機,使用者在攝像頭拍攝范圍內(nèi)按照規(guī)定的擺放方式移動手部,就能夠遙控電視機進行音量增減或頻道變換等操作。設(shè)計使人們對電視機的遙控操作更加便捷、人性化,豐富大眾的日常生活。
1系統(tǒng)設(shè)計方案
手勢識別電視機遙控器是集合圖像采集、手勢識別和紅外遙控三大主要功能的控制裝置。依據(jù)要實現(xiàn)的采集圖像能力和DSP處理視頻流能力的功能要求,確定系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1手勢識別電視遙控器系統(tǒng)結(jié)構(gòu)
本系統(tǒng)采用了雙DSP共同工作的方式,主要由六個模塊組成。
1)攝像頭模塊:由攝像頭OV7620及驅(qū)動電路組成,負責手勢圖像采集。
2) DSP1:核心是TMS320F2812,負責對圖像采集及預(yù)處理,與上位機網(wǎng)絡(luò)通信和用戶按鍵信息的輸入。
3)上位機:顯示實時采集的圖像,圖像處理結(jié)果和調(diào)試參數(shù)等。
4)雙端口RAM模塊:實現(xiàn)兩個DSP之間的高效數(shù)據(jù)通信。
5) DSP2:負責提取手勢圖像特征和向紅外遙控模塊發(fā)送指令。它從雙端口RAM獲取圖像數(shù)據(jù),從圖像中提取有用的特征,并將判斷結(jié)果轉(zhuǎn)換成相應(yīng)的遙控指令。
6)紅外遙控模塊:負責學習電視機配套遙控器的紅外遙控指令,將其放入指定的存儲空間中。在DSP2給出發(fā)射指令時,查詢存儲空間,獲取對應(yīng)的紅外指令并發(fā)射。
2系統(tǒng)硬件設(shè)計
2. 1雙DSP處理器及內(nèi)存空間設(shè)計
本設(shè)計使用雙TMS320F2812的DSP進行圖像采集、圖像處理并且實現(xiàn)紅外遙控和網(wǎng)絡(luò)通信等功能。這樣可以滿足并行圖像處理能力和快速響應(yīng)的速度要求,同時兩個DSP擴展了512 K×16位的RAM空間,以滿足圖像處理的空間要求。
為了實現(xiàn)雙DSP之間的通信,系統(tǒng)采用Cypress公司的一款64 K×16位的雙端口RAM芯片CY7C028搭建一個數(shù)據(jù)通道。DSP1把采集到的圖像通過時間控制有規(guī)律寫入數(shù)據(jù)通道中,DSP2從數(shù)據(jù)通道中提取圖像數(shù)據(jù)存放到自己的RAM中,然后進行相關(guān)的圖像處理。在設(shè)計工作狀態(tài)時,使用雙端口中斷判優(yōu)方式,數(shù)據(jù)傳遞采用握手的通信模式。當DSP1向雙端口RAM中寫完數(shù)據(jù)之后,通過中斷握手的方式,通知DSP2讀取數(shù)據(jù)。DSP2要求數(shù)據(jù)時,也會以同樣的方式通知DSP1,從而實現(xiàn)雙DSP高速有規(guī)律地數(shù)據(jù)傳遞。雙端口RAM與兩個DSP之間的硬件連接如圖2所示。
圖2雙端口RAM與雙DSP的硬件連接圖
2. 2圖像采集電路設(shè)計
本系統(tǒng)直接使用DSP1通過外部中斷NMI和INT2,分別同步攝像頭OV7620的VSN和HREF信號,同時通過綁定DSP的8根I /O線同步讀取圖像到DSP內(nèi)存中,從而實現(xiàn)了系統(tǒng)的圖像采集工作。為了讓DSP的時鐘頻率與OV7620的時鐘頻率匹配,必須要降低攝像頭的輸出時鐘頻率。對攝像頭OV7620內(nèi)部的寄存器進行設(shè)置,達到減慢數(shù)據(jù)傳輸速度的目的。OV7620模塊與DSP1的硬件連接和OV7620的同步讀取時序分別如圖3和圖4所示。
圖3藍牙發(fā)送模塊接口電路
圖4 OV7620同步讀取時序圖
通過時序圖可知,DSP先捕獲攝像頭的場中斷信號,準備好存儲一幀圖像的數(shù)組。然后,DSP等待HREF行中斷信號。最后,在行中斷中判斷PCLK信號,當PCLK處于高電平時,DSP讀取該像素值。為了在不丟失手勢特征信息的前提下采集盡量小的圖像,DSP采集視野中間隔行的100×100大小的圖像,存放在100×100的數(shù)組中。通過修改讀取程序可以改變采集圖像的大小。
2. 3內(nèi)存及DSP網(wǎng)絡(luò)通信設(shè)計
本系統(tǒng)采用RTL8019AS與DSP1通過連接對應(yīng)的地址數(shù)據(jù)總線,設(shè)置片選信號,實現(xiàn)DSP的以太網(wǎng)通信。RTL8019AS與DSP1的硬件連接如圖5所示。
RTL8019AS內(nèi)部有兩塊RAM區(qū),一塊16 K字節(jié),地址為0×4000~0×7FFF;一塊32個字節(jié),地址為0×0000~0×001F.RAM按每256字節(jié)為一頁存儲。一般將RAM前12頁(即0×4000~0×4BFF)存儲區(qū)作為發(fā)送緩沖區(qū);后52頁(即0×4C00~0×7FFF)存儲區(qū)作為接收緩沖區(qū)。第0頁只有32字節(jié)(地址為0×0000~0×001F),用于存儲以太網(wǎng)物理地址。要接收和發(fā)送數(shù)據(jù)包就必須通過DMA讀寫RTL8019AS內(nèi)部的16KB RAM.
圖5 RTL8019AS與DSP1硬件連接圖
2. 4紅外遙控模塊電路設(shè)計
紅外遙控模塊包括三個部分:接收部分、發(fā)送部分和數(shù)據(jù)處理部分。接收部分包括光電轉(zhuǎn)換、解調(diào)、高速采樣以及數(shù)據(jù)分析等模塊,發(fā)送部分包括遙控發(fā)送和電光轉(zhuǎn)換模塊,數(shù)據(jù)處理部分包括中央處理以及存儲模塊。
3系統(tǒng)軟件設(shè)計
3. 1手勢圖像預(yù)處理算法
手勢圖像提取算法選擇幀間差分的方法實現(xiàn)手部圖像分割。利用間隔短暫時間的兩幀圖像比較,獲取兩張圖像運動方向的手部圍成的一小段白色區(qū)域,然后采用閾值分割的方法對獲取的圖像二值化,消除噪聲,最后根據(jù)此圖像序列含有的白色像素點的多少來確定圖像序列中有無物體存在。對手勢圖像預(yù)處理的算法描述如下:
1)從視頻圖像序列中選取相鄰n幀的兩幀圖像,其中前一幀圖像為Pk-1( x,y ),如圖6( a)所示,后一幀圖像為Pk( x,y),如圖6( b)所示;
圖6從視頻圖像序列中選取的圖像
2)為了減少計算量,將480×640的圖像隔4行6列提取像素點,左右各忽略20列,上下各忽略40行,獲得兩幀100×100的圖像
和
,如圖7( a)和7( b)所示;
圖7縮小后的圖像
3)計算后一幀與前一幀的差為Gk( x,y),得到目標的變化量,如圖8所示;
圖8兩幅圖像的目標變化量
4)對幀間差分法得到的圖像按選定的閾值進行二值化,得到目標圖像序列的二值化圖像序列Fk( x,y),如圖9所示。其中,
式( 1)中,T為閾值。對于給定視頻序列的圖像,假設(shè)像素點k處沒有運動,其幀差dk服從均值為0,方差為σ2的Gauss分布N( 0,σ2) :
式( 2)中,H0表示無運動假設(shè),σ2是幀差的統(tǒng)計方差,通常認為它等于攝像頭噪聲方差的兩倍。根據(jù)概率統(tǒng)計假設(shè)檢驗“3σ”法則和“正確的閾值T應(yīng)該能消除大部分噪聲”的原則。經(jīng)試驗測試得閾值T選擇在35~45之間比較合適。二值化后的圖像如圖9所示。觀察Fk( x,y)的圖像序列,可以看到圖像中的噪聲很少,這是因為①幀間差分法達到了加大目標信息的權(quán)重,同時抑制了靜態(tài)背景的效果;②攝像頭采集范圍背景比較單一,光線均勻。
Fk( x,y)中主要存在兩大類的噪聲。一種是由于光線變化產(chǎn)生的噪聲,這種噪聲往往以孤立的黑色像素點的形式出現(xiàn)。第二種噪聲是一些面積較小的背景塊。為了盡可能消除這兩種噪聲,可以求每個N×M小塊的灰度平均值,根據(jù)灰度平均值可估計出白色區(qū)域的大小。當灰度平均值小于某一閾值時,可以認為是噪聲,把對應(yīng)的N×M個點賦值為0.算法實現(xiàn)如下:
( 1)建立一個大小是Fk( x,y)的1 /25倍的矩陣來存20×20個5×5像素塊的平均灰度值fk( x,y)。
( 2) fk( x,y)和Hk( x,y)滿足如下關(guān)系:
圖10噪聲消除后的圖像
通過這種處理方法,原圖像中的小塊噪聲和椒鹽噪聲基本被消除,手部圖像邊緣的某些像素點也會被當作噪聲消除,但是不影響后續(xù)處理。經(jīng)過噪聲消除后的圖像如圖10( a)所示。使用同樣的處理算法,可以得到后一幀的圖像處理結(jié)果如圖10( b)所示。
3. 2特征提取及動作識別
獲取只含手部運動區(qū)域的圖像Hk( x,y)和Hk+1( x,y)后,掃描出手部圖像邊界,通過比較與計算判斷手擺放位置和區(qū)域中心位置Pk( xk,yk)和Pk+1( xk+1,yk+1)。手部擺放位置可以判斷手的上下或是左右運動。圖像處理和特征提取流程圖如圖11所示。
( 1) Hk+1( x,y )和Hk( x,y )是相同的縱向擺放位置,手部在左右運動。
( 2)根據(jù)列坐標的大小來判斷手左右方向的移動如下:
判斷上下運動的算法與判斷左右類似。若出現(xiàn)無法判斷的情況,則重新采集圖像,進行處理和判斷,直到能夠判斷方向為止。
圖11圖像處理算法流程圖
3. 3紅外遙控算法原理
本系統(tǒng)選擇最常用的一種編碼方式uPD6121進行學習、解碼和發(fā)射。紅外遙控器的紅外信號一般都是通過38~40kHz的載波調(diào)制而成。先對接收到的紅外信號進行解調(diào),再記錄遙控編碼信號的脈沖寬度。學習子程序的流程圖如圖12所示。采用計數(shù)器對信號高低電平計數(shù)的方法采集數(shù)據(jù)并保存。
發(fā)射模塊根據(jù)DSP2發(fā)送的指令找到對應(yīng)的編碼信號在外擴RAM的位置,將編碼調(diào)入內(nèi)存,然后通過編碼發(fā)送子程序,將編碼調(diào)制在38 kHz載波上發(fā)送出去。用定時中斷0產(chǎn)生38 kHz的載波信號,用學習到的遙控編碼信號的低電平去控制載波輸出,此時定時器0定時長度由相應(yīng)的遙控信號低電平寬度計數(shù)值確定。如果需發(fā)射的遙控信號為高電平,關(guān)定時中斷0;如果為低電平,則開定時中斷0,從而實現(xiàn)遙控信號的脈寬調(diào)制發(fā)射。發(fā)射子程序流程如圖13所示。
圖12學習子程序流程圖
圖13發(fā)射子程序流程圖
3. 4網(wǎng)卡驅(qū)動程序及上位機軟件設(shè)計
3. 4. 1網(wǎng)卡驅(qū)動程序及UDP協(xié)議實現(xiàn)
RTL8019AS已經(jīng)實現(xiàn)以太網(wǎng)通信物理層功能,只需初始化芯片相應(yīng)的寄存器,編寫DSP下驅(qū)動,便可啟動RTL8019AS.本系統(tǒng)采用TCP /IP協(xié)議族中的UDP協(xié)議( user datagram protocol)進行通信,實現(xiàn)通過網(wǎng)絡(luò)把DSP采集到的圖像信息發(fā)送到上位機。
3. 4. 2上位機軟件編寫
上位機軟件采用C#語言編寫,實現(xiàn)UDP通信協(xié)議。上位機軟件實現(xiàn)接收下位機的數(shù)據(jù),還原圖像數(shù)據(jù)并顯示等功能。同時,上位機還可以向下位機發(fā)送命令,方便系統(tǒng)調(diào)試。
3. 4. 3圖像數(shù)據(jù)發(fā)送及還原
下位機采用UDP發(fā)送數(shù)據(jù),把數(shù)據(jù)的每一行作為一個UDP數(shù)據(jù)包,一幅圖像分成100個數(shù)據(jù)包進行發(fā)送。為了讓上位機完整接收一幅圖像,在每幅圖像開始發(fā)送之前,先發(fā)送一個規(guī)定的幀開頭數(shù)據(jù)包,在每一幅圖像發(fā)送完畢之后,也發(fā)送一個規(guī)定幀結(jié)尾數(shù)據(jù)包。上位機根據(jù)這些標定將100個數(shù)據(jù)包利用C#語言的相關(guān)函數(shù),轉(zhuǎn)換一定的圖片格式,在上位機進行顯示。
4系統(tǒng)測試
4. 1測試流程
創(chuàng)建手勢樣本庫、手勢圖像預(yù)處理、特征提取、實時手勢圖像與庫模型預(yù)測、識別結(jié)果、執(zhí)行操作等。
4. 2測試結(jié)果
本設(shè)計自定義手勢及編號如圖14所示,其中手勢1表示開機,手勢2表示關(guān)機、手勢3表示換臺的遞增,手勢4表示換臺的遞減,手勢5表示音量增加,手勢6表示音量減小等功能。
對組裝好硬件電路系統(tǒng)進行整體測試。測試者在攝像頭的拍攝范圍內(nèi)進行上述6種手勢各從左向右、從右向左、從上向下和從下向上10次緩慢運動,在每種手勢40次的識別中識別率如表1所示。
表1識別率
測試結(jié)果表明,本算法識別手勢的準確率在96%左右,遙控的有效范圍在4 m左右,能夠?qū)崿F(xiàn)電視機的頻道更換和音量調(diào)節(jié)功能。
5總結(jié)
本文設(shè)計的手勢識別電視遙控器系統(tǒng),利用攝像頭使手勢動作與電視機進行交互,采用紅外信號遙控電視機,在紅外傳輸有效距離內(nèi),可以根據(jù)個人喜好,任意改變手勢識別樣本庫系統(tǒng),使得電視遙控更加人性化,并為實現(xiàn)家庭數(shù)字設(shè)備操控一體化提供可能。
圖14自定義手勢及編號