摘 要: 在Visual Studio 2010開發(fā)環(huán)境中以C++為編程語言,,使用計(jì)算機(jī)視覺計(jì)算中的開源OpenCV庫處理圖像,判定手勢運(yùn)動(dòng)方向,,構(gòu)造基于視覺手勢識別技術(shù)的智能窗簾系統(tǒng)。通過調(diào)用Windows API函數(shù)實(shí)現(xiàn)PC與LPC2131之間的串口通信,,從而通過控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向來實(shí)現(xiàn)窗簾的打開和關(guān)閉操作,。系統(tǒng)具有人機(jī)交互界面良好,、操作簡單、窗簾的長度可自行設(shè)定等優(yōu)點(diǎn),。
關(guān)鍵詞: 智能窗簾,;計(jì)算機(jī)視覺;手勢識別,;串口通信,;人機(jī)交互
隨著科學(xué)技術(shù)的發(fā)展,人民生活和工作條件的不斷改善,,智能窗簾越來越為人所接受,,在歐美等發(fā)達(dá)國家,智能窗簾已廣泛應(yīng)用,。智能窗簾產(chǎn)品不但實(shí)現(xiàn)了自動(dòng)化和智能化,,而且通過應(yīng)用傳感器和無線電遙控技術(shù)可以降低勞動(dòng)強(qiáng)度,延長產(chǎn)品的使用壽命,?;谝曈X的手勢識別是實(shí)現(xiàn)新一代人機(jī)交互所不可缺少的一項(xiàng)關(guān)鍵技術(shù)。將其應(yīng)用到智能窗簾的研究中,,不僅可以美化家居環(huán)境,,也可以使窗簾的智能化推向一個(gè)新的高度,極大地方便了人們的日常生活,,從而使家居裝飾更具現(xiàn)代化,。
方便與享受的智能窗簾對于現(xiàn)代化快節(jié)奏生活的人們來說,是適應(yīng)現(xiàn)代化辦公和生活環(huán)境的需要,,是人們生活水平提高的一個(gè)標(biāo)志,。據(jù)介紹,智能窗簾根據(jù)操作機(jī)構(gòu)和裝飾效果的不同分為智能開合布簾系列,、智能升降簾系列,、智能天棚簾、智能遮陽棚系列,,具體如百葉簾,、卷簾、羅馬簾,、風(fēng)情簾,、蜂巢簾、垂直簾,、香格里拉簾等,。目前,市場上所出售的智能窗簾大多數(shù)具有可根據(jù)室內(nèi)環(huán)境狀況自動(dòng)調(diào)節(jié)光線強(qiáng)度,、空氣濕度,、平衡室溫等特性,。但是,基于視覺手勢識別技術(shù)的智能窗簾并沒有在市場上出現(xiàn),,也沒有相關(guān)的研究,。因此,我們特地提出了將基于視覺的手勢識別技術(shù)應(yīng)用于智能窗簾研究的想法,,并通過試驗(yàn)取得了良好的成果,。
1 設(shè)計(jì)方案
本系統(tǒng)以ARM7嵌入式芯片LPC2131最小系統(tǒng)為核心。首先,,通過攝像頭獲取手勢圖像,,利用計(jì)算機(jī)將手勢從背景圖片中分離出來,對手勢進(jìn)行建模,、分析,,再進(jìn)行動(dòng)態(tài)識別,從而判斷出手勢的運(yùn)動(dòng)方向,;然后,,計(jì)算機(jī)調(diào)用Windows API 函數(shù)與LPC2131進(jìn)行串口通信[1],將已判定的手勢運(yùn)動(dòng)方向以數(shù)據(jù)方式發(fā)送到LPC2131,;最后,,LPC2131接收到計(jì)算機(jī)發(fā)來的數(shù)據(jù)后進(jìn)行解析,進(jìn)而控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向,,實(shí)現(xiàn)窗簾的打開和關(guān)閉,。系統(tǒng)總體流程如圖1所示。
2 硬件設(shè)計(jì)
本系統(tǒng)的硬件工作流程如圖2所示,。首先,,LPC2131通過UART0與計(jì)算機(jī)進(jìn)行串口通信,接收計(jì)算機(jī)發(fā)送來的數(shù)據(jù),;然后,,LPC2131對接收到的數(shù)據(jù)進(jìn)行分析,判斷出數(shù)據(jù)所表示的手勢運(yùn)動(dòng)方向,;最后,,根據(jù)數(shù)據(jù)分析的結(jié)果控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)方向。
2.1 MAX232工作原理
MAX232包含4個(gè)部分:雙路電荷泵DC-DC電壓轉(zhuǎn)換器,、RS-232驅(qū)動(dòng)器,、RS-232接收器以及接收器與發(fā)射器使能控制輸入。內(nèi)部有兩個(gè)電荷泵,,將+5 V轉(zhuǎn)換為+10 V或-10 V(空載),,為RS-232驅(qū)動(dòng)器提供工作電壓。第一個(gè)轉(zhuǎn)換器利用電容C1將+5 V輸入加倍,得到V+輸出端C3上的+10 V,;第二個(gè)轉(zhuǎn)換器利用電容C2將+10 V轉(zhuǎn)換為V-輸出端C4上的-10 V,。可以從V+和V-輸出端獲取少量的電源功率,,為外部電路供電,但由于V+,、V-未經(jīng)穩(wěn)壓,,所以輸出電壓會隨負(fù)載電流增大而下降。當(dāng)V+,、V-為外部電路提供電流時(shí),,注意不要因?yàn)樗迂?fù)載的原因,使V+,、V-低于輸出電壓最小值的限制,。如果負(fù)載是標(biāo)準(zhǔn)值為5 kΩ的RS-232接收器,且Vcc=+5 V時(shí),,驅(qū)動(dòng)器輸出電壓擺幅的典型值為+8 V~-8 V,。空載時(shí)驅(qū)動(dòng)器輸出電壓范圍是(V+ -1.3 V)~(V- +0.5 V),。
2.2 電平轉(zhuǎn)換電路
由于單片機(jī)使用的是TTL電平,,其低電平“0”小于0.8 V,高電平“1”在2.4 V~5 V之間,,而PC機(jī)與單片機(jī)之間的通信通常使用RS-232接口,,規(guī)定低電平“0”在+5 V~+15 V之間,高電平“1”在-5 V~-15 V之間,,因此不能與TTL電平直接相連,,所以需要用電平轉(zhuǎn)換芯片對電路電平進(jìn)行轉(zhuǎn)換,否則將使TTL電路燒壞,。MAX232內(nèi)含雙路電荷泵電壓轉(zhuǎn)換器C4,、C5、C9,、C10用于升壓或降壓(具體用法參照MAX232芯片使用手冊),,一般為1 μF左右,C7,、C8為去耦電容,,一般大小最好相差100倍。具體電平轉(zhuǎn)換電路如圖3所示,。
3.1 手勢建模
在手勢識別框架中,,手勢模型是一個(gè)最基本的部分。根據(jù)不同的應(yīng)用背景,手勢識別采用的模型會有不同,,而對于不同的手勢模型,,采用的手勢檢測與跟蹤算法、特征提取,、識別技術(shù)也會有差別,。手勢建模主要分為基于表觀的手勢模型與基于三維的手勢模型。
基于表觀的手勢建模是一種二維建模,,從二維平面觀察得到的平面圖像信息來描述手勢的特征,。
基于表觀的手勢模型[2]主要包括基于顏色的模型與基于輪廓的模型兩種。
基于顏色的手勢模型是把手勢圖像看作像素顏色的集合,,通過提取手部顏色的特征來描述手勢,。基于顏色的手勢模型的常用特征是顏色直方圖,。
基于輪廓的手勢模型是把手看作一個(gè)輪廓,,通過提取手部圖像中手的輪廓的幾何特征來描述手勢。
3.2 手勢的檢測與跟蹤
手勢檢測與跟蹤[2]是手勢識別處理流程中最前端的處理部分,,它處理從攝像頭獲取到的手勢序列圖像,,從中檢測和分割手勢對象。如果是動(dòng)態(tài)手勢識別,,還要對手進(jìn)行跟蹤,。
基于運(yùn)動(dòng)信息的方法是假設(shè)在視頻中只有手是運(yùn)動(dòng)物體。其中一種方法是背景減法,。它要求背景靜止不變,,把視頻中的每幀與背景相減,背景相同的部分變?yōu)榱?,不同的部分就認(rèn)為是運(yùn)動(dòng)的物體,,即手。另一種方法是差幀法,,通過當(dāng)前幀與前一幀(前若干幀)相減,,檢測出兩幀之間的差異來確定手部運(yùn)動(dòng)的起始區(qū)域。但是一般相鄰幀之間的手勢運(yùn)動(dòng)幅度不大,,差幀法只能檢測出運(yùn)動(dòng)的輪廓,,一般要以比較低的幀采樣率或者隔若干幀做減法才能正確檢測與分割出運(yùn)動(dòng)的手部。
Dt(x,,y)=It(x,,y)-Ibg(x,y)
3.3 手勢圖像的預(yù)處理
將手勢圖像從RGB空間變換到Y(jié)CbCr空間,,利用YCbCr色彩空間亮度和色度分離的特性,,在一定程度上克服了光照的干擾,然后用最大類間方差法Otsu對Cb和Cr通道的圖像進(jìn)行二值化處理。實(shí)驗(yàn)結(jié)果表明,,與Y通道相比,,Cb和Cr色差通道具有更好的分割效果。
但是用Otsu法得到的手勢分割[3]圖像還存在一定的噪聲,,所以考慮運(yùn)用形態(tài)學(xué)的開運(yùn)算,,先膨脹后腐蝕,從而得到較理想的分割效果,。為了對手的區(qū)域進(jìn)行更好的特征提取,,本文使用灰度投影法來獲取準(zhǔn)確的手勢區(qū)域。具體方法是對經(jīng)過預(yù)處理的二值圖像分別在垂直方向和水平方向采用灰度投影法,,從而得到手勢在X方向和Y方向的坐標(biāo)范圍(x1-x2),(y1-y2),。如圖5所示,,(a)是從實(shí)時(shí)視頻中截取的手的RGB圖像,(b)為(a)對應(yīng)的二值化圖像,,(c)為通過灰度投影確定的準(zhǔn)確的手區(qū)域,。
3.4 手勢特征提取
手勢特征的提取與手勢模型密切相關(guān),不同的手勢模型會有不同的手勢特征,。例如基于模型的手勢模型有手的每個(gè)關(guān)節(jié)的狀態(tài)特征,,基于表觀模型的手勢特征是輪廓特征、位置特征,、膚色特征等,。
靜態(tài)手勢識別和動(dòng)態(tài)手勢識別的特征也不同,靜態(tài)手勢特征只是描述手的靜態(tài)信息,,例如輪廓,、面積等。動(dòng)態(tài)手勢特征是連續(xù)的靜態(tài)特征序列,。
3.5 手勢識別
(1)靜態(tài)手勢識別
靜態(tài)手勢識別的方法有很多,,例如基于規(guī)則的方法、模板匹配的方法等,。
基于規(guī)則的識別方法[4]是最簡單的一種識別方法,。它為手勢之間建立關(guān)系、定義識別規(guī)則,。對于輸入的手勢特征,,按照這些規(guī)則判別即可?;谝?guī)則的方法效率很高,,缺點(diǎn)是這些規(guī)則需要預(yù)先編碼在規(guī)則庫中。
基于模板匹配的方法[4]是采集靜態(tài)手勢作為樣本,提取特征作為模板特征庫,。在識別時(shí)把輸入的手勢特征與模板庫的模板進(jìn)行匹配,。其中比較經(jīng)典的是使用彈性圖匹配(Elastic Graph Matching)方法。
在基于模板的識別方法中比較重要的是定義特征的距離函數(shù),。距離函數(shù)需要根據(jù)特征的特點(diǎn)來選取,。Hausdorff距離是用來度量兩個(gè)集合之間的相似度,它的數(shù)學(xué)定義如下:A和B是兩個(gè)集合,,元素個(gè)數(shù)分別是n和m,。
(2)動(dòng)態(tài)手勢識別
動(dòng)態(tài)手勢是具有時(shí)間和空間變化的,手勢特征量化編碼之后成為時(shí)間上的符號序列,。目前有許多方法可以對時(shí)間序列數(shù)據(jù)進(jìn)行分類,。
圖像處理領(lǐng)域最基本的直方圖技術(shù)在某些情況下用于動(dòng)態(tài)手勢識別是非常有效的。直方圖能反映手勢序列的整體特征,。雖然它丟失了序列的時(shí)間特征,,但是在一些手勢種類少而且運(yùn)動(dòng)軌跡區(qū)別明顯的手勢識別應(yīng)用中,不失為一種好選擇,,它的識別處理效率很高,。
窗簾是家居環(huán)境中必不可少的日常生活用品。在歐洲,,窗簾智能化已經(jīng)成為了時(shí)尚家居的一大標(biāo)志,。基于視覺手勢識別技術(shù)的智能窗簾不僅具有結(jié)構(gòu)簡單,、操作方便等優(yōu)點(diǎn),,而且還能使家居環(huán)境更加美觀,更具現(xiàn)代化,,為人們的日常生活帶來極大方便,。測試表明,本系統(tǒng)具有靈活,、穩(wěn)定和低能環(huán)保的特點(diǎn),,是一種比較理想的研究。因此,,基于視覺手勢識別技術(shù)的智能窗簾在今后會有更加廣闊的發(fā)展前景,,其低能環(huán)保的優(yōu)點(diǎn)定會受到廣大群眾的歡迎。
參考文獻(xiàn)
[1] 周立功,,王祖麟,,陳明計(jì),等.ARM嵌入式系統(tǒng)基礎(chǔ)教程(第2版)[M].北京:北京航空航天大學(xué)出版社,,2008.
[2] 胡友樹.手勢識別技術(shù)綜述[J].中國科技信息,,2005(2):41-42.
[3] 劉俊梅,,阮秋琦.一種復(fù)雜背景下的手勢分割新方法[J].北京電子科技學(xué)院學(xué)報(bào),2006,,14(2):23-26.
[4] 任海兵,,祝遠(yuǎn)新,徐光,,等.基于視覺手勢識別的研究綜述[J].電子學(xué)報(bào),,2000,28(2):118-121.